Geocoding — entry 055 of 80

Nominatim

Verified Jul 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 public instance at nominatim.openstreetmap.org is a free courtesy service, not a commercial product: its usage policy caps requests at 1 per second, forbids autocomplete-style querying and bulk/parallel scripts, and requires caching results rather than re-fetching them. Heavier users are expected to self-host Nominatim against their own OSM extract instead of relying on the shared 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, offered as a courtesy rather than a commercial product.

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.
  • Heavier or commercial use is expected to self-host Nominatim against your own OSM extract rather than lean on the shared public instance — the policy exists precisely because the server runs on donated hardware with limited capacity.