Geography
breaks quietly.
Your listings say “Lisboa”, your filters say “Lisbon”, your map says neither. Mapbase classifies everything against one canonical hierarchy you can search, drill, and resolve.
Classify your inventory
Tag every listing, store, or asset with one stable ID — countries down to parishes.
Your territories
Delivery areas and sales regions, linked to the official hierarchy once approved.
Postcodes that join
Eurostat codes linked to locations — searchable like everything else.
Programmatic SEO pages
Breadcrumbs, meta, and JSON-LD from the same place data.
Search the registry
Autocomplete and browse at every level — district, municipality, parish.
Resolve any point
Coordinates in; location and zone context out.
Search by text. Resolve by coordinate. Same IDs everywhere.
A real-estate metasearch classifies its entire inventory with Mapbase — giving users the same district-to-neighborhood search as the market's biggest portals.
Ship product logic,
not geo infrastructure.
Integrate in hours
Typed SDK, REST, and UI blocks — not a geo project.
No fuzzy matching
Stable IDs replace fragile string compares.
Same stack, every layer
One ID model across search, resolve, and boundaries.
Custom zones, enriched
Approved catchments join the same hierarchy.
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 with paid plans from €20/mo.
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 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, 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 credits / mo on Scale
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, 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
Two lines after your existing autocomplete. No migration, no new UX — just answers Google doesn't give you.
One
directory.
mapbase.dev/ptmapbase.dev/esmapbase.dev/itmapbase.dev/ukmapbase.dev/fr
