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
| Topic | OpenCage Geocoding API | OpenGeocoding API |
|---|---|---|
| Free usage | A 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 plans | Daily 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 over | Soft 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 rate | 15–40 requests/second on paid plans. | 5 requests/second on Starter, 25 on Growth. |
| Storing results | Permanently, even after you stop being a customer. | Permanently, with no deletion deadline. |
| Autocomplete | Geosearch: 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 geocoding | One 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. |
| Extras | Annotations 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. |
| Data | OpenStreetMap 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 / month | OpenCage | OpenGeocoding |
|---|---|---|
| 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.
| Queries | OpenCage | OpenGeocoding |
|---|---|---|
| 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
curl -G 'https://api.opencagedata.com/geocode/v1/json' \
--data-urlencode 'q=10 Rue de Rivoli, Paris' \
-d key=YOUR_OPENCAGE_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.opencagedata.com/geocode/v1/json' \
-d q=55.676,12.568 \
-d key=YOUR_OPENCAGE_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}' | OpenCage response | OpenGeocoding search response |
|---|---|
| results[0].geometry.lat / .lng | geoCoordinates.lat / .lon |
| results[0].formatted | displayName |
| results[0].components | addressDetails (road, houseNumber, postcode, city, countryCode…) |
| total_results: 0 | an 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.