Open Data — entry 011 of 44

French Address Search

Verified Jul 2026

geo.api.gouv.fr's address search now redirects to Etalab's Base Adresse Nationale API at api-adresse.data.gouv.fr, which geocodes and reverse-geocodes French addresses down to the housing-unit level from the country's authoritative address registry. Responses come back as GeoJSON FeatureCollections scored by match confidence, and the service is free and keyless for reasonable use.

The Base Adresse Nationale (BAN) geocoder — France's authoritative government address registry — turns free-text French addresses into ranked, scored GeoJSON matches down to the individual housenumber, and reverse-geocodes coordinates back to the nearest address. It's free and keyless, but it is rate-limited and fussier about its `q`/`limit` parameters than the other three entries in this quartet.

geocodingfrancegovernmentaddresses
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsGeoJSONResponses can be requested as GeoJSON.

GreatAPIs Score

Score88out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 88 on greatapis.com
<a href="https://greatapis.com/api/french-address-search/"><img src="https://greatapis.com/badge/french-address-search.svg" alt="Scored 88 on greatapis.com"></a>

Auth quickstart

  1. No API key or account is required — search and reverse-geocoding are both public and keyless.
  2. CORS is open on every response: a probe in this run confirmed `access-control-allow-origin: *` both on a bare request and on one carrying an `Origin: https://example.com` header.
  3. The provider's own docs publish a per-IP rate limit of 50 requests/second ("50 appels/IP/seconde"), so cache results and back off on a 429 rather than retrying immediately.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Search an address

GEThttps://api-adresse.data.gouv.fr/search/?q=8+bd+du+port&limit=1

200 application/json; charset=utf-8

{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[2.062821,49.031624]},"properties":{"label":"8 Boulevard du Port 95000 Cergy","score":0.4924265550239234,"housenumber":"8","id":"95127_1448_00008","banId":"8e6b04d7-f6fd-48a1-80be-4ec984a286e8","name":"8 Boulevard du Port","postcode":"95000","citycode":"95127","x":631468.28,"y":6881710.34,"city":"Cergy","context":"95, Val-d'Oise, Île-de-France","type":"housenumber","importance":0.67985,"depcode":"95","street":"Boulevard du Port","_type":"address"}}],"query":"8 bd du port"}

limit=1 was requested directly in this run's probe (not truncated after capture) — the single returned Feature is complete and unmodified. A real search without `limit` returns up to 10 candidates by default, ranked by descending `properties.score`.

Developer reference

Base URLhttps://api-adresse.data.gouv.fr
Rate limit

50 requests/second per IP, documented by the provider as "50 appels/IP/seconde" -- exceeding it returns a 429 on every request for a 5-second block whose remaining duration is reported in a retry-after header, decaying once the caller backs off

Gotchas & limits

  • `q` is required — a live probe of `/search/` with no `q` parameter returned `400 {"code":400,"message":"Failed parsing query","detail":["q: required param"]}` rather than an empty result set or a default listing.
  • A query with no real match still returns `200` with an empty `features` array (confirmed live with a nonsense query string), not a 404 or an error body — check `features.length`, not the HTTP status, to detect "no results".
  • `limit` defaults to 10 and caps at 50 — a live probe with `limit=100` was rejected with `400 {"code":400,"message":"Failed parsing query","detail":["limit: must be an integer between 1 and 50"]}`. Results are always ordered by descending `properties.score`.
  • The rate limit is documented (not live-triggered in this run, to avoid hammering a shared public service) as 50 requests/second per IP; exceeding it returns a 429 on every request for a 5-second block whose remaining duration is reported in a `retry-after` header, decaying once the caller backs off — per the provider's own "Limite d'usage" documentation.