Global Geography Data API
Geocoded
Open-source geography API for location, administrative, transport, timezone, currency, and statistics data. No API key required.
Why Geocoded
One surface
many datasets
Use the same query model across reference data, administrative geography, transport, and statistics.
Public by default
No signup and no API key. Clean JSON for apps, scripts, dashboards, and internal tools.
Root collections
Countries, states, cities, timezones, currencies, airports, ports, and more as first-class APIs.
Query what you need
Use `filter[...]`, `fields`, `expand`, pagination, search, and sorting without changing endpoints.
Edge cached
Cloudflare Workers and D1 keep reads fast, cacheable, and close to the caller.
Quick Start
Simple endpoints
zero config
Every response is JSON with aggressive cache headers. Try these from your terminal right now.
Caller location
GETRequest
curl 'https://api.geocoded.me/v2?fields=ip,country,countryInfo.name'
Response
{ "ip": "203.0.113.42", "country": "AE", "countryInfo": { "name": "United Arab Emirates" } }
Filter countries
GETRequest
curl 'https://api.geocoded.me/v2/countries?filter[country]=AE&fields=id,iso2,name,currency'
Response
{ "data": [ { "id": "AE", "iso2": "AE", "name": "United Arab Emirates", "currency": "AED" } ], "meta": { "limit": 25, "offset": 0, "total": 1 } }
Expand statistics
GETRequest
curl 'https://api.geocoded.me/v2/countries?filter[country]=AE&expand=statistics&fields=*,statistics.gdpPerCapitaCurrentUsd'
Response
{ "data": [ { "id": "AE", "name": "United Arab Emirates", "currency": "AED", "statistics": { "gdpPerCapitaCurrentUsd": { "year": 2024, "value": 53700 } } } ], "meta": { ... } }
List cities
GETRequest
curl 'https://api.geocoded.me/v2/cities?filter[country]=AE&fields=id,name,countryCode,stateCode&limit=2'
Response
{ "data": [ { "id": "292968", "name": "Abu Dhabi", "countryCode": "AE", "stateCode": "AZ" } ], "meta": { ... } }