How to use Nominatim (OpenStreetMap) — a practical guide

If you're here, you probably want working code in five minutes. That's exactly what this guide does.

Five steps to get started

  1. 1
    GET nominatim.openstreetmap.org/search with the address.
  2. 2
    Send a User-Agent header identifying your project (required).
  3. 3
    Throttle to 1 req/sec.
  4. 4
    For higher traffic — self-host Nominatim in Docker.

Shortest snippet that will actually run

curl -H "User-Agent: my-app/1.0 (me@example.com)" \
  "https://nominatim.openstreetmap.org/search?q=Jerusalem&format=json&limit=1"

Common mistakes (the honest list)

Always cache — a street address doesn't change.
For >1K geocodes/day, self-host with Docker.