192 countries. 1.66 GB. 150 MB RAM at idle.
A geocoder that runs
on a potato.
Nominatim-compatible API. Single binary. No database.
Nominatim requires 64 GB RAM for Europe alone.
Heimdall serves the planet from what a Raspberry Pi has.
Try it
No signup. No rate limit. Type a place or click the map.
The numbers
Planet-scale deployments. Click ⓘ for sources.
| Heimdall v2 | Nominatim | Photon | Pelias | |
|---|---|---|---|---|
| Data on disk | 1.66 GB | ~260 GB | ~95 GB | ~540 GB |
| RAM | 150 MB | 64–128 GB | 64 GB | 100+ GB |
| Startup | 2s | Seconds | 30–60s | 10–20 min |
| Search latency | 0.7–1ms | 50–200ms | 5–25ms | 30–100ms |
| Throughput | 196 req/s | 30–600 req/s | 50–100 req/s | ~250 req/s |
| Components | Single binary | 3 (PG + PostGIS + app) | 2 (JAR + OpenSearch) | 6 services + ES |
| Nominatim API | Drop-in | Native | No | No |
| Official address data | 24 countries | US + GB | No | Via OpenAddresses |
| License | MIT | GPL v2/v3 | Apache 2.0 | MIT |
Self-host in 60 seconds
# Pull and run docker run -p 2399:2399 -v ./data:/data ghcr.io/heimdall-geocoder/heimdall serve # Download a country index docker run -v ./data:/data ghcr.io/heimdall-geocoder/heimdall \ index download --country se --out /data
GitHub Releases → — all country indexes with download sizes.
For developers
$ curl "https://api.geoheim.com/search?q=Drottninggatan+1+Stockholm&format=json"
$ curl "https://api.geoheim.com/reverse?lat=59.3346&lon=18.0632&format=json"
Drop-in replacement for Nominatim. Change one URL.
Coverage
192 countries. Showing a sample — full list available in the index.
| Country ↑ | Index size | Addresses | Places | Source |
|---|---|---|---|---|
| AUAustralia | 52 MB | 15M | 1.2M | ★G-NAF |
| ATAustria | 24 MB | 3.1M | 520K | ★BEV |
| BRBrazil | 68 MB | 6M | 3.1M | OSM |
| CACanada | 72 MB | 10M | 1.8M | OSM |
| DKDenmark | 22 MB | 2.8M | 410K | ★SDFI |
| FIFinland | 31 MB | 3.5M | 680K | ★NLS Finland |
| FRFrance | 120 MB | 18M | 3.5M | OSM |
| DEGermany | 180 MB | 22M | 4.1M | OSM |
| INIndia | 42 MB | 3.2M | 4.5M | OSM |
| ITItaly | 95 MB | 14M | 2.8M | OSM |
| JPJapan | 65 MB | 8M | 1.9M | OSM |
| NLNetherlands | 48 MB | 9.2M | 890K | ★BAG |
| NONorway | 38 MB | 3.8M | 720K | ★Kartverket |
| PLPoland | 55 MB | 7.5M | 1.4M | OSM |
| KRSouth Korea | 28 MB | 5M | 680K | OSM |
| ESSpain | 88 MB | 11M | 2.2M | OSM |
| SESweden | 42 MB | 4.2M | 890K | ★Lantmäteriet |
| CHSwitzerland | 18 MB | 2.4M | 420K | ★swisstopo |
| GBUnited Kingdom | 78 MB | 12M | 2.1M | OSM |
| USUnited States | 320 MB | 45M | 8.2M | OSM + TIGER |
Pricing
| Self-hosted | Free forever | MIT license | You run it |
| Hosted API | $29/month | 1M requests | + $0.029/1K over |
| Dedicated | $299/month | Your own instance | Email to set up |