Geography
breaks quietly.
Not missing maps — mismatched places, orphaned postcodes, and territories that never join your official hierarchy. Mapbase is four linked layers — locations, zones, postcodes, and LAU — queried through search_registry and point_layers.
One truth per location
Every system names the same place differently. The locations layer gives you one normalized record per place — countries, regions, municipalities, parishes — with hierarchy and stable IDs.
Zones — yours and ours
Official zones plus custom areas you define — delivery catchments, sales territories, service regions. Submit a boundary for review; once approved, Mapbase enriches it with a containing location, polylines, and registry IDs.
Postcodes linked to places
Postal codes aren't locations — until they're connected. Eurostat postcodes linked to LAU regions and canonical locations, searchable like any other layer.
LAU regions with geometry
Local Administrative Units across the EU — postcodes inside each unit. The admin layer between postcodes and official locations.
Search the registry
Autocomplete and list every layer from one index — locations, zones, postcodes, and LAU — with trigram-ranked text search and stable IDs on every hit.
Resolve any point
Turn coordinates into official context — which location, zone, and LAU polygon contains this point. Postcodes resolve through their own routes; polygon layers share one resolve path.
Four layers — locations, zones, postcodes, and LAU — indexed in search_registry and point_layers. Search any layer via autocomplete; resolve coordinates against polygon-backed layers. Custom zones join the same index once approved and enriched.
Ship product logic,
not geo infrastructure.
Integrate in hours
Typed SDK, REST API, and installable UI blocks — not a quarter-long geo project.
No fuzzy matching
Canonical IDs and normalized structures replace fragile string comparisons in your codebase.
Same stack, every layer
locations, zones, postcodes, and LAU share IDs across autocomplete, resolve, boundaries, SDK, and UI blocks.
Custom zones, enriched
Draw a catchment, submit for review — approved zones get linked to the hierarchy and indexed like official layers.
The alternative is a data team
Cheaper than building — and far cheaper than maintaining
The data is technically free. Turning it into a linked, queryable, always-current registry is months of engineering up front — and a permanent maintenance tax after. Mapbase starts at €0 and overage runs as low as €0.25 per 1k ops.
Build it yourself
Your geo stack, your problem
- Ingest and reconcile CAOP, INE, Eurostat, and GISCO releases — each with its own format, projection, and quirks
- Run and tune a PostGIS cluster: spatial indexes, geometry validity, vacuum schedules
- Build a simplification pipeline so boundaries are light enough to ship to browsers
- Link postcodes to LAU regions and administrative hierarchies yourself — none of the sources do it for you
- Re-run everything when sources publish updates, and migrate every ID that changed
- Keep an engineer on call for the geo stack instead of your product
Months to first query — then forever to keep current
Use Mapbase
Our geo stack, your product
- One API key — the registry, boundaries, postcodes, LAU links, and zones are already built and linked
- Sources ingested, reconciled, and refreshed for you; IDs stay stable across releases
- Boundaries pre-simplified and served as GeoJSON or polyline, ready to render
- Typed SDK, installable UI blocks, and playgrounds — integration is hours, not quarters
- Credit-weighted pricing that scales down to zero
€0 to start · 3,000,000 ops / mo on Scale · overage from €0.25/1k
Keep Google.
Add meaning.
Mapbase isn't a rip-and-replace. Geocoders turn text into a point — Mapbase turns that point into canonical geography. Run it standalone, layer it on your existing provider, or route every source through one client.
Your provider
Google · Geoapify · yours
"Rua Garrett 27" → lat/lng
Mapbase resolve
points.resolve
point → canonical registry
Canonical answer
hierarchy + boundary + ID
district → municipality → parish
Your provider
Google · Geoapify · yours
"Rua Garrett 27" → lat/lng
Mapbase resolve
points.resolve
point → canonical registry
Canonical answer
hierarchy + boundary + ID
district → municipality → parish
Standalone
No third party required
/v1/autocompleteMapbase autocomplete and resolve, end to end. Canonical locations, postcodes, LAU regions, and zones — searched, resolved, and rendered from one API key.
/v1/autocompleteTry autocompleteLayered on Google
recommendedKeep your existing UX
/v1/points/resolveKeep Google Places (or Geoapify) for text search. Pipe the selected point through points.resolve and get back what they don't return — the full administrative hierarchy, real boundaries, linked postcodes, and stable mb_ IDs.
/v1/points/resolveTry resolvePassthrough, BYO key
One client, every source
/v1/providers/{google,geoapify}/*Call Google and Geoapify through Mapbase's provider routes with your own key — one SDK, one response shape, normalized results. Your key is forwarded per request and never stored.
/v1/providers/{google,geoapify}/*Provider routes// 1. Your Google Places flow stays exactly as it is
const place = await googleAutocomplete(query)
// 2. One extra call turns its point into canonical geography
const { data } = await mapbase.points.resolve({
lat: place.lat,
lng: place.lng,
})
data.anchor.id // "mb_loc_01HXYZAB8R" — stable forever
data.hierarchy // district → municipality → parish
data.lau // LAU region + linked postcodesTwo lines after your existing autocomplete. No migration, no new UX — just answers Google doesn't give you.

