OpenCage alternative

Open-data geocoding, with a free plan you can ship on.

OpenCage and OpenGeocoding are both hosted APIs on open data, and both let you keep what you geocode. The differences are in the free plan, the pricing model, address autocomplete and how each scored on our benchmark.

50,000 free requests a month. No credit card. Commercial use allowed.

OpenCage and OpenGeocoding

TopicOpenCage Geocoding APIOpenGeocoding API
Free usageA free trial of 2,500 requests a day at 1 request/second, for testing only.50,000 requests a month at 2 requests/second. Commercial use allowed. No credit card.
Paid plansDaily quotas, from $50/month for 10,000 a day to $1,000/month for 300,000 a day; one-time plans usable for a year; Enterprise from $2,000/month. Prices include VAT.Monthly allowances: $29 for 300,000 requests, $99 for 1,500,000. Dedicated capacity on Enterprise.
Going overSoft limits, billed on the daily average over the month: a short spike is fine, and you are asked to move up a plan only if you stay above it.Billable calls stop when the monthly credits run out. No overage charges.
Request rate15–40 requests/second on paid plans.5 requests/second on Starter, 25 on Growth.
Storing resultsPermanently, even after you stop being a customer.Permanently, with no deletion deadline.
AutocompleteGeosearch: a separate flat-fee subscription with no free tier. It suggests countries, regions, cities and neighbourhoods, not street addresses.A dedicated endpoint, from countries down to house numbers, that spends no credits; retrieving the chosen suggestion costs one.
Bulk geocodingOne query per request, plus spreadsheet upload in the dashboard (up to 10,000 rows on paid plans).One query per request, up to your per-second limit. A short Python script geocodes a CSV; no spreadsheet upload.
ExtrasAnnotations on each result (timezone, currency, what3words and more), SDKs for 40+ languages, and a no_record option that keeps queries out of logs.Structured address details and a match flag. No annotations, no official SDKs.
DataOpenStreetMap and other open data. OpenCage sponsors Nominatim, libpostal and OpenAddresses.OpenStreetMap, Overture Maps, OpenAddresses and GeoNames, merged into one index.

What a month of geocoding costs

The cheapest OpenCage subscription that covers each of our plan allowances, with traffic spread evenly over a 30-day month.

Requests / monthOpenCageOpenGeocoding
50,000$50 X-Small$0 Free
300,000$50 X-Small$29 Starter
1,500,000$500 Medium$99 Growth

OpenCage: USD monthly list prices including VAT; annual billing and one-time plans are priced differently, and the free trial is excluded because it is for testing only. OpenGeocoding: monthly plan price excluding VAT or sales tax, which assumes you use the whole allowance.

When OpenCage fits better

Pick the right tool.

  • You want extra data on every result, such as timezone, currency or what3words, without a second lookup.
  • Your traffic is spiky. OpenCage bills on the daily average, so a busy day doesn't cut you off; our plans stop billable calls at the monthly allowance.
  • You need a long track record or paperwork: OpenCage has run as an independent business since its 2015 spin-out, and signs HIPAA business associate agreements with paying customers.
  • You'd rather upload a spreadsheet than run a script, or want an official SDK.
  • You geocode villages and small towns in countries without a registry sample. OpenCage passed 66.4% of our 3,240 town cases, against our 58.4%.
  • Your addresses are in places where our data is thin. Check our house-number coverage by country first: it is uneven.

Accuracy

Our benchmark, and its limits.

QueriesOpenCageOpenGeocoding
Full test corpus (29,013)51.3%85.6%
US/Canada subset (1,947)50.8%97.7%

OpenCage still passed 832 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, so a street-level answer fails a house-level case. 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 →

OpenCage 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.

Uruguay: ahead of opencage. OpenGeocoding passed 205 of 206; OpenCage 100.United States: ahead of opencage. OpenGeocoding passed 835 of 850; OpenCage 527.Switzerland: ahead of opencage. OpenGeocoding passed 778 of 780; OpenCage 615.Spain: ahead of opencage. OpenGeocoding passed 1499 of 1544; OpenCage 117.South Korea: ahead of opencage. OpenGeocoding passed 795 of 2794; OpenCage 294.Slovakia: ahead of opencage. OpenGeocoding passed 197 of 200; OpenCage 132.Slovenia: ahead of opencage. OpenGeocoding passed 192 of 192; OpenCage 107.Singapore: ahead of opencage. OpenGeocoding passed 358 of 362; OpenCage 73.Serbia: level with opencage. OpenGeocoding passed 280 of 296; OpenCage 273.Poland: ahead of opencage. OpenGeocoding passed 926 of 927; OpenCage 708.Norway: ahead of opencage. OpenGeocoding passed 1068 of 1071; OpenCage 896.New Zealand: ahead of opencage. OpenGeocoding passed 543 of 545; OpenCage 471.Netherlands: ahead of opencage. OpenGeocoding passed 1026 of 1026; OpenCage 840.Mexico: ahead of opencage. OpenGeocoding passed 94 of 320; OpenCage 4.Luxembourg: ahead of opencage. OpenGeocoding passed 239 of 240; OpenCage 186.Lithuania: ahead of opencage. OpenGeocoding passed 200 of 200; OpenCage 0.Liechtenstein: ahead of opencage. OpenGeocoding passed 131 of 132; OpenCage 120.Latvia: ahead of opencage. OpenGeocoding passed 244 of 244; OpenCage 60.Japan (abr-residences): ahead of opencage. OpenGeocoding passed 506 of 512; OpenCage 0. Japan (mlit-blocks): ahead of opencage. OpenGeocoding passed 362 of 368; OpenCage 0.Italy: ahead of opencage. OpenGeocoding passed 311 of 320; OpenCage 54.Iceland: ahead of opencage. OpenGeocoding passed 305 of 312; OpenCage 80.France: ahead of opencage. OpenGeocoding passed 801 of 808; OpenCage 716.French Polynesia: ahead of opencage. OpenGeocoding passed 119 of 120; OpenCage 0.Finland: ahead of opencage. OpenGeocoding passed 166 of 169; OpenCage 41.Estonia: ahead of opencage. OpenGeocoding passed 240 of 240; OpenCage 27.Greenland: ahead of opencage. OpenGeocoding passed 144 of 144; OpenCage 4.Faroe Islands: opencage ahead. OpenGeocoding passed 116 of 136; OpenCage 133.Denmark: ahead of opencage. OpenGeocoding passed 1878 of 1883; OpenCage 1611.Czechia: ahead of opencage. OpenGeocoding passed 556 of 567; OpenCage 344.Hong Kong SAR China: ahead of opencage. OpenGeocoding passed 233 of 240; OpenCage 0.Canada: ahead of opencage. OpenGeocoding passed 532 of 550; OpenCage 28.Brazil: ahead of opencage. OpenGeocoding passed 310 of 316; OpenCage 5.Belgium: ahead of opencage. OpenGeocoding passed 381 of 384; OpenCage 294.Austria: ahead of opencage. OpenGeocoding passed 156 of 156; OpenCage 132.Australia: ahead of opencage. OpenGeocoding passed 519 of 522; OpenCage 298.Berlin, Germany: ahead of opencage. OpenGeocoding passed 192 of 192; OpenCage 180.Bogotá, Colombia: ahead of opencage. OpenGeocoding passed 564 of 567; OpenCage 9.Faroe Islands: opencage ahead. OpenGeocoding passed 116 of 136; OpenCage 133.French Polynesia: ahead of opencage. OpenGeocoding passed 119 of 120; OpenCage 0.Hong Kong SAR China: ahead of opencage. OpenGeocoding passed 233 of 240; OpenCage 0.Liechtenstein: ahead of opencage. OpenGeocoding passed 131 of 132; OpenCage 120.Luxembourg: ahead of opencage. OpenGeocoding passed 239 of 240; OpenCage 186.Singapore: ahead of opencage. OpenGeocoding passed 358 of 362; OpenCage 73.Tainan, Taiwan: ahead of opencage. OpenGeocoding passed 332 of 350; OpenCage 76.Taipei, Taiwan: ahead of opencage. OpenGeocoding passed 620 of 622; OpenCage 196.
World
Berlin, Germany: ahead of opencage. OpenGeocoding passed 192 of 192; OpenCage 180.Bogotá, Colombia: ahead of opencage. OpenGeocoding passed 564 of 567; OpenCage 9.Faroe Islands: opencage ahead. OpenGeocoding passed 116 of 136; OpenCage 133.French Polynesia: ahead of opencage. OpenGeocoding passed 119 of 120; OpenCage 0.Hong Kong SAR China: ahead of opencage. OpenGeocoding passed 233 of 240; OpenCage 0.Liechtenstein: ahead of opencage. OpenGeocoding passed 131 of 132; OpenCage 120.Luxembourg: ahead of opencage. OpenGeocoding passed 239 of 240; OpenCage 186.Singapore: ahead of opencage. OpenGeocoding passed 358 of 362; OpenCage 73.Tainan, Taiwan: ahead of opencage. OpenGeocoding passed 332 of 350; OpenCage 76.Taipei, Taiwan: ahead of opencage. OpenGeocoding passed 620 of 622; OpenCage 196.
Europe
  • Ahead of OpenCage (38)
  • Level with OpenCage (1)
  • OpenCage ahead (1)
  • No registry sample
Results for all 40 registries
Registry sampleCasesOpenGeocodingOpenCageResult
Australia522519298 Ahead of OpenCage
Austria156156132 Ahead of OpenCage
Belgium384381294 Ahead of OpenCage
Berlin, Germany192192180 Ahead of OpenCage
Bogotá, Colombia5675649 Ahead of OpenCage
Brazil3163105 Ahead of OpenCage
Canada55053228 Ahead of OpenCage
Czechia567556344 Ahead of OpenCage
Denmark188318781611 Ahead of OpenCage
Estonia24024027 Ahead of OpenCage
Faroe Islands136116133 OpenCage ahead
Finland16916641 Ahead of OpenCage
France808801716 Ahead of OpenCage
French Polynesia1201190 Ahead of OpenCage
Greenland1441444 Ahead of OpenCage
Hong Kong SAR China2402330 Ahead of OpenCage
Iceland31230580 Ahead of OpenCage
Italy32031154 Ahead of OpenCage
Japan (abr-residences)5125060 Ahead of OpenCage
Japan (mlit-blocks)3683620 Ahead of OpenCage
Latvia24424460 Ahead of OpenCage
Liechtenstein132131120 Ahead of OpenCage
Lithuania2002000 Ahead of OpenCage
Luxembourg240239186 Ahead of OpenCage
Mexico320944 Ahead of OpenCage
Netherlands10261026840 Ahead of OpenCage
New Zealand545543471 Ahead of OpenCage
Norway10711068896 Ahead of OpenCage
Poland927926708 Ahead of OpenCage
Serbia296280273 Level with OpenCage
Singapore36235873 Ahead of OpenCage
Slovakia200197132 Ahead of OpenCage
Slovenia192192107 Ahead of OpenCage
South Korea2794795294 Ahead of OpenCage
Spain15441499117 Ahead of OpenCage
Switzerland780778615 Ahead of OpenCage
Tainan, Taiwan35033276 Ahead of OpenCage
Taipei, Taiwan622620196 Ahead of OpenCage
United States850835527 Ahead of OpenCage
Uruguay206205100 Ahead of OpenCage

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.

OpenCage takes one GET endpoint for both directions and returns a list of results; OpenGeocoding takes a JSON POST with an API key and returns the best match.

Search, before

OpenCage
curl -G 'https://api.opencagedata.com/geocode/v1/json' \
  --data-urlencode 'q=10 Rue de Rivoli, Paris' \
  -d key=YOUR_OPENCAGE_KEY

Search, after

OpenGeocoding
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

OpenCage
curl -G 'https://api.opencagedata.com/geocode/v1/json' \
  -d q=55.676,12.568 \
  -d key=YOUR_OPENCAGE_KEY

Reverse, after

OpenGeocoding
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}'
OpenCage responseOpenGeocoding search response
results[0].geometry.lat / .lnggeoCoordinates.lat / .lon
results[0].formatteddisplayName
results[0].componentsaddressDetails (road, houseNumber, postcode, city, countryCode…)
total_results: 0an empty object {}

OpenCage facts checked from its pricing page and billing FAQ, API documentation, FAQ and about page. OpenCage may change them at any time. Results derived from either service stay under their open data licences, which require attribution; see our data attributions. OpenCage is a trademark of OpenCage GmbH; OpenGeocoding is not affiliated with OpenCage.

Try it on your own addresses.

Get a key in a minute and compare results side by side before you move any traffic.