MAPBASE.DEV
PlaygroundDataAPISDKPricing
Login
PlaygroundDataAPISDKPricing
LoginGet API key

Every location, every boundary - one API.

Search, resolve, and understand the geographic hierarchy behind any address, coordinate, postcode, or custom zone.

10k credit-weighted ops/mo, 1k/day — no card needed
WHY MAPABASE.DEV

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.

01DATA DRIFT· locations

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.

Same IDacross every surface
02YOUR TERRITORIES· zones

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.

Enrichedon approval
1200-203
28013
00184
4050-073
08002
20121
9000-052
46002
80133
03FLAT LISTS· postcodes

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.

Linkedto LAU + locations
lau · PT111
gisco_idPT111
lau_nameLisboa
countryPT
reference_year2024
postcodes1200-203, …
04ADMIN GAPS· lau

LAU regions with geometry

Local Administrative Units across the EU — postcodes inside each unit. The admin layer between postcodes and official locations.

EU-wideLAU boundaries
TWO READ PATHS
Lisboalocations
1200-203postcodes
PT111lau
delivery-southzones
05SEARCH· search_registry

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.

All 4 layersone autocomplete
resolve.json
lat38.7139
lng-9.1394
countryPT
regionLisboa
parishSanta Maria Maior
postcode1200-203
06RESOLVE· point_layers

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.

1 callfull hierarchy

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.

BUILT TO SHIP, ANY USE CASE

Ship product logic,
not geo infrastructure.

01

Integrate in hours

Typed SDK, REST API, and installable UI blocks — not a quarter-long geo project.

02

No fuzzy matching

Canonical IDs and normalized structures replace fragile string comparisons in your codebase.

03

Same stack, every layer

locations, zones, postcodes, and LAU share IDs across autocomplete, resolve, boundaries, SDK, and UI blocks.

04

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

See the full cost breakdown
Search and resolve any location in real time
Try.
It.
Live.
mapbase.dev/playground
Live APIOpen full playground
Click to try the live demo
Works with your provider

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.

step 01

Your provider

Google · Geoapify · yours

"Rua Garrett 27" → lat/lng

step 02

Mapbase resolve

points.resolve

point → canonical registry

step 03

Canonical answer

hierarchy + boundary + ID

district → municipality → parish

step 01

Your provider

Google · Geoapify · yours

"Rua Garrett 27" → lat/lng

step 02

Mapbase resolve

points.resolve

point → canonical registry

step 03

Canonical answer

hierarchy + boundary + ID

district → municipality → parish

Standalone

No third party required

/v1/autocomplete

Mapbase autocomplete and resolve, end to end. Canonical locations, postcodes, LAU regions, and zones — searched, resolved, and rendered from one API key.

/v1/autocompleteTry autocomplete

Layered on Google

recommended

Keep your existing UX

/v1/points/resolve

Keep 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 resolve

Passthrough, 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
after-google-select.ts
mapbase sdk
// 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 postcodes

Two lines after your existing autocomplete. No migration, no new UX — just answers Google doesn't give you.

One
directory.

live
0+
🇵🇹Portugal
Distritos, concelhos, freguesias — every place with its own page.
mapbase.dev/pt
live
0+
🇪🇸Spain
Comunidades, provincias, municipios — browsable and indexable.
mapbase.dev/es
live
0+
🇮🇹Italy
Regioni, province, comuni — the full hierarchy as landing pages.
mapbase.dev/it
More to come.

Ready to ship?

Keep your geocoder or go all-in — either way, claim a key, hit the API, and be in production before lunch.

10k credit-weighted ops/mo, 1k/day — no card needed

MAPBASE.DEV

One foundation for geographic products — standalone, or a layer on top of the geocoder you already use.

Product

  • Pricing
  • Compare
  • Blocks

Developers

  • SDK
  • Docs (Scalar)
  • OpenAPI spec
  • LLM markdown ref

Project

  • Contact

Legal

© 2026 MAPBASE. All rights reserved.

Every location, every boundary - one API.