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.
  • 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
Matched test corpus (11,671)64.4%90.6%
US/Canada subset (1,945)50.8%97.0%

OpenCage still passed 234 test-corpus cases that OpenGeocoding 0.18.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 →

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.