CIIFragments Studio is CII-accredited: recover up to 20% of your software development spendLearn more

API integration for API Géo

We build your API Géo connector

We wire geo.api.gouv.fr into your France forms: the user types a town, your system gets the INSEE code, the EPCI, the département.

  • Senior product team
  • public-data connectors in production
  • from scoping to monitoring
In short

What does the API Géo provide and when should you integrate it?

The API Géo gives access to France's administrative divisions: municipalities, departments, regions, EPCIs, with INSEE codes, geometries and associated data. No registration or API key required. You integrate it into an application to build a municipality selector from a postcode, filter data by territory, or display zone boundaries on a map. It is particularly useful for public sector management tools, social benefit applications, or any software that needs to reason in terms of administrative geographic boundaries.

Use cases

What our clients build on API Géo

01

Municipality autocomplete in a funnel

INSEE code out for the whole system. boost=population, or Nantes-en-Ratier beats Nantes.

02

Postcode → municipalities decode

One postcode covers n municipalities, one municipality n postcodes. SIRET / delivery form: we offer the list, we do not guess.

03

GPS → municipality / EPCI match

A field job point lands on the right COG, so on the right eligibility rule.

04

A back-office territorial filter

Region, département, EPCI on stable codes, not on an Excel table that dies at the next merger.

For you

What it changes in your France forms

Engineering in service of a measurable outcome: an INSEE code as the key, no more town = postcode.

The right municipality from the form

Paris has 21 postcodes: storing the postcode as a town id breaks on the first arrondissement. We use the INSEE code as the key; the rest of the system aligns.

No more homonyms blocking the flow

Saint-Aubin exists in ten départements. We filter by département or prioritize populated towns: the user picks the right one, without ambiguity.

Autocomplete that stays fast

Map outlines have no place on every keystroke. We load only what is needed to suggest the municipality; the map comes later, when it is useful.

Address and boundaries, each its job

API Adresse finds the street number; API Géo attaches the municipality, EPCI and département. We chain both: complete data, no confusion.

Method

How we ship your API Géo connector

01

Scoping

Autocomplete, postcode decode, GPS, outlines or not. We settle fields and geometry before writing a line.

02

Development

Debounce, minimal fields, boost=population, local cache of the 18 regions and ~100 départements, a proxy if volume is high.

03

Acceptance testing

Paris 75011 → 75056, Nantes vs Nantes-en-Ratier, a homonym, a merged municipality, manual INSEE-code fallback.

04

Monitoring

5xx alerts, autocomplete resolution rate, COG freshness. You see a merger before the form does.

The API

What API Géo allows

Municipalities and arrondissements
Search by name, postcode, INSEE code, lat/lon. Paris 75056 is a municipality; its arrondissements are too.
EPCI, départements, regions
Derived from the municipality code, or lists /departements/{code}/communes, /epcis/{code}/communes, /regions/{code}/communes. 18 regions observed.
On-demand geometries
centre, contour, mairie, bbox. Outlines are reserved for a preloaded base map, never for typing.
HTTP cache on the server
cache-control public, max-age=3600, immutable (observed live). We lean on it, we do not hammer the API.
Glossary

The vocabulary of API Géo

INSEE code / COG
The municipality identifier. That is the storage key. A postcode is not one: one postcode = n municipalities, one municipality = n postcodes, Paris 21 postcodes.
boost=population
Name-autocomplete parameter. Without it, Nantes-en-Ratier can rank above Nantes. Observed: scores 1 vs 0.66. This is not a detail.
fields
On keystroke we only ask nom, code, codesPostaux, codeDepartement. Adding geometry=contour to autocomplete is an anti-pattern (34 MB at département scale).
millésime
COG millésime parameter (2015, 2024, 2026…). The COG moves (new municipalities). A code stored in 2017 may be delegated. We date the observation.
EPCI
Public establishment for inter-municipal cooperation, derivable from the municipality code (codeEpci). Eligibility rules, development tax, commercial territory.
API Adresse vs API Géo
Adresse geocodes a street number (BAN). Géo decodes the administrative division. Chain: BAN citycode → Géo, without calling /communes?nom= with a string already normalised.
Good to know

The real constraints of API Géo

01

A postcode is not an identifier

Documented in the guide: a postcode from another département, multi-postcode municipalities. Storage key: INSEE code. Paris 75011 → 75056 and 21 postcodes, checked live.

02

Outlines in autocomplete = 34 MB

The guide sizes the gap: département without outline ~480 KB, with outline ~34 MB. A preloaded base map, never key-up.

03

Quota unpublished

We lean on the 3600 s cache, debounce, a proxy if volume is high, an identifiable User-Agent. We do not promise a numeric rate.

04

wxs.ign.fr is dead for Admin Express

Geographic guides still cite the old WFS. Dead DNS in August 2026. Alternative: data.geopf.fr / Admin Express files. Do not copy ogr2ogr snippets without replacing the host.

Géo or Adresse

API Géo or API Adresse?

Two Etalab / IGN APIs often chained, rarely interchangeable.

CriterionAPI GéoAdmin divisionAPI AdresseBAN geocoding
SubjectMunicipality, EPCI, département, regionStreet number, POI, parcel
Hostgeo.api.gouv.frdata.geopf.fr/geocodage
Output keyINSEE code (COG)banId + citycode
PostcodeDecoded to n municipalitiesA field of the normalised address
OutlinesYes, not on keystrokeNo, not its job
AuthNoneNone in ordinary use
The right caseTown form / eligibilityA deliverable address

We combine them: Adresse for the number, Géo for EPCI and region. The abstraction layer avoids calling /communes?nom= with a citycode already there.

Our expertise

What we measure on an API Géo integration

10 d
municipality autocomplete in production
1 field
town, INSEE code out for the whole system
18
regions cached locally
4
senior developers on the project

We combine API Géo with

The stack around administrative division on our projects.

  • React
  • PostgreSQL
  • Redis
  • Node.js
  • TypeScript
FAQ

API Géo integration: your questions

A municipality field with debounce, minimal fields (nom, code, codesPostaux, codeDepartement), boost=population, never geometry=contour on keystroke. We store the INSEE code, the label, the observation date, postcodes as an array. A local cache of the 18 regions and the départements. A server proxy if IP volume is unknown. Fallback: manual INSEE-code entry if the API 5xx. An identifiable User-Agent.

API Adresse geocodes an address (BAN): number, street, coordinates, citycode. API Géo decodes the administrative division: municipality, EPCI, département, region, optionally an outline. We chain them: Adresse → citycode → Géo for the EPCI, without calling /communes?nom= with a string already normalised. This is not cadastre, nor IGN Admin Express. For whole-of-France Admin Express and heavy outlines, we leave geo.api.gouv.fr for Géoplateforme or files, not for wxs.ign.fr.

Because a postcode does not identify a municipality. Paris has 21 postcodes and municipality code 75056: GET /communes?codePostal=75011 shows it. A postcode can also cover several municipalities, sometimes in another département. The key for the whole system is the INSEE code. The postcode stays an array of properties. A code stored in 2017 may be delegated after a merger: we date the observation, and we plan a millésime or a COG pack if the business requires it.

Free, no account, no key. A numeric official quota is not published. The server sends cache-control 3600 s immutable: we lean on it. Debounce, short fields, a proxy if volume is high. We do not publish an invented ceiling. Open-data attribution per the data.gouv sheet. An identifiable User-Agent and a server proxy are enough for most funnels. If volume explodes, we see it in monitoring, not as an undocumented 429 in production.

Access is free. The cost is the field: debounce, boost, COG persistence, cache, fallback. Municipality autocomplete in a sign-up funnel is a short job. An outline base map plus an offline field-agent tool is another project, often with the Etalab pack or COG files. We scope geometry and volume before we quote. Chaining Adresse (BAN) then Géo for the EPCI avoids a second name autocomplete, hence quota and homonyms.

An API Géo integration project?

Let's talk. 30 minutes to scope autocomplete, INSEE code and outlines, and tell you frankly what is feasible.

Discuss my API Géo project
Discuss my API Géo project