Open Data — entry 011 of 44

French Address Search

Verified Aug 2026

geo.api.gouv.fr's address search now redirects to the Géoplateforme's geocoding API at data.geopf.fr/geocodage, 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

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/french-address-search/"><img src="https://greatapis.com/badge/french-address-search.svg" alt="Scored 94 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.

Endpoints

Servers
https://data.geopf.fr/geocodage
Auth
BearerAuthProjectAuth
getCapabilities1

Découverte du service

GET/getCapabilitiesDécouvrir le service
Responses
StatusDescriptionSchema
200successful operationGetcapabilities
404Not found
search2

Géocodage direct (recherche)

GET/searchRecherche par géocodage direct
Parameters
NameInRequiredType
qquerynostring
autocompletequerynostring
indexqueryno
limitquerynointeger
latquerynonumber
lonquerynonumber
returntruegeometryquerynoboolean
postcodequeryno
citycodequeryno
depcodequeryno
typequerynostring
cityquerynostring
categoryqueryno
departmentcodequerynostring
municipalitycodequerynostring
oldmunicipalitycodequerynostring
districtcodequerynostring
sectionquerynostring
numberquerynostring
sheetquerynostring
Responses
StatusDescriptionSchema
200successful operation
400Parse query failed
POST/search/csvGéocodage direct en masse d’un fichier CSV
Request body

multipart/form-data (required)

Responses
StatusDescriptionSchema
200Géocodage réussiGeocodeCsvResponse
400Échec du géocodage suite à une erreur dans la requête ou dans le fichier CSV
reverse2

Géocodage inverse

GET/reverseRecherche par géocodage inverse
Parameters
NameInRequiredType
searchgeomquerynostring
lonquerynonumber
latquerynonumber
indexqueryno
limitquerynointeger
returntruegeometryquerynoboolean
postcodequeryno
citycodequeryno
typequerynostring
cityquerynostring
categoryqueryno
departmentcodequerynostring
municipalitycodequerynostring
oldmunicipalitycodequerynostring
districtcodequerynostring
sectionquerynostring
numberquerynostring
sheetquerynostring
Responses
StatusDescriptionSchema
200successful operation
400Parse query failed
POST/reverse/csvGéocodage inversé en masse d’un fichier CSV
Request body

multipart/form-data (required)

Responses
StatusDescriptionSchema
200Géocodage réussiGeocodeCsvResponse
400Échec du géocodage suite à une erreur dans la requête ou dans le fichier CSV
batch-async10

Géocodage par lot asynchrone

POST/async/projectsCréer un nouveau projet
Parameters
NameInRequiredType
X-Communityheadernostring
Responses
StatusDescriptionSchema
201Projet créé avec succèsProject
401Authentification incorrecte
403Droits insuffisants
GET/async/projects/{projectId}Récupérer les informations
Parameters
NameInRequiredType
projectIdpathyesstring
Responses
StatusDescriptionSchema
200Métadonnées du projetProject
401Non autorisé
404Projet introuvable
DELETE/async/projects/{projectId}Supprimer un projet
Parameters
NameInRequiredType
projectIdpathyesstring
Responses
StatusDescriptionSchema
204Projet supprimé avec succès
401Non autorisé
403Action interdite (le projet est en cours de traitement)
404Projet introuvable
POST/async/projects/{projectId}/abortAnnuler un géocodage en attente ou en cours
Parameters
NameInRequiredType
projectIdpathyesstring
Responses
StatusDescriptionSchema
200Annulation prise en compteProject
401Non autorisé
403Action interdite (le projet n'est pas en cours ou en attente)
404Projet introuvable
PUT/async/projects/{projectId}/input-fileUploader un fichier d'entrée pour un projet
Parameters
NameInRequiredType
projectIdpathyesstring
Content-Lengthheadernointeger
Content-Dispositionheadernostring
Request body

application/octet-stream

Responses
StatusDescriptionSchema
200Fichier d'entrée uploadé avec succèsProject
400Fichier invalide (taille excessive ou incorrecte)
401Non autorisé
403Action interdite (le projet est en cours de traitement ou terminé)
404Projet introuvable
GET/async/projects/{projectId}/input-file/{token}Télécharger le fichier source du projet
Parameters
NameInRequiredType
projectIdpathyesstring
tokenpathyesstring
Responses
StatusDescriptionSchema
200Fichier téléchargé avec succèsGeocodeCsvResponse
GET/async/projects/{projectId}/output-file/{token}Télécharger le fichier résultat du projet
Parameters
NameInRequiredType
projectIdpathyesstring
tokenpathyesstring
Responses
StatusDescriptionSchema
200Fichier téléchargé avec succès
PUT/async/projects/{projectId}/pipelineDéfinir les paramètres du traitement
Parameters
NameInRequiredType
projectIdpathyesstring
Request body

application/jsonPipeline

Responses
StatusDescriptionSchema
200Pipeline défini avec succèsProject
400Paramètres invalides
401Non autorisé
403Action interdite (le projet est en cours de traitement ou terminé)
404Projet introuvable
POST/async/projects/{projectId}/resetRé-initialise un géocodage terminé ou en erreur
Parameters
NameInRequiredType
projectIdpathyesstring
Responses
StatusDescriptionSchema
200Ré-initialisation prise en compteProject
401Non autorisé
403Action interdite (le projet n'est pas terminé ou en erreur)
404Projet introuvable
POST/async/projects/{projectId}/startDémander le démarrage du géocodage
Parameters
NameInRequiredType
projectIdpathyesstring
Responses
StatusDescriptionSchema
200Projet mis en attente de géocodageProject
401Non autorisé
403Action interdite (le projet est en cours de traitement ou terminé ou des éléments sont manquants)
404Projet introuvable

Try it

Developer reference

Base URLhttps://data.geopf.fr/geocodage
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

Key endpoints
  • GET/search
  • GET/reverse

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.

Availability

Uptime100%
Median latency639 ms
Last checkUp · 400 · Sep 2026

3 checks since Aug 2026. A person runs this check by hand, not an automated monitor.

Changelog

Spec version1.0.0
Tracked paths14
  • Aug 2026gained an OpenAPI spec

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗