From OpenStreetMap Wiki
Jump to navigation Jump to search

Geocoding is the process of taking input text, such as an address or the name of a place, and returning a latitude/longitude location on the Earth's surface for that place. Reverse geocoding, on the other hand, is the opposite: returning a list of places near a given latitude/longitude point.[1]

Open source geocoders

Name Languages OSM
Nominatim (demo) Python, PHP yes no
Photon (demo) Java yes no
Pelias (demo) JavaScript yes yes
Oscar (demo) C++ ? ?
addok (demo) Python no, only BAN(O) ?
Gisgraphy (demo) Java ? ?
Mimirsbrunn(unmaintained) Rust no ?
Gazetteer(unmaintained) Java yes no
osmnames-sphinxsearch(unmaintained) Python yes no

The following software only provides reverse geocoding:

  • JRG: small reverse geocoder working on a postprocessed osm2pgsql database.

The following geocoding software is also open source but not available in a dedicated repository:

Comparison of HTTP APIs

Comparison of the web API of some of the tools
Geocoder Fulltext Geocoding Fields Geocoding Autocomplete Filter Bias Reverse geocoding Batch Normalisation Gazetteer Linkage Autocompletion Linkage Engine Data source
Nominatim yes no no countrycodes, bbox N/A yes no Nominatim Strict Postgres OSM
Gisgraphy yes yes yes Radius, Country lat/lon, Disable Fuzzy yes no Token EdgeNGram Solr OpenAddresses, OSM
Photon yes no yes bbox, OSM Tags lat/lon yes no Nominatim EdgeNGram ElasticSearch OSM
Pelias yes yes yes Placetype, Country, Bbox, Radius, admin_boundary, Data source Proximity yes no libpostal, pelias/parser Who’s On First Token + EdgeNGram EdgeNGram ElasticSearch OSM, OpenAddresses, Who's on First, Geonames. Supports custom data.
addok yes no yes postal_code lat/lon address only yes regex N/A Phonetization or Trigram EdgeNGram Redis BAN, BANO(OSM)
Mimirsbrunn no no yes Dataset, Type, Zone lat/lon yes no regex Cosmogony Trigram EdgeNGram ElasticSearch OpenAddresses, OSM, BAN

Online geocoding services

These options are available as services you can call:

Non-commercial, ToS limited

  • Nominatim is deployed on OpenStreetMap servers, and powers the search on the front page as well as offering an API.
  • Photon hosted by
  • GeoCheck hosted by - searches across Nominatim OSM, Google, Photon OSM, BANO, IGN, Etalab BANO
  • OSMNames maintained by MapTiler and HSR - provides basic search in place names with autocomplete for demo purposes. The project mainly aims to deliver gazetteer data from OSM.
  • LocalArea maintained by CrimeFlare - searches OpenStreetMap and display ethical corporations


  • OpenCage hosted by OpenCage GmbH - searches across OpenStreetMap, geonames, geoplanet among other sources.
  • LocationIQ searches across OSM, OA, Geonames, and WoF, among other sources
  • Osmocoder hosted by, able to do batch geocoding, so far for area of Germany, and in German language.
  • Geocode Earth provide hosted geocoding APIs powered by the open-source Pelias Geocoder. They offer autocomplete, reverse & full-text search across OSM, OpenAddresses, Geonames and Who's on First. Run by the former Mapzen Search team.
  • WhatIsWhere Free, powerful map based search. Supports multiple conditions applied at the same time, saving/loading search projects, export to CSV, etc.
  • NetToolKit provides affordable geocoding, autocomplete/search, and map tile services.
  • Geoapify offers direct and reverse geocoding, as well as autocomplete. They support single and batch requests. The APIs can be tested with Playground.
  • Geocoding API Forward & Reverse Geocoding based on OpenStreetMap data with low latency served by a global cdn.
  • SmartMaps powered by YellowMap AG - Worldwide Forward & Reverse Geocoding, Routing, Matrix Routing and Autocomplete based on OpenStreetMap data.
  • BigDataCloud provides free client-side reverse geocoding API which utilises data from OpenStreetMap (OSM) project and various other open public sources. They deliver administrative/non-administrative boundaries-based results.

See also