MCPcopy Index your code
hub / github.com/osm-search/Nominatim

github.com/osm-search/Nominatim @v5.3.2

repository ↗ · DeepWiki ↗ · release v5.3.2 ↗ · Ask this repo → · + Follow
2,853 symbols 10,837 edges 263 files 930 documented · 33% updated 2d agov5.3.2 · 2026-04-19★ 4,35994 open issues
README

Build Status

Nominatim

Nominatim (from the Latin, 'by name') is a tool to search OpenStreetMap data by name and address (geocoding) and to generate synthetic addresses of OSM points (reverse geocoding). An instance with up-to-date data can be found at https://nominatim.openstreetmap.org. Nominatim is also used as one of the sources for the Search box on the OpenStreetMap home page.

Documentation

The documentation of the latest development version is in the docs/ subdirectory. A HTML version can be found at https://nominatim.org/release-docs/develop/ .

Installation

The latest stable release can be downloaded from https://nominatim.org. There you can also find installation instructions for the release, as well as an extensive Troubleshooting/FAQ section.

Detailed installation instructions for current master can be found at nominatim.org as well.

A quick summary of the necessary steps:

  1. Clone this git repository and download the country grid

    git clone https://github.com/osm-search/Nominatim.git
    wget -O Nominatim/data/country_osm_grid.sql.gz https://nominatim.org/data/country_grid.sql.gz
    
  2. Create a Python virtualenv and install the packages:

    python3 -m venv nominatim-venv
    ./nominatim-venv/bin/pip install packaging/nominatim-{api,db}
    
  3. Create a project directory, get OSM data and import:

    mkdir nominatim-project
    cd nominatim-project
    ../nominatim-venv/bin/nominatim import --osm-file <your planet file> 2>&1 | tee setup.log
    
  4. Start the webserver:

    ./nominatim-venv/bin/pip install uvicorn falcon
    ../nominatim-venv/bin/nominatim serve
    

License

The Python source code is available under a GPL license version 3 or later. The Lua configuration files for osm2pgsql are released under the Apache License, Version 2.0. All other files are under a GPLv2 license.

Contributing

Contributions, bug reports and pull requests are welcome. When reporting a bug, please use one of the issue templates and make sure to provide all the information requested. If you are not sure if you have really found a bug, please ask for help in the forums first (see 'Questions' below).

For details on contributing, have a look at the contribution guide.

Questions and help

If you have questions about search results and the OpenStreetMap data used in the search, use the OSM Forum.

For questions, community help and discussions around the software and your own installation of Nominatim, use the Github discussions forum.

Core symbols most depended-on inside this repo

execute
called by 305
src/nominatim_api/connection.py
get
called by 103
src/nominatim_api/server/asgi_adaptor.py
split
called by 94
src/nominatim_api/search/query.py
keyval
called by 81
src/nominatim_api/utils/json_writer.py
process
called by 76
src/nominatim_api/sql/sqlalchemy_types/geometry.py
get
called by 74
test/python/api/fake_adaptor.py
items
called by 66
src/nominatim_db/data/country_info.py
commit
called by 64
src/nominatim_db/tools/postcodes.py

Shape

Method 1,330
Function 1,150
Class 291
Route 82

Languages

Python100%

Modules by API surface

test/python/tokenizer/test_icu.py78 symbols
test/python/tokenizer/sanitizers/test_clean_postcodes.py76 symbols
test/python/api/test_server_glue_v1.py71 symbols
src/nominatim_api/types.py53 symbols
src/nominatim_db/tokenizer/icu_tokenizer.py49 symbols
test/python/tokenizer/sanitizers/test_delete_tags.py47 symbols
test/python/config/test_config.py45 symbols
src/nominatim_api/sql/sqlalchemy_types/geometry.py45 symbols
test/bdd/conftest.py41 symbols
src/nominatim_api/logging.py41 symbols
test/python/tokenizer/sanitizers/test_tag_analyzer_by_language.py39 symbols
test/python/conftest.py39 symbols

Dependencies from manifests, versioned

PyICU
async-timeout
jinja2
mwparserfromhell
psycopg3.3.0 · 1×
pyYAML5.1 · 1×

For agents

$ claude mcp add Nominatim \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact