GeoDB Cities vs GeoSearch
GeoDB Cities and GeoSearch answer the same question — which places match this name, and what do we know about them — and deliver the answer differently. GeoSearch serves every tier from one origin with one header: no RapidAPI proxy on paid plans, the full dataset on the free tier, and one JSON envelope with cursor pagination on every endpoint. The table below compares the two honestly.
Get a free API keyFeature comparison
| GeoDB Cities | GeoSearch | |
|---|---|---|
| Hosting | Free host direct; paid tiers through the RapidAPI proxy | Direct, one origin |
| Authentication | None on free; X-RapidAPI-Key + x-RapidAPI-Host on paid |
X-API-Key on every tier |
| API style | REST and GraphQL | REST |
| Free tier | 86,400 req/day, 1 req/s, 10 results per page, population ≥ 40,000, monthly refresh | 5,000 requests/month, 2 req/s, full dataset |
| Pagination | offset / limit |
Cursor-based, next_cursor / has_next |
| Beyond cities | Cities, regions, countries | + postal codes, timezones, IP geolocation, boundary GeoJSON |
| Self-hosting | Yes — $200/month Docker licence | Hosted only |
| Paid plans | $20–$120/month (REST and GraphQL priced separately) | $29 / $99 / $299 per month |
Last verified 2026-09-05 against the GeoDB Cities documentation.
When GeoDB Cities is the right choice
- You want volume without an account. The free tier serves 86,400 requests a day with no signup and no API key — GeoSearch Free is 5,000 requests a month and needs a key.
- You prefer GraphQL. GeoDB Cities offers it as a first-class API on every tier; GeoSearch does not offer GraphQL at all.
- Your data must stay inside the network. The self-hosted Docker option at $200/month runs the whole API on your own hardware; GeoSearch is hosted only.
When GeoSearch is the better fit
- No proxy: paid tiers hit one origin with one
X-API-Keyheader, instead of routing through RapidAPI with two. - The full dataset on the free tier — no population ≥ 40,000 floor — and pages larger than 10 results.
- Cursor pagination that stays stable while data changes underneath it, instead of
offset/limit. - Postal codes, timezones, IP geolocation and boundary polygons in the same envelope as cities, regions and countries.
Migrating from GeoDB Cities
The calls below show the free host, the RapidAPI-proxied paid host, and the pagination model — each beside the one GeoSearch call that replaces all three.
# no auth at all; 1 req/s, max 10 results
curl "http://geodb-free-service.wirefreethought.com\
/v1/geo/cities?namePrefix=San%20Fran&limit=5"
curl -H "X-API-Key: YOUR_KEY" \
"https://geosearch.dev/v1/cities\
?name=San+Fran&limit=5"
# pip install git+https://github.com/geosearch-dev/geosearch-python.git
import os
import geosearch
configuration = geosearch.Configuration(
host="https://geosearch.dev")
configuration.api_key['apiKeyAuth'] = \
os.environ["GEOSEARCH_API_KEY"]
with geosearch.ApiClient(configuration) as api_client:
api = geosearch.CitiesApi(api_client)
page = api.list_cities(name="San Fran",
limit=5)
# paid tiers route through the RapidAPI
# proxy and carry two headers
curl "https://wft-geo-db.p.rapidapi.com\
/v1/geo/cities?namePrefix=San%20Fran&limit=5" \
-H 'X-RapidAPI-Key: YOUR_API_KEY' \
-H 'x-RapidAPI-Host: wft-geo-db.p.rapidapi.com'
# the same call on every tier - one
# origin, one header, free or paid
curl -H "X-API-Key: YOUR_KEY" \
"https://geosearch.dev/v1/cities\
?name=San+Fran&limit=5"
api = geosearch.CitiesApi(api_client)
page = api.list_cities(name="San Fran", limit=5)
# offset/limit; the envelope carries links
curl "http://geodb-free-service.wirefreethought.com\
/v1/geo/cities?namePrefix=San%20Fran\
&offset=0&limit=5"
{"links":[{"rel":"next",
"href":"/v1/geo/cities?offset=5&limit=5..."}],
"data":[...],
"metadata":{"currentOffset":0,"totalCount":19}}
curl -H "X-API-Key: YOUR_KEY" \
"https://geosearch.dev/v1/cities\
?name=San+Fran&limit=5"
# next page: send meta.next_cursor back
# as ?cursor= - the cursor stays stable
# while data changes underneath it
page = api.list_cities(name="San Fran", limit=5)
# page.meta.next_cursor, page.meta.has_next
Common questions
Is GeoSearch a drop-in replacement for GeoDB Cities?
No. The envelope is different and so is the pagination — GeoDB returns links, data and metadata with offset paging; GeoSearch returns data and meta with a cursor. The section above shows how the calls map.
Do you offer GraphQL?
No, REST only. If your stack is built around GraphQL, GeoDB Cities is the better fit — that is the honest answer, and it is the same one the table above gives.
Do I need a credit card for the free tier?
No. The free tier is 5,000 requests a month with no card and no trial clock — sign up with an email address and you get a key.
Try it on your own queries
The free tier has every endpoint — search your own city, reverse-geocode your own coordinates, and read the response envelope yourself.