Looking up a location given free-form address is one of the most frequent operations on geospatial data. Almost every business needs to recognize and locate customer addresses. At the same time, differences in languages, country-specific address and postcode formats, typos and ambiguous names make it very hard to do it right.
This is why one normally uses a geocoder - a specialized search engine that is designed to return the most relevant location for a given address string.
Nominatim geocoder is a "de-facto" standard in the world of open source geocoding engines. It is developed and maintained by the OpenStreetMap community.
Photon is another popular open-source geocoder with the focus on search-as-you-type suggestions and typos correction. It is developed and maintained by Komoot.
Both geocoders are fine pieces of software, supporting both forward and reverse geocoding and primarily use the OpenStreetMap dataset for address lookups.
|Filtering results||bounding box, county code||bounding box, OSM tag name and value|
|Special phrases (in, near)||yes||no|
|Configurable results ranging||no||location bias|
|Data sources||OpenStreetMap, Wikipedia, US Tiger & Postcodes, UK Postcodes||OpenStreetMap|
|Response formats||GeoJSON, JSON, HTML, XML||GeoJSON|
|Returned data||full, including geometry||basic|
So, which geocoder is the best, Nominatim or Photon? As usual, the answer is - it depends.
Photon excels in search-as-you-type scenarios. It tolerates typos and spelling mistakes. Photon is good for a general, free-form text geocoding. It is relatively lightweight and not very difficult to maintain - setting up your own instance takes from few hours to few days.
Nominatim on another hand has superior structured address search and filtering capabilities. It supports a number of output formats and advanced filters. Nominatim works best in scenarios when you at least roughly know what you're looking for and where. Nominatim comes with significant complexity, hardware requirements, and maintenance overhead. It may take days and weeks to configure your own functional Nominatim instance.
In both cases, you'll need to have expertise and time to set up your own geocoder instance. Alternatively, you can use our managed Photon and Nominatim geocoder instances. We take care of all aspects - configuration, updates, maintenance, availability, and security. We also provide consulting and custom software development. In case you're looking for high-volume batch geocoding or cannot use 3rd party services due to security or privacy regulations, we can also set up a dedicated geocoder instance for you.