// the find
komoot/photon
an open source geocoder for openstreetmap data
Photon is a geocoder built on top of OpenSearch (formerly Elasticsearch) that indexes Nominatim/OpenStreetMap data and exposes a REST API for forward and reverse geocoding. It's for developers who want self-hosted geocoding without paying Google or relying on Nominatim's slower query performance. Komoot uses it in production for their routing app.
The search-as-you-type latency is genuinely good — OpenSearch full-text search is much faster than Nominatim's PostgreSQL queries for autocomplete. Multilingual support is built into the data model rather than bolted on; OSM names in multiple languages are indexed as separate fields. The GraphHopper-provided weekly database dumps mean you can skip the painful Nominatim import entirely — download and run. Continuous update pipeline from Nominatim keeps data fresh without a full reimport.
The infrastructure requirement is steep: 95GB disk, 64GB RAM recommended for planet-wide data — this is not a 'spin it up on a $5 VPS' situation. Database updates require double the disk space temporarily since you can't hot-swap; you need to unpack the new dump alongside the old one, then delete. The embedded OpenSearch approach means you're running a JVM process with a full search engine inside it, which makes horizontal scaling awkward — you either use embedded mode (single node) or manage an external OpenSearch cluster yourself. Result quality for ambiguous queries is noticeably worse than commercial geocoders; OSM data gaps become your problem.