finds.dev← search

// the find

komoot/photon

★ 2,876 · Java · Apache-2.0 · updated Jun 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →