Geocoding
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
| 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.