Google Maps Geocoding API alternative
Geocode on open data. Keep what you geocode.
Google’s Geocoding API charges per request, limits how long you may keep coordinates, and can’t be used with a non-Google map. OpenGeocoding is a hosted API on open data with flat monthly plans, results you can store, and any map you like.
50,000 free requests a month. No credit card. Commercial use allowed.
Google’s Geocoding API and OpenGeocoding
| Topic | Google Geocoding API | OpenGeocoding API |
|---|---|---|
| Free usage | 10,000 requests a month. A billing account is required. | 50,000 requests a month. No credit card. |
| Paid usage | Per request: $5.00 per 1,000 up to 100,000 a month, with lower rates at higher volume. | Flat monthly plans from $29. No overage charges: calls stop at the allowance. |
| Storing results | Coordinates may be cached for up to 30 days. Longer caching is allowed only per end user, for that user's own features, and not instead of calling the API again. Place IDs can be kept indefinitely. | No contractual limit on storing or reusing results, including permanently and across your users. The open data licences still apply, including attribution and share-alike. |
| Maps | Results may be used without a map, but not with a non-Google map. | No map requirement. Use MapLibre, Leaflet, any other map or none. |
| Bulk geocoding | Results fall under the caching rules above. The terms forbid bulk-downloading geocodes for use outside Google’s services. | Allowed on every plan, up to your per-second limit and monthly credits. |
| Autocomplete | Part of the Places API, billed separately. | A dedicated endpoint that spends no credits; retrieving the chosen suggestion costs one. |
| Data | Google’s proprietary map data, including detailed business listings. | OpenStreetMap, Overture Maps, OpenAddresses and GeoNames, merged into one index. |
What a month of geocoding costs
Forward or reverse geocoding requests at each of our plan allowances, priced at Google’s pay-as-you-go list rates.
| Requests / month | Google Geocoding API | OpenGeocoding |
|---|---|---|
| 50,000 | $200 | $0 Free |
| 300,000 | $1,250 | $29 Starter |
| 1,500,000 | $4,300 | $99 Growth |
Google: USD list prices for the Essentials “Geocoding” SKU, before taxes, negotiated discounts and Maps Platform credits; each volume band is priced at its own rate. Autocomplete and other Places requests are billed separately. OpenGeocoding: monthly plan price, which assumes you use the whole allowance.
When Google fits better
Pick the right tool.
- You need business details such as opening hours, phone numbers, ratings or photos. That is Google’s Places data, and open data doesn’t match it.
- Your app already shows a Google Map, Street View or Google directions.
- Your addresses are in places where open data is thin. Check our house-number coverage by country first: it is uneven.
Accuracy
Test it on your addresses.
Google is not part of our benchmark, so we make no accuracy claim against it. On our test corpus of 11,671 queries, checked against official registries and public reference sources, OpenGeocoding 0.18.0 passed 90.6%. That is not a global accuracy estimate.
Send a representative sample of your own addresses to both services before you switch. The free plan is enough for that.
Benchmark methodology and limitations →Migrating
Swap the request, map the fields.
Google takes GET query strings 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://maps.googleapis.com/maps/api/geocode/json' \
--data-urlencode 'address=10 Rue de Rivoli, Paris' \
-d key=YOUR_GOOGLE_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://maps.googleapis.com/maps/api/geocode/json' \
-d latlng=55.676,12.568 \
-d key=YOUR_GOOGLE_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}' | Google search response | OpenGeocoding search response |
|---|---|
| results[0].geometry.location.lat / .lng | geoCoordinates.lat / .lon |
| results[0].formatted_address | displayName |
| results[0].address_components | addressDetails (road, houseNumber, postcode, city, countryCode…) |
| results[0].partial_match: true | goodMatch: false or omitted |
| status: "ZERO_RESULTS" | an empty object {} |
Google facts checked from the Google Maps Platform price list, the Maps Service Specific Terms (Geocoding API, section 6) and the Google Maps Platform Terms of Service (section 3.2.3). Google may change them at any time, and enterprise agreements can differ. Results derived from OpenGeocoding stay under their data licences, which require attribution. Google Maps is a trademark of Google LLC; OpenGeocoding is not affiliated with Google.
Try it on your own addresses.
Get a key in a minute and compare results side by side before you move any traffic.