SMALL API. A WORLD OF CONTEXT.

Who arrives?

A little context for every visitor.

IP address, location, and network information.
One simple request. Right at the edge.

No API keyOpen sourceCloudflare Workers

Meet the request

EXAMPLE RESPONSE
GETwho-arrives-api.fthux.com/
response.json

Know where the hello comes from.

Who Arrives turns a request into useful context — from a visitor’s country and timezone to the network they arrive on. Built on Cloudflare Workers, with no external geolocation lookup.

At the edge

Location and ASN directly from Cloudflare’s request metadata.

Just a request

No signup, no key. JSON responses and browser-ready CORS.

A little more, if needed

Add names, flags, local time, currencies, and more with a query.

01 /

Simple by design.

One endpoint. Start with the basics, then add what you need.

GET /

Get the current caller’s public IP, country or region, city, coordinates, timezone, and ASN.

curl https://who-arrives-api.fthux.com/

GET /?fields=names,flag,time

Enrich the response with readable names, a country flag, and the local time. Basic fields stay unchanged.

curl 'https://who-arrives-api.fthux.com/?fields=names,flag,time'

GET /?fields=all

Bring all eight optional fields into one response.

curl 'https://who-arrives-api.fthux.com/?fields=all'

All available query fields

Set ?fields= to any combination of the eight values below, separated by commas. Values are case-sensitive. Use ?fields=all to include everything; omit fields for the basic response.

names
English names for the country or region and continent.
flag
The country or region’s flag emoji.
ipVersion
The caller’s IP version: IPv4 or IPv6.
time
Current local time and UTC offset for the detected timezone.
capitals
Capital cities of the country or region.
currencies
Currency codes, names, and symbols for the country or region.
languages
Language codes and names for the country or region.
callingCodes
International calling codes for the country or region.

Selected values are added under enrichment. Unavailable values are null; country reference data does not describe an individual’s preferences.

At home in your frontend.

JAVASCRIPT
const response = await fetch(
  'https://who-arrives-api.fthux.com/?fields=names,flag'
);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const visitor = await response.json();
console.log(visitor.countryOrRegion.code);

Calling from a server returns the server’s connection, not your visitor’s. Explore the OpenAPI specification ↗

02 /

No surprises.

A small API with clear boundaries.

Your connection, your context.

Looks up the current caller only. IPv4 and IPv6 are supported; arbitrary IP and batch lookups are not.

Missing means null.

Unavailable values are returned as null. Coordinates are approximate, not a device’s GPS location.

Fresh on every request.

Responses use private, no-store cache headers. The Worker code contains no request logging.

Context, not assumptions.

Languages, currencies, and calling codes describe the country — not an individual visitor’s preferences.

Clear HTTP responses

200
Your request, resolved.
400
Unknown field or unsupported query parameter.
404
Unknown path. Use the root endpoint /.
405
Unsupported method. Use GET, HEAD, or OPTIONS.
03 /

A few good questions.

Do I need an API key?

No. The current API does not require authentication. Send a GET request directly from your browser or application.

Where does the data come from?

IP, location, and network information come from Cloudflare request metadata. Country reference data is bundled from mledoze/countries (ODbL-1.0), with calling codes from Google libphonenumber (Apache-2.0). Time and IP version are computed locally.

Can I run my own instance?

Yes. Clone the source repository, install dependencies, configure your Cloudflare Worker domain, and deploy with Wrangler. The source is licensed under AGPL-3.0-only. Cloudflare geolocation metadata requires a deployed Worker; local results may be simulated.

Are there rate limits or uptime guarantees?

The source does not implement an application-level quota or publish an uptime guarantee. Cloudflare platform and account limits still apply. Deploy your own Worker when you need control over availability and usage.

Every visit starts with a hello.

Give yours a little context.

Make your first request