Nominatim is a geocoding and reverse geocoding tool that searches OpenStreetMap data by name and address. It solves the problem of finding locations and generating addresses from coordinates by indexing OSM data and exposing search capabilities through a web API. The tool imports OpenStreetMap planet files into a PostgreSQL database, then serves forward geocoding queries (address to coordinates) and reverse geocoding queries (coordinates to address) through a REST interface.
Nominatim suits projects that need to integrate location search powered by community-maintained OpenStreetMap data rather than proprietary mapping services. It works well for self-hosted deployments where you control the data freshness and query volume, and for applications that can tolerate the setup overhead of importing and maintaining a full OSM database. The tool is production-grade, with an instance maintained at the official OpenStreetMap project providing up-to-date search results.
Adopters should expect a multi-step setup process: cloning the repository, creating a Python virtual environment, downloading OSM data (which can be large), importing it into PostgreSQL, and running the web server. The project provides installation instructions, troubleshooting documentation, and a FAQ. Contributions are welcomed through pull requests and issue reports, with community support available through the OSM Forum for data-related questions and GitHub Discussions for software and deployment questions.
Development activity shows consistent maintenance with structured contribution processes including issue templates and a contribution guide. The codebase is split across multiple license types reflecting its modular architecture, with Python source code under GPL, Lua configuration under Apache License, and other components under GPLv2. Documentation is actively maintained alongside the development version, with both stable release and development branch documentation available.