Geocoding

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.

Most geocoders work in two stages: an address parser splits the input into components (house number, street, locality, postcode, …), and a search index or gazetteer matches those components to places with coordinates. Some projects provide only one stage; see Address parsers below.

Open source geocoders

Name Languages License Data sources OSM
addresses
Street
intersections
Last commit
Nominatim (demo) Python GPL-3.0+ OSM; optional US TIGER yes no 2026
Photon (demo) Java Apache-2.0 OSM (via Nominatim database) yes no 2026
Pelias (demo) JavaScript MIT OSM, OpenAddresses, Who's On First, GeoNames, custom CSV yes yes 2026
addok (demo) Python MIT BAN, BANO no, only BAN(O) ? 2025
Oscar (demo) C++ LGPL-2.0/3.0 OSM ? ? 2024
Gisgraphy (demo) Java LGPL-3.0 OSM, OpenAddresses ? ? 2023
Mailwoman (demo) TypeScript, Rust AGPL-3.0 or commercial Who's On First, OpenAddresses, national address registers; OSM address points (optional, built locally) yes yes 2026
Mimirsbrunn(unmaintained, archived) Rust AGPL-3.0 OSM, OpenAddresses, BAN, Cosmogony no ? 2023
Gazetteer(unmaintained) Java GPL-2.0+ OSM yes no 2021
osmnames-sphinxsearch(unmaintained) Python MIT OSMNames (OSM) yes no 2023

"Last commit" is the year of the most recent push to the default repository, checked November 2026.

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:

  • osmgeoref – a small geocoding engine with low resource requirements (proof of concept)

Address parsers

These libraries split a free-text address into labelled components. They do not return coordinates by themselves, but geocoders use them as a first stage, and several are trained on OSM data.

Name Languages License Method Training data / coverage
libpostal C, with bindings for many languages MIT Statistical (conditional random field) OSM and OpenAddresses; worldwide
Pelias Parser JavaScript MIT Rule and dictionary based Not trained; dictionaries per language
deepparse Python MIT Neural (sequence-to-sequence) libpostal training data; 20 countries
Mailwoman TypeScript, Rust (runs in Node.js and browser) AGPL-3.0 or commercial Neural (transformer encoder with Viterbi decoding) and gazetteer features National registers, OpenAddresses, OSM and synthetic data; one worldwide model, about 200 countries

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 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 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
Mailwoman yes yes yes countrycodes, OSM tags, layer lat/lon yes yes Neural parser Who's On First Token + prefix (SQLite FTS5), admin hierarchy containment FST prefix index SQLite Who's On First, OpenAddresses, national registers; OSM optional. Serves Nominatim- and Photon-compatible APIs.

Licensing and attribution

Geocoders built on OSM data serve data under the Open Database License. Applications that display geocoding results must credit "© OpenStreetMap contributors" as described on the copyright page. The OSM Foundation's Geocoding Guideline explains when a set of geocoding results becomes a derivative database and when it remains an insubstantial extract.

The software licenses listed above apply to the code, not to the data it loads.

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 Komoot.io
  • GeoCheck hosted by IdeesLibres.org - searches across Nominatim OSM, Google, Photon OSM, ideeslibres.org 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
  • BBBike tagname search offers fulltext search in more than 175 mio name, notes, description, comment, fixme, subject, title, wikipedia and URLs tags in OpenStreetMap by words, sub-strings, phrases, regular expressions, or best match.

Commercial

Listed alphabetically.

  • BigDataCloud provides a client-side reverse geocoding API using data from OpenStreetMap and other open public sources, with administrative and non-administrative boundary results. Free tier available.
  • Geocode Earth provides hosted geocoding APIs powered by the open-source Pelias geocoder: autocomplete, reverse and full-text search across OSM, OpenAddresses, GeoNames and Who's On First. Run by the former Mapzen Search team who created Pelias.
  • Geoapify offers forward and reverse geocoding and autocomplete, with single and batch requests. The APIs can be tested in the Playground.
  • Geocoding API provides forward and reverse geocoding based on OpenStreetMap data, served by a CDN.
  • Geokeo.com provides forward and reverse geocoding with spell correction. 2,500 free requests a day.
  • GraphHopper Directions API offers routing APIs and a geocoding API where the provider can be selected: Photon, Nominatim or Gisgraphy.
  • LocationIQ searches across OSM, OpenAddresses, GeoNames and Who's On First, among other sources.
  • Mapsource provides worldwide OpenStreetMap-based forward and reverse geocoding, address and place search, business and brand search, autocomplete, nearby-feature search and regional POI discovery. Free tier available. API documentation
  • NetToolKit provides geocoding, autocomplete/search and map tile services.
  • OpenCage hosted by OpenCage GmbH - searches across OpenStreetMap, GeoNames, GeoPlanet and other sources.
  • OpenGeocoding provides forward and reverse geocoding and address autocomplete, built from Overture Maps, OpenStreetMap, OpenAddresses and GeoNames data. Free tier available. The engine is source-available (PolyForm Shield) and can be self-hosted.
  • Osmocoder hosted by 123map.de, able to do batch geocoding, so far for Germany only and in German.
  • overpass.ch Geocoding API provides worldwide forward and reverse geocoding and search as you type on OpenStreetMap data, with Photon- and Nominatim-compatible APIs, so existing clients such as geopy or Leaflet geocoders work after changing the base URL. Free tier of 100,000 requests a month for evaluation and non-commercial projects.
  • SmartMaps powered by YellowMap AG - worldwide forward and reverse geocoding, routing, matrix routing and autocomplete based on OpenStreetMap data.
  • Stadia Maps Geocoding API
  • WhatIsWhere map-based search supporting multiple simultaneous conditions, saved search projects and CSV export.

See also