Reverse Geocoding & City Search API
Fast city-level geocoding for 171,000 places worldwide: reverse geocoding (coordinates to nearest town, region, country and time zone), place search by name and nearby places within a radius. No rate-limited upstream.
Authentication & base URL
Subscribe through one of our marketplace listings; your marketplace API key and base URL are shown there. All endpoints return JSON over HTTPS, served from a global edge network (typically 20–150 ms).
Endpoints
GET /v1/geo/reverse
Reverse geocode coordinates
| Parameter | In | Description | Example |
|---|---|---|---|
lat * | query | Latitude | 40.4168 |
lon * | query | Longitude | -3.7038 |
minPopulation | query | Only places with at least this population | 0 |
GET /v1/geo/search
Search places by name
| Parameter | In | Description | Example |
|---|---|---|---|
q * | query | City or town name | Salamanca |
country | query | Optional ISO country code filter | |
limit | query | 1-50 | 10 |
GET /v1/geo/nearby
Places within a radius
| Parameter | In | Description | Example |
|---|---|---|---|
lat * | query | Latitude | 40.97 |
lon * | query | Longitude | -5.66 |
radius | query | Radius in km (max 500) | 25 |
minPopulation | query | Minimum population | 1000 |
limit | query | 1-100 | 20 |
Example
GET /v1/geo/reverse?lat=40.4168&lon=-3.7038&minPopulation=0
{
"query": {
"lat": 40.4168,
"lon": -3.7038
},
"nearest": {
"geonameId": 6545083,
"name": "Sol",
"latitude": 40.4166,
"longitude": -3.7033,
"countryCode": "ES",
"country": "Spain",
"region": "Madrid",
"population": 8164,
"timezone": "Europe/Madrid",
"type": "neighborhood",
"distanceKm": 0.05
},
"nearestMajorCity": {
"geonameId": 3117735,
"name": "Madrid",
"latitude": 40.4165,
"longitude": -3.7026,
"countryCode": "ES",
"country": "Spain",
"region": "Madrid",
"population": 3255944,
"timezone": "Europe/Madrid",
"type": "capital",
"distanceKm": 0.11
},
"alternatives": [
{
"geonameId": 3117735,
"name": "Madrid",
"latitude": 40.4165,
"longitude": -3.7026,
"countryCode": "ES",
"country": "Spain",
"region": "Madrid",
"population": 3255944,
"timezone": "Europe/Madrid",
"type": "capital",
"distanceKm": 0.11
},
{
"geonameId": 6544494,
"name": "Madrid Centro",
"latitude": 40.4183,
"longitude": -3.7027,
"countryCode": "ES",
"country": "Spain",
"region": "Madrid",
"population": 149718,
"timezone": "Europe/Madrid",
"type": "neighborhood",
"distanceKm": 0.19
},
{
"geonameId": 6545082,
"name": "Las Cortes",
"latitude": 40.4161,
"longitude": -3.6967,
"countryCode": "ES",
"country": "Spain",
"region": "Madrid",
"population": 10816,
"timezone": "Europe/Madrid",
"type": "neighborhood",
"distanceKm": 0.61
…Fast city-level geocoding for 171,000 places worldwide: reverse geocoding (coordinates to nearest town, region, country and time zone), place search by name and nearby places within a radius. No rate-limited upstream.
Use cases
Showing "you are near X" in apps, tagging photos and GPS tracks with place names, delivery and logistics, analytics enrichment, city pickers and autocomplete, weather and travel apps.
Why this API
- Fast: global edge network, answers in milliseconds, no rate limits from upstream providers.
- 171,000 populated places (every town with 1,000+ inhabitants) with region names and IANA time zones.
- Place data © GeoNames (CC BY 4.0).
- Fair pricing: Free plan 500 requests/month, Pro 25,000 for $4.99, Ultra 150,000 for $14.99.
Support
Questions or a feature you need? Open a thread in the Discussions tab.
Pricing
Free plan with 500 calls per month, then Pro (25,000 calls for $4.99/month) and Ultra (150,000 calls for $14.99/month). See all plans.