Confinia API

EU administrative boundaries with full historical versioning — any commune, as it existed at any date, as GeoJSON.

Typical uses: joining a 2015 dataset (health, tax, elections…) to today's map without losing the ~1,800 communes that merged since; resolving which commune an address or GPS point belonged to at the time of the event (insurance claims, property history, epidemiology); keeping INSEE-coded time series consistent across COG vintages when codes get reused or renamed.

« Which commune was here on 2018-06-01? » — codes get reused, names change, municipalities merge:

GET /v1/communes?code=01033&at=2018-06-01   → Bellegarde-sur-Valserine
GET /v1/communes?code=01033&at=2020-06-01   → Valserhône (merged 2019)
GET /v1/communes/01033/history            → every version since 1943
GET /v1/communes?dept=01&at=2019-06-01   → a whole département (FeatureCollection)

Any European municipality (EU + EFTA + UK + candidates), and New Zealand:

GET /v1/units?lat=52.52&lon=13.405&at=2020-06-01  → Berlin (point, any country)
GET /v1/units?nuts=ITC4C&at=2020-06-01    → all comuni of the Milano province
GET /v1/units?nuts=DE2&at=2019-06-01      → all Gemeinden of Bavaria
GET /v1/units/GM0363/history              → Amsterdam through time

NUTS regions, 7 versions (2003→2024) — e.g. the 2016 French région reform
(the 13 new régions became NUTS 1; the 22 old ones survive as NUTS 2 — the
kind of divergence that silently breaks time series):

GET /v1/nuts?level=1&country=FR&at=2015-06-01  → 9 ZEAT super-regions (pre-reform NUTS 1)
GET /v1/nuts?level=1&country=FR&at=2018-06-01  → the 13 post-2016 régions (+ DROM)
GET /v1/nuts?lat=45.46&lon=9.19&level=3&at=2020-06-01  → which province am I in?