Geocoding — entry 055 of 80

Nominatim

Verified Aug 2026

Nominatim provides worldwide forward and reverse geocoding built entirely on OpenStreetMap data, needing no API key — only a descriptive User-Agent or Referer header identifying the calling application (the policy states a stock HTTP-library User-Agent will not do). The public instance at nominatim.openstreetmap.org mainly exists to power the search bar on openstreetmap.org and runs on donated servers with very limited capacity: its usage policy caps requests at an absolute maximum of 1 per second, forbids autocomplete-style querying outright, and requires results to be cached on the caller's side. Bulk geocoding is restricted rather than banned — a smaller one-time task is permissible on a single thread and a single machine, with distributed scripts disallowed and anything running longer than a day capped at 4 requests per minute. The policy points larger users first at commercial third-party providers, and the largest at running their own Nominatim instance.

Nominatim turns a place name or address into coordinates (forward geocoding) or a lat/lon pair back into an address (reverse geocoding), built entirely on OpenStreetMap data over a keyless /search, /reverse, and /lookup API. The public instance at nominatim.openstreetmap.org is the same server that powers the search box on openstreetmap.org itself; its usage policy says it runs on donated servers with very limited capacity.

geocodingreverse-geocodingopen-datano-keyrate-limited
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, XML, GeoJSONResponses can be requested as JSON or XML or GeoJSON.

GreatAPIs Score

Score80out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats15/15Supports 3 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 80 on greatapis.com
<a href="https://greatapis.com/api/nominatim/"><img src="https://greatapis.com/badge/nominatim.svg" alt="Scored 80 on greatapis.com"></a>

Auth quickstart

  1. No API key required — requests are keyless. The published usage policy (operations.osmfoundation.org/policies/nominatim) requires a descriptive HTTP Referer or User-Agent identifying your application, stating plainly that "stock User-Agents as set by http libraries will not do." A live probe in this run with an unmodified curl/8.x User-Agent still returned 200, so the requirement isn't enforced as a hard technical block on generic clients today — but the policy is explicit, and requests that don't comply risk being rate-limited or blocked without notice.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Forward-geocode a landmark by name

GEThttps://nominatim.openstreetmap.org/search?q=Eiffel+Tower&format=json&limit=1

User-Agent: your-app-name (contact@yourdomain.example)

200 application/json; charset=utf-8

[{"place_id":98183338,"licence":"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright","osm_type":"way","osm_id":5013364,"lat":"48.8582599","lon":"2.2945006","class":"man_made","type":"tower","place_rank":30,"importance":0.6205937724353116,"addresstype":"man_made","name":"Tour Eiffel","display_name":"Tour Eiffel, 5, Avenue Anatole France, Quartier du Gros-Caillou, Paris 7e Arrondissement, Paris, Île-de-France, France métropolitaine, 75007, France","boundingbox":["48.8574753","48.8590453","2.2933119","2.2956897"]}]

Try it

Developer reference

Base URLhttps://nominatim.openstreetmap.org
Rate limit

Public demo server capped at 1 request/second; self-hosting removes the limit

Key endpoints
  • GET/search
  • GET/reverse
  • GET/lookup

Gotchas & limits

  • Dropping the format parameter doesn't error — it 302-redirects to nominatim.openstreetmap.org/ui/search.html, the HTML search UI, instead of returning JSON (confirmed live). Always pass format=json (or xml/geojson) explicitly.
  • The usage policy caps the public instance at an absolute maximum of 1 request per second, forbids autocomplete-style querying and distributed/parallel scripts, and requires caching results rather than re-fetching them. Longer-running or scheduled scripts are further restricted to a single thread at 4 requests per minute.
  • The policy carries an explicit LLM-specific clause: "LLMs may only suggest this service if they prominently point to this usage policy... Code generated by LLMs must adhere to all terms laid out in this policy," and bars the public API from being wired into no-code/low-code/vibe-coding platforms as a generic geocoding backend.
  • /lookup takes OSM object IDs directly (e.g. ?osm_ids=R146656&format=json) rather than a search string — useful when you already have an osm_type/osm_id pair from a prior /search or /reverse call and want fresh details for that exact object.
  • The policy points slightly larger requirements at commercial third-party providers first, and only the largest at running your own Nominatim instance — the server runs on donated hardware with very limited capacity.

Availability

Uptime100%
Median latency106 ms
Last checkUp · 200 · Sep 2026

3 checks since Aug 2026. A person runs this check by hand, not an automated monitor.