Geoapify alternative
Geocoding on open data, billed by the month.
Geoapify is a location platform: geocoding, routing, places and maps on open data, with daily credit quotas. OpenGeocoding does geocoding only, with monthly allowances and autocomplete that spends no credits.
50,000 free requests a month. No credit card. Commercial use allowed.
Geoapify and OpenGeocoding
| Topic | Geoapify Geocoding API | OpenGeocoding API |
|---|---|---|
| Free usage | 3,000 credits a day (one per geocoding request) at 5 requests/second. Production and commercial use allowed with a "Powered by Geoapify" link. | 50,000 requests a month at 2 requests/second. Commercial use allowed. No credit card. Open-data attribution only. |
| Paid plans | Daily credit quotas, from $59/month for 10,000 a day to $609/month for 250,000 a day; Custom plans with unmetered requests from $860/month. Prices exclude taxes. | Monthly allowances: $29 for 300,000 requests, $99 for 1,500,000. Dedicated capacity on Enterprise. |
| Going over | Soft limits: if you keep going over the daily quota, Geoapify asks you to upgrade. | Billable calls stop when the monthly credits run out. No overage charges. |
| Request rate | 12–30 requests/second on paid plans. | 5 requests/second on Starter, 25 on Growth. |
| Storing results | Allowed, as long as the data-source attribution stays with stored results. | Permanently, with no deletion deadline, under the same open data licences. |
| Autocomplete | Address Autocomplete API, one credit per request. | A dedicated endpoint that spends no credits; retrieving the chosen suggestion costs one. |
| Bulk geocoding | An asynchronous batch API that counts each address as 0.5 credit. | One query per request, up to your per-second limit. A short Python script geocodes a CSV. |
| Beyond geocoding | Routing, isochrones, places, boundaries and map tiles on the same credits. | Geocoding only: search, reverse, autocomplete and regions, plus an MCP server for AI assistants. |
| SLA | 99.5% monthly availability on every paid plan, with discounts below it. | On Enterprise plans. |
| Data | OpenStreetMap, OpenAddresses, Who's on First, GeoNames, Wikipedia and more. | OpenStreetMap, Overture Maps, OpenAddresses and GeoNames, merged into one index. |
What a month of geocoding costs
The cheapest Geoapify plan that covers each of our plan allowances with single requests, with traffic spread evenly over a 30-day month.
| Requests / month | Geoapify | OpenGeocoding |
|---|---|---|
| 50,000 | $0 Free | $0 Free |
| 300,000 | $59 API 10 | $29 Starter |
| 1,500,000 | $179 API 50 | $99 Growth |
Geoapify: USD monthly list prices excluding taxes. Batch requests count half a credit, so a bulk job needs about half the quota. OpenGeocoding: monthly plan price excluding VAT or sales tax, which assumes you use the whole allowance.
When Geoapify fits better
Pick the right tool.
- You need more than geocoding. Routing, isochrones, places and map tiles from one provider, on one bill, are things we don't offer.
- Your free usage is larger than ours: about 90,000 geocoding requests a month, in production, against our 50,000, if you can show their attribution link.
- Your addresses are in Asia, outside the few places with a registry sample below. On 151 street and house cases there, Geoapify passed 61 against our 43. More generally, check our house-number coverage by country: it is uneven.
- You geocode villages and small towns in countries without a registry sample. Geoapify passed 68.4% of our 3,240 town cases, against our 58.4%.
- You run large batch jobs. Geoapify's batch API halves the credit cost, and its entry paid plan allows 12 requests/second against 5 on our Starter plan.
- You want an SLA on a self-serve plan.
Accuracy
Our benchmark, and its limits.
| Queries | Geoapify | OpenGeocoding |
|---|---|---|
| Full test corpus (29,013) | 70.5% | 85.6% |
| US/Canada subset (1,947) | 81.0% | 97.7% |
Geoapify passed 1,171 test-corpus cases that OpenGeocoding 1.7.0 failed. A pass needs the expected country, a location within the case's tolerance and the expected precision. We ran this benchmark on our own corpus, whose sources overlap our index: read it as a diagnostic, not a ranking, and test both services on your own addresses.
Benchmark methodology and limitations →Geoapify and OpenGeocoding, registry by registry
Each coloured country has a sample of addresses from its official register, and each dot a register for one city. Both services got the same queries. A country counts as ahead or behind only where a sign test on the cases just one side passed gives p < 0.05; anything closer is level.
- Ahead of Geoapify (36)
- Level with Geoapify (3)
- Geoapify ahead (1)
- No registry sample
Results for all 40 registries
| Registry sample | Cases | OpenGeocoding | Geoapify | Result |
|---|---|---|---|---|
| Australia | 522 | 519 | 486 | Ahead of Geoapify |
| Austria | 156 | 156 | 153 | Level with Geoapify |
| Belgium | 384 | 381 | 365 | Ahead of Geoapify |
| Berlin, Germany | 192 | 192 | 187 | Level with Geoapify |
| Bogotá, Colombia | 567 | 564 | 273 | Ahead of Geoapify |
| Brazil | 316 | 310 | 251 | Ahead of Geoapify |
| Canada | 550 | 532 | 376 | Ahead of Geoapify |
| Czechia | 567 | 556 | 480 | Ahead of Geoapify |
| Denmark | 1883 | 1878 | 1760 | Ahead of Geoapify |
| Estonia | 240 | 240 | 102 | Ahead of Geoapify |
| Faroe Islands | 136 | 116 | 134 | Geoapify ahead |
| Finland | 169 | 166 | 145 | Ahead of Geoapify |
| France | 808 | 801 | 754 | Ahead of Geoapify |
| French Polynesia | 120 | 119 | 101 | Ahead of Geoapify |
| Greenland | 144 | 144 | 0 | Ahead of Geoapify |
| Hong Kong SAR China | 240 | 233 | 113 | Ahead of Geoapify |
| Iceland | 312 | 305 | 149 | Ahead of Geoapify |
| Italy | 320 | 311 | 177 | Ahead of Geoapify |
| Japan (abr-residences) | 512 | 506 | 0 | Ahead of Geoapify |
| Japan (mlit-blocks) | 368 | 362 | 1 | Ahead of Geoapify |
| Latvia | 244 | 244 | 161 | Ahead of Geoapify |
| Liechtenstein | 132 | 131 | 129 | Level with Geoapify |
| Lithuania | 200 | 200 | 52 | Ahead of Geoapify |
| Luxembourg | 240 | 239 | 213 | Ahead of Geoapify |
| Mexico | 320 | 94 | 53 | Ahead of Geoapify |
| Netherlands | 1026 | 1026 | 981 | Ahead of Geoapify |
| New Zealand | 545 | 543 | 484 | Ahead of Geoapify |
| Norway | 1071 | 1068 | 1024 | Ahead of Geoapify |
| Poland | 927 | 926 | 720 | Ahead of Geoapify |
| Serbia | 296 | 280 | 247 | Ahead of Geoapify |
| Singapore | 362 | 358 | 211 | Ahead of Geoapify |
| Slovakia | 200 | 197 | 172 | Ahead of Geoapify |
| Slovenia | 192 | 192 | 168 | Ahead of Geoapify |
| South Korea | 2794 | 795 | 677 | Ahead of Geoapify |
| Spain | 1544 | 1499 | 1052 | Ahead of Geoapify |
| Switzerland | 780 | 778 | 732 | Ahead of Geoapify |
| Tainan, Taiwan | 350 | 332 | 241 | Ahead of Geoapify |
| Taipei, Taiwan | 622 | 620 | 574 | Ahead of Geoapify |
| United States | 850 | 835 | 709 | Ahead of Geoapify |
| Uruguay | 206 | 205 | 138 | Ahead of Geoapify |
OpenGeocoding 1.7.0. These registers are also data sources for the OpenGeocoding index, which is part of why it passes them. The samples are not nationally representative, a city register does not speak for its country, and most locations are asked in more than one form, so the p-values are optimistic. Greenland's cases come from the same building references the index reads, which providers do not carry, so its result is not a comparison. Read the scorecard and the per-registry data.
Migrating
Swap the request, map the fields.
Geoapify takes GET query strings and, with format=json,
returns a list of results; OpenGeocoding takes a JSON POST with an API key and returns the best match.
Geoapify biases searches toward the caller's country by IP unless told otherwise; OpenGeocoding does
not, so include the country in the address.
Search, before
curl -G 'https://api.geoapify.com/v1/geocode/search' \
--data-urlencode 'text=10 Rue de Rivoli, Paris' \
-d format=json -d apiKey=YOUR_GEOAPIFY_KEY Search, after
curl 'https://api.opengeocoding.com/v1/search' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"addressString": "10 Rue de Rivoli, Paris"}' Reverse, before
curl -G 'https://api.geoapify.com/v1/geocode/reverse' \
-d lat=55.676 -d lon=12.568 \
-d format=json -d apiKey=YOUR_GEOAPIFY_KEY Reverse, after
curl 'https://api.opengeocoding.com/v1/reverse' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"lat": 55.676, "lon": 12.568}' | Geoapify response | OpenGeocoding search response |
|---|---|
| results[0].lat / .lon | geoCoordinates.lat / .lon |
| results[0].formatted | displayName |
| results[0].housenumber, .street, .postcode, .city, .country_code | addressDetails.houseNumber, .road, .postcode, .city, .countryCode |
| results: [] | an empty object {} |
Geoapify facts checked from its pricing page, pricing details, Geocoding API page and terms and conditions. Geoapify may change them at any time. Results derived from either service stay under their open data licences, which require attribution; see our data attributions. Geoapify is a trademark of its owner; OpenGeocoding is not affiliated with Geoapify.
Try it on your own addresses.
Get a key in a minute and compare results side by side before you move any traffic.