finds.dev← search

// the find

osm-search/Nominatim

★ 4,327 · Python · GPL-3.0 · updated Jun 2026

Open Source search based on OpenStreetMap data

Nominatim is the geocoding engine behind nominatim.openstreetmap.org and the OSM search box — it converts addresses to coordinates and vice versa using OSM data. Self-hostable, battle-tested at scale, and the closest thing to a free alternative to Google Maps geocoding. If you need to geocode at volume without paying per-request, this is the serious option.

The ICU tokenizer handles multilingual address parsing properly, including non-Latin scripts — this is genuinely hard and most alternatives get it wrong. The split packaging (nominatim-api vs nominatim-db) lets you run the query API separately from the import machinery, which is the right architecture for production. Lua-based OSM tag processing via osm2pgsql is fast and flexible — you can customize what gets imported without touching core code. Reverse geocoding quality for administrative boundaries is excellent because it uses OSM's actual polygon data rather than approximations.

Initial import of a full planet file takes 2-3 days on good hardware and ~900GB of disk — there is no lightweight mode. The search ranking is a black box of SQL functions and importance scores that are difficult to debug when results are wrong; you will spend time in lib-sql/functions/ranking.sql without much documentation to guide you. Spelling correction and fuzzy matching are weak compared to commercial geocoders — a single typo in a street name often returns nothing. Running this yourself means you own the weekly OSM update pipeline too, which adds operational complexity most teams underestimate before committing.

View on GitHub → Homepage ↗

// 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 →