The API opens soon
Managed Nominatim, hosted in the EU
A geocoding API based on Nominatim. Migrating is usually a new base URL plus your API key. See the differences
Example requests
GET api.terrarelay.eu/search?q=Damrak+1+Amsterdam&countrycodes=nl&format=jsonv2&addressdetails=1
Damrak 1, Amsterdam
© OpenStreetMap contributors · ODbLExample response (recorded, not live)
"place_id": 155861395,
"lat": "52.3770941",
"lon": "4.8979782",
"display_name": "1, Damrak, Centrum, Amsterdam, North Holland, Netherlands, 1012 LG, Netherlands"Full JSON response
[
{
"place_id": 155861395,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "node",
"osm_id": 2721771173,
"lat": "52.3770941",
"lon": "4.8979782",
"category": "place",
"type": "house",
"place_rank": 30,
"importance": 0.00008268177309829888,
"addresstype": "place",
"name": "",
"display_name": "1, Damrak, Centrum, Amsterdam, North Holland, Netherlands, 1012 LG, Netherlands",
"address": {
"house_number": "1",
"road": "Damrak",
"suburb": "Centrum",
"city": "Amsterdam",
"municipality": "Amsterdam",
"state": "North Holland",
"ISO3166-2-lvl4": "NL-NH",
"country": "Netherlands",
"postcode": "1012 LG",
"country_code": "nl"
},
"boundingbox": [
"52.3770441",
"52.3771441",
"4.8979282",
"4.8980282"
]
}
][
{
"place_id": 155861395,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "node",
"osm_id": 2721771173,
"lat": "52.3770941",
"lon": "4.8979782",
"category": "place",
"type": "house",
"place_rank": 30,
"importance": 0.00008268177309829888,
"addresstype": "place",
"name": "",
"display_name": "1, Damrak, Centrum, Amsterdam, North Holland, Netherlands, 1012 LG, Netherlands",
"address": {
"house_number": "1",
"road": "Damrak",
"suburb": "Centrum",
"city": "Amsterdam",
"municipality": "Amsterdam",
"state": "North Holland",
"ISO3166-2-lvl4": "NL-NH",
"country": "Netherlands",
"postcode": "1012 LG",
"country_code": "nl"
},
"boundingbox": [
"52.3770441",
"52.3771441",
"4.8979282",
"4.8980282"
]
}
]GET api.terrarelay.eu/search?q=Grote+Markt+1+Antwerpen&countrycodes=be&format=jsonv2&addressdetails=1
Grote Markt 1, Antwerpen
© OpenStreetMap contributors · ODbLExample response (recorded, not live)
"place_id": 107048879,
"lat": "51.2213112",
"lon": "4.3991737",
"display_name": "Stadhuis Antwerpen, 1, Great Market Square, Historisch Centrum, Antwerp, Flanders, 2000, Belgium"Full JSON response
[
{
"place_id": 107048879,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "way",
"osm_id": 22966134,
"lat": "51.2213112",
"lon": "4.3991737",
"category": "amenity",
"type": "townhall",
"place_rank": 30,
"importance": 0.3826968451717165,
"addresstype": "amenity",
"name": "Stadhuis Antwerpen",
"display_name": "Stadhuis Antwerpen, 1, Great Market Square, Historisch Centrum, Antwerp, Flanders, 2000, Belgium",
"address": {
"amenity": "Stadhuis Antwerpen",
"house_number": "1",
"road": "Great Market Square",
"quarter": "Historisch Centrum",
"borough": "Antwerp",
"city": "Antwerp",
"county": "Antwerp",
"state": "Antwerp",
"ISO3166-2-lvl6": "BE-VAN",
"ISO3166-2-lvl4": "BE-VLG",
"postcode": "2000",
"country": "Belgium",
"country_code": "be"
},
"boundingbox": [
"51.2209802",
"51.2216359",
"4.3988135",
"4.3994981"
]
}
][
{
"place_id": 107048879,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "way",
"osm_id": 22966134,
"lat": "51.2213112",
"lon": "4.3991737",
"category": "amenity",
"type": "townhall",
"place_rank": 30,
"importance": 0.3826968451717165,
"addresstype": "amenity",
"name": "Stadhuis Antwerpen",
"display_name": "Stadhuis Antwerpen, 1, Great Market Square, Historisch Centrum, Antwerp, Flanders, 2000, Belgium",
"address": {
"amenity": "Stadhuis Antwerpen",
"house_number": "1",
"road": "Great Market Square",
"quarter": "Historisch Centrum",
"borough": "Antwerp",
"city": "Antwerp",
"county": "Antwerp",
"state": "Antwerp",
"ISO3166-2-lvl6": "BE-VAN",
"ISO3166-2-lvl4": "BE-VLG",
"postcode": "2000",
"country": "Belgium",
"country_code": "be"
},
"boundingbox": [
"51.2209802",
"51.2216359",
"4.3988135",
"4.3994981"
]
}
]GET api.terrarelay.eu/search?q=Marienplatz+8+M%C3%BCnchen&countrycodes=de&format=jsonv2&addressdetails=1
Marienplatz 8, München
© OpenStreetMap contributors · ODbLExample response (recorded, not live)
"place_id": 128195279,
"lat": "48.1377880",
"lon": "11.5753437",
"display_name": "New Town Hall, 8, Marienplatz, Kreuzviertel, Old Town, Munich, Bavaria, 80331, Germany"Full JSON response
[
{
"place_id": 128195279,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "relation",
"osm_id": 147095,
"lat": "48.1377880",
"lon": "11.5753437",
"category": "amenity",
"type": "townhall",
"place_rank": 30,
"importance": 0.38936877137464093,
"addresstype": "amenity",
"name": "New Town Hall",
"display_name": "New Town Hall, 8, Marienplatz, Kreuzviertel, Old Town, Munich, Bavaria, 80331, Germany",
"address": {
"amenity": "New Town Hall",
"house_number": "8",
"road": "Marienplatz",
"quarter": "Kreuzviertel",
"suburb": "Old Town",
"city": "Munich",
"state": "Bavaria",
"ISO3166-2-lvl4": "DE-BY",
"postcode": "80331",
"country": "Germany",
"country_code": "de"
},
"boundingbox": [
"48.1372674",
"48.1383103",
"11.5750997",
"11.5768539"
]
}
][
{
"place_id": 128195279,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "relation",
"osm_id": 147095,
"lat": "48.1377880",
"lon": "11.5753437",
"category": "amenity",
"type": "townhall",
"place_rank": 30,
"importance": 0.38936877137464093,
"addresstype": "amenity",
"name": "New Town Hall",
"display_name": "New Town Hall, 8, Marienplatz, Kreuzviertel, Old Town, Munich, Bavaria, 80331, Germany",
"address": {
"amenity": "New Town Hall",
"house_number": "8",
"road": "Marienplatz",
"quarter": "Kreuzviertel",
"suburb": "Old Town",
"city": "Munich",
"state": "Bavaria",
"ISO3166-2-lvl4": "DE-BY",
"postcode": "80331",
"country": "Germany",
"country_code": "de"
},
"boundingbox": [
"48.1372674",
"48.1383103",
"11.5750997",
"11.5768539"
]
}
]GET api.terrarelay.eu/search?q=Pariser+Platz+1+Berlin&countrycodes=de&format=jsonv2&addressdetails=1
Pariser Platz 1, Berlin
© OpenStreetMap contributors · ODbLExample response (recorded, not live)
"place_id": 143634177,
"lat": "52.5162699",
"lon": "13.3777034",
"display_name": "Brandenburg Gate, 1, Pariser Platz, Friedrich-Wilhelm-Stadt, Mitte, Berlin, 10117, Germany"Full JSON response
[
{
"place_id": 143634177,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "way",
"osm_id": 518071791,
"lat": "52.5162699",
"lon": "13.3777034",
"category": "building",
"type": "gate",
"place_rank": 30,
"importance": 0.5504719991549523,
"addresstype": "building",
"name": "Brandenburg Gate",
"display_name": "Brandenburg Gate, 1, Pariser Platz, Friedrich-Wilhelm-Stadt, Mitte, Berlin, 10117, Germany",
"address": {
"building": "Brandenburg Gate",
"house_number": "1",
"road": "Pariser Platz",
"quarter": "Friedrich-Wilhelm-Stadt",
"suburb": "Mitte",
"borough": "Mitte",
"city": "Berlin",
"ISO3166-2-lvl4": "DE-BE",
"postcode": "10117",
"country": "Germany",
"country_code": "de"
},
"boundingbox": [
"52.5161170",
"52.5164328",
"13.3775798",
"13.3778251"
]
}
][
{
"place_id": 143634177,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "way",
"osm_id": 518071791,
"lat": "52.5162699",
"lon": "13.3777034",
"category": "building",
"type": "gate",
"place_rank": 30,
"importance": 0.5504719991549523,
"addresstype": "building",
"name": "Brandenburg Gate",
"display_name": "Brandenburg Gate, 1, Pariser Platz, Friedrich-Wilhelm-Stadt, Mitte, Berlin, 10117, Germany",
"address": {
"building": "Brandenburg Gate",
"house_number": "1",
"road": "Pariser Platz",
"quarter": "Friedrich-Wilhelm-Stadt",
"suburb": "Mitte",
"borough": "Mitte",
"city": "Berlin",
"ISO3166-2-lvl4": "DE-BE",
"postcode": "10117",
"country": "Germany",
"country_code": "de"
},
"boundingbox": [
"52.5161170",
"52.5164328",
"13.3775798",
"13.3778251"
]
}
]- EU hosting
- Based on Nominatim
Priced below Google & Mapbox. Always a free tier (fair-use limits apply).
Migrating from Nominatim
Based on the public Nominatim API, with deliberate differences: the API key goes in an Authorization header, /search requires countrycodes, and only the countries we cover are served. Migrating usually means changing the base URL and adding your API key.
- const GEOCODER = 'https://nominatim.openstreetmap.org';
+ const GEOCODER = 'https://api.terrarelay.eu';The Netherlands and Belgium first, Germany planned
Each country is its own dataset, built from OpenStreetMap plus open address registers. More countries follow demand.
- NetherlandsLive soon
- BelgiumLive soon
- GermanyPlanned
How TerraRelay compares
The questions that decide a geocoding choice. We leave prices out here; our list prices follow at launch.
| Dimension | TerraRelay | Google Maps Geocoding | Mapbox | Self-hosted Nominatim |
|---|---|---|---|---|
| EU hosting | Hosted and processed in the EU | Provider based in the US; EU-US transfer mechanisms apply | Provider based in the US; EU-US transfer mechanisms apply | Wherever you run it |
| Data ownership and GDPR | Store and cache results; ODbL attribution applies | Terms limit how long results may be stored | Long-term storage requires Mapbox's permanent geocoding option | Full control, and full responsibility |
| Nominatim compatibility | Largely compatible; see the differences | Own API, own response format | Own API, own response format | It is Nominatim |
| Ops effort | None, fully managed | None | None | Servers, imports, updates and monitoring |
| Free tier | Always a free tier (fair-use limits apply) | Limited free monthly usage | Limited free monthly usage | Free software, you pay for servers |
Statements about other providers are based on their public terms, checked October 2026.
Built to be trusted
Hosted in the EU
Your requests are hosted and processed in the EU.
Privacy by design
We log as little as we can. Our draft data processing agreement and subprocessor list are public.
Data processing agreementReliability, measured in the open
Paid plans will come with an SLA. We publish the percentage and the terms once we have measured real uptime, and we plan to publish a status history.
Open data, no lock-in
Built on open source Nominatim and OpenStreetMap data (ODbL). You may store and cache results (ODbL attribution applies), and the data and the Nominatim software are open, so you can always run your own.
How it works