What GeoDB Cities does and who it is for

GeoDB Cities provides structured geographic reference data — cities, administrative divisions, regions, countries, and islands — through a clean REST API. With a dataset of over 800,000 places sourced from GeoNames and WikiData (and refreshed periodically), it covers virtually every populated locality on the planet.

The API targets developers building anything that needs a geographic component: address or location forms, travel and booking applications, logistics dashboards, user-profile region selectors, or maps with place details. Because the data goes beyond simple name/coordinate pairs to include population, elevation, time zone, and current local time, it's also useful for analytics and data-enrichment pipelines.

A GraphQL variant exists separately on RapidAPI if you prefer that query model, but this article focuses on the REST version.

Endpoint walkthrough

The 36 endpoints divide naturally into three groups: geo (place data), locale (supporting reference data), and distance/time helpers.

Geo endpoints

The /v1/geo/places and /v1/geo/cities families are the core of the API. Both support filtering by name prefix, country, bounding location, time zone, and minimum population — making them ideal for autocomplete scenarios where you want to narrow a list as the user types. Each place returned includes GPS coordinates, time zone, population, and elevation.

The nearbyPlaces, nearbyCities, and nearbyDivisions endpoints accept a locationId or an entity ID and return results sorted by proximity. This is the right tool for "find cities near me" features driven by a device's GPS coordinates.

Admin division endpoints (/v1/geo/adminDivisions) cover counties, states, provinces, and equivalent structures. Combined with /v1/geo/countries/{countryId}/regions and the follow-up /regions/{regionCode}/cities, you can build a cascading country → region → city selector entirely through this API without maintaining any local lookup tables.

The locatedIn endpoints (/v1/geo/cities/{cityId}/locatedIn, /v1/geo/places/{placeId}/locatedIn) answer the reverse question: given a place, what larger administrative entity contains it? That's useful for geocoding enrichment when you have a city but need the region or country.

Time and distance helpers

Several endpoints deal with time: City Date-Time, City Time, Time-Zone Date-Time, and Time-Zone Time. These incorporate daylight saving adjustments, so you get the current local time rather than a raw UTC offset — a genuine convenience that saves a separate call to a time-zone library.

The City Distance and Place Distance endpoints return the distance between two places, removing the need to compute haversine calculations client-side.

Locale reference endpoints

The /v1/locale/ group covers currencies, languages, locales, and time zones. These are reference lists useful for populating dropdowns or validating inputs. GET /v1/geo/countries?currencyCode=EUR, combined with the /v1/locale/currencies list, lets you filter countries by the currency they use — handy for fintech or e-commerce region logic.

Multilingual output

Results can be displayed in English, Spanish, Portuguese, Italian, French, German, Russian, and Ukrainian. Setting the language parameter on any place query returns localized place names, which matters for consumer-facing apps with an international audience.

HATEOAS paging

All list endpoints return HATEOAS-style links for paging, which means the response body includes next and prev links rather than requiring you to calculate offsets manually. This is a small but developer-friendly detail that reduces integration boilerplate.

Pricing breakdown

GeoDB Cities uses a freemium model with four tiers.

Plan Price / month Daily requests Rate limit Overage
BASIC $0 1,000 1 req/sec
PRO (recommended) $20 30,000 10 req/sec $0.0001/req
ULTRA $40 60,000 20 req/sec
MEGA $80 100,000 40 req/sec

The BASIC tier's 1,000 daily requests is generous enough for development and light-traffic tools, but the 1 request/second ceiling will cause problems the moment you add any server-side autocomplete logic — a user typing in a text field can easily fire 5–10 requests in a few seconds. Plan for PRO if autocomplete is a core feature.

PRO at $20/month is the only plan that explicitly offers overage billing at $0.0001 per request, which means you won't hit a hard ceiling if traffic spikes. At that price, 10,000 extra requests costs $1 — a reasonable safety net. ULTRA and MEGA do not mention overage, so exceeding those daily limits likely results in request blocking rather than additional charges; verify this before going to production.

The average latency of 111 ms and a 96% success rate are reasonable for a globally distributed dataset. For latency-sensitive autocomplete, consider client-side debouncing (300–500 ms) to reduce call volume and smooth over any tail latency.

Practical use cases

  • Place autocomplete: Filter /v1/geo/places by namePrefix as the user types, scoped to a country if needed. The API's tutorial covers this pattern with Angular specifically.
  • Cascading region/city selectors: Chain GET /v1/geo/countries/regions/regions/{code}/cities to build dependent dropdowns without local data.
  • Reverse-geolocation enrichment: Use a device GPS coordinate with nearbyPlaces to resolve the nearest named locality, then locatedIn to climb the administrative hierarchy.
  • Time zone display: Retrieve the current local time for any city using City Date-Time, DST-adjusted, without a separate time-zone service.
  • WikiData integration: The API surfaces WikiData IDs for places, enabling exotic enrichment like fetching tourist attractions or notable facts — though that requires additional WikiData queries on your end.
  • Currency-based country filtering: Useful for payment flows where you need to show only countries that support a given currency.

Limitations and things to check before integrating

  • BASIC rate limit: One request per second is a real constraint. Any interactive UI feature will need debouncing or a move to PRO.
  • Dataset scope: Over 800,000 entries is large, but very small settlements may be absent. For applications needing exhaustive coverage of rural areas, validate against your target geographies during evaluation.
  • No write endpoints: GeoDB Cities is read-only reference data. If you need to store user-created places, that's your responsibility.
  • Data freshness: The dataset is refreshed periodically from GeoNames and WikiData, not in real time. Population figures and place names reflect the last refresh cycle.
  • Self-hosting option: The provider mentions a self-hosted option for organizations needing internal deployment — contact them through the dev portal for details. Worth asking about if data residency or SLA requirements are strict.
  • Data license: The underlying data is Creative Commons Attribution 3.0. If you display this data publicly, check whether your use case requires attribution.

Getting started

Subscribe through RapidAPI (the API has nearly 50,000 marketplace subscribers). The BASIC plan requires no payment details, making it straightforward to start experimenting. The REST API docs are hosted at wirefreethought.github.io/geodb-rest-api-docs and the dev portal at geodb-cities-api.wirefreethought.com includes tutorials, including a step-by-step autocomplete implementation. Issue tracking is public on GitHub, which is a positive sign for transparency around bugs and feature requests.

For a typical getting-started workflow: call GET /v1/geo/countries to confirm authentication is working, then experiment with GET /v1/geo/cities?namePrefix=Lon&countryIds=GB&limit=5 to see autocomplete-style filtering in action.