Nominatim alternative
Open-data geocoding past 1 request a second.
The public Nominatim server is there to power the search box on openstreetmap.org. Its usage policy rules out heavy use, bulk jobs and autocomplete. OpenGeocoding is a hosted API on OpenStreetMap and other open data, built for exactly those workloads.
50,000 free requests a month. No credit card. Commercial use allowed.
Public Nominatim, self-hosted Nominatim and OpenGeocoding
| Topic | Public Nominatim server | Self-hosted Nominatim | OpenGeocoding API |
|---|---|---|---|
| Request rate | An absolute maximum of 1 request per second, summed across all users of your app. | Whatever your servers sustain. | 2 requests/second free, up to 25 on Growth; dedicated capacity on Enterprise. |
| Bulk geocoding | Discouraged. Small one-off jobs only: one thread, one machine, cached results; 4 requests/minute for scripts that run longer than a day or on a schedule. | Allowed; throughput depends on your hardware. | Allowed on every plan, up to your per-second limit and monthly credits. |
| Autocomplete | Forbidden, including client-side implementations on top of search. | Not supported by Nominatim. | A dedicated endpoint that spends no credits; retrieving the chosen suggestion costs one. |
| Commercial use | Moderate end-user traffic is tolerated. Services whose primary function is geocoding must run their own instance. | Yes, under the ODbL for the data. | Allowed on every plan, including Free. |
| Data | OpenStreetMap. | OpenStreetMap, with optional US TIGER house numbers and postcode data. | OpenStreetMap, Overture Maps, OpenAddresses and GeoNames, merged into one index. |
| Infrastructure | Donated servers with very limited capacity, shared with openstreetmap.org search. | For a full planet: 128 GB of RAM or more strongly recommended, at least 1 TB of fast disk and about 2.5 days of import. | None on the hosted API. To self-host, the world index is 16 GB and rebuilds in about 7 min on one machine. |
| Price | Free, within the usage policy. | Your servers and the time to run them. | 50,000 requests/month free; paid plans from $29/month. |
Nominatim facts checked from the Nominatim usage policy, which covers only nominatim.openstreetmap.org and may change without notice, and the Nominatim installation guide. Third-party hosted Nominatim services set their own terms. OpenGeocoding index figures come from the engine's performance report.
Accuracy
Test it on your addresses.
Nominatim was 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: coverage of the corpus is uneven by country.
Send the same representative addresses to both services before you switch. The free plan is enough for that.
Benchmark methodology and limitations →Licences
Same open data obligations.
Results derived from OpenStreetMap stay under the ODbL whichever service returns them, so attribution applies either way. You may cache and store OpenGeocoding results without a deletion deadline, subject to those licences.
Data attributions →Migrating
Swap the URL, keep the workflow.
Nominatim takes GET query strings; OpenGeocoding takes a JSON POST with an API key. Coordinates come
back as numbers in geoCoordinates, and goodMatch tells you when only part of the address matched.
Search, before
curl -G 'https://nominatim.openstreetmap.org/search' \
--data-urlencode 'q=10 Rue de Rivoli, Paris' \
-d format=jsonv2 \
-H 'User-Agent: your-app/1.0' 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://nominatim.openstreetmap.org/reverse' \
-d lat=55.676 -d lon=12.568 -d format=jsonv2 \
-H 'User-Agent: your-app/1.0' 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}' Prefer to run it yourself?
The engine behind the API is source-available. Run it on your own hardware, or start on the hosted API and move later.