Repolode
osm-search

osm-search/Nominatim

Open-source geocoding service that searches OpenStreetMap data by name and address and performs reverse geocoding.

Open-source alternative to:Google Maps Geocoding API

Stars
4,553
Forks
869
Open issues
104
Last commit
4 days ago

What is it?

Nominatim is a tool for searching OpenStreetMap data by name and address, a process called geocoding. It can also run the reverse direction, generating a synthetic address for any OSM point. It is the search backend used for the search box on the OpenStreetMap home page, and a public instance with up-to-date data is available for lookups.

To run your own service, you clone the repository, download a country grid file, install the Python packages for the API and database components, and import an OSM data file such as a planet extract into a project directory. The project then serves the search API through a web server started with the nominatim serve command, using uvicorn and falcon.

The codebase is written mainly in Python, with Lua configuration files for osm2pgsql. Its documentation covers installation, administration and troubleshooting for both stable releases and the development branch.

Key features

  • 01Forward geocoding: search places and addresses by name in OSM data.
  • 02Reverse geocoding: generate an address for a given coordinate.
  • 03Imports OSM data files, including planet extracts, into a local project.
  • 04Serves the search API through a Python web server (uvicorn and falcon).

Use cases

  • Adding address search and autocomplete to a mapping application.
  • Converting coordinates from GPS or logs into human-readable addresses.
  • Running a private geocoder over a regional OSM extract.

Quick start

  1. 1

    Clone the repository

    git clone https://github.com/osm-search/Nominatim.git
  2. 2

    Create a Python virtualenv

    python3 -m venv nominatim-venv
  3. 3

    Install the Nominatim packages into the virtualenv

    ./nominatim-venv/bin/pip install packaging/nominatim-{api,db}
  4. 4

    Create a project directory, then import your OSM data

    nominatim import --osm-file <your planet file> 2>&1 | tee setup.log

Things to know

  • Licensed under GPL-3.0, a copyleft license that requires derivative works to be open source.
  • Running it yourself requires importing a full OSM planet file, which is a substantial self-hosting effort.

Topics

#geocoding#openstreetmap#reverse-geocoding#gis#python#search#osm

FAQ

What is Nominatim?
Open-source geocoding service that searches OpenStreetMap data by name and address and performs reverse geocoding. Nominatim is a tool for searching OpenStreetMap data by name and address, a process called geocoding. It can also run the reverse direction, generating a synthetic address for any OSM point. It is the search backend used for the search box on the OpenStreetMap home page, and a public instance with up-to-date data is available for lookups.
Is Nominatim free to use? What license does it have?
Nominatim is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
Is Nominatim still maintained?
Actively maintained. The last commit to Nominatim was on Nov 3, 2026.
What can I use Nominatim for?
Adding address search and autocomplete to a mapping application. Converting coordinates from GPS or logs into human-readable addresses. Running a private geocoder over a regional OSM extract.
How do I install Nominatim?
Clone the repository: git clone https://github.com/osm-search/Nominatim.git Create a Python virtualenv: python3 -m venv nominatim-venv Install the Nominatim packages into the virtualenv: ./nominatim-venv/bin/pip install packaging/nominatim-{api,db} Create a project directory, then import your OSM data: nominatim import --osm-file <your planet file> 2>&1 | tee setup.log
Where can I get Nominatim?
The source code and installation instructions are on GitHub: https://github.com/osm-search/Nominatim

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects