Accueil / Services / Géocodage BAN
Base Adresse Nationale

Adresses françaises, au numéro près

Géocodez des adresses françaises à partir de la Base Adresse Nationale, le référentiel officiel des adresses en France : une par une, en saisie semi-automatique, ou par fichiers CSV entiers.

Préfixe /v2/geocoding/ban/ Moteur addok · France uniquement Documentation complète d'addok ↗
Principe

Les fonctions disponibles

FonctionMéthodeUsage
searchGETRecherche d'adresse, de rue, de lieu-dit ou de commune
reverseGETAdresse la plus proche de coordonnées
search/csvPOSTGéocodage d'un fichier CSV d'adresses
reverse/csvPOSTGéocodage inverse d'un fichier CSV de coordonnées

Le chemin peut se terminer ou non par une barre oblique : /v2/geocoding/ban/search et /v2/geocoding/ban/search/ sont équivalents. Les réponses sont en GeoJSON (coordonnées [lon, lat]) ou en CSV pour les fichiers.

Référence

Types de résultat

typeDésigneExemple de label
housenumberUn numéro dans une voie87 Avenue d'Italie 75013 Paris
streetUne voie, sans numéroAvenue d'Italie 75013 Paris
localityUn lieu-dit—
municipalityUne commune, avec sa populationParis
Qualité

Interpréter le score

Le score mesure la ressemblance entre la saisie et le résultat. Il n'y a pas de seuil universel : il dépend de la qualité de vos adresses. Une démarche éprouvée :

  • vérifier que le type correspond à la précision attendue : un street quand on cherchait un numéro signale un numéro inconnu de la BAN ;
  • fixer un seuil de confiance à partir d'un échantillon de vos propres adresses, contrôlées à la main ;
  • envoyer en vérification manuelle les résultats sous ce seuil.

Sur l'exemple ci-dessus, la saisie 87 avenue d'italie, 75013 obtient 0,89 ; en géocodage inverse sur le point exact, le score approche 1.

Endpoint

Trouver l'adresse d'un point

GET/v2/geocoding/ban/reverse

Renvoie les adresses les plus proches de lat et lon. Acceptent aussi limit et type : avec type=street, vous obtenez la voie la plus proche plutôt que le numéro.

Requête
curl "https://geoservice.example.com/v2/geocoding/ban/reverse?lat=48.8240267&lon=2.3584248&limit=1" \
  -H "X-API-Key: $GEOSERVICE_KEY"
200 OK · extrait
{
  "type": "FeatureCollection",
  "features": [{
    "type": "Feature",
    "geometry": {"type": "Point", "coordinates": [2.358434, 48.824031]},
    "properties": {
      "label": "87 Avenue d'Italie 75013 Paris",
      "score": 0.9999999997274487,
      "type": "housenumber",
      "citycode": "75113",
      "distance": 0,
      …
    }
  }],
  "attribution": "BAN",
  "licence": "ETALAB-2.0",
  "limit": 1
}

Le géocodage inverse ajoute distance : l'écart, en mètres, entre le point demandé et l'adresse trouvée.

Traitement par lot

Géocoder un fichier CSV

POST/v2/geocoding/ban/search/csvmultipart/form-data

Envoyez un fichier CSV d'adresses : vous recevez le même fichier, enrichi de colonnes de résultat. C'est bien plus rapide que des milliers d'appels à search.

Champ du formulaireDescription
datarequisLe fichier CSV, encodé en UTF-8, avec une ligne d'en-tête. Le séparateur (virgule, point-virgule…) est détecté automatiquement.
columnsColonne à utiliser pour la recherche. À répéter pour combiner plusieurs colonnes : numéro, voie, commune… Par défaut, toutes les colonnes sont concaténées.
postcodeNom de la colonne contenant le code postal, utilisé comme filtre.
citycodeNom de la colonne contenant le code INSEE, utilisé comme filtre.
adresses.csv
numero;voie;cp;ville
87;avenue d italie;75013;Paris
10;rue de rivoli;75004;Paris
curl "https://geoservice.example.com/v2/geocoding/ban/search/csv" \
  -H "X-API-Key: $GEOSERVICE_KEY" \
  -F data=@adresses.csv \
  -F columns=numero -F columns=voie -F columns=ville \
  -F postcode=cp \
  -o adresses-geocodees.csv
200 OK · adresses-geocodees.csv
numero;voie;cp;ville;latitude;longitude;result_label;result_score;result_type;result_id;result_housenumber;result_name;result_street;result_postcode;result_city;result_context;result_citycode;result_oldcitycode;result_oldcity;result_district
87;avenue d italie;75013;Paris;48.824031;2.358434;87 Avenue d'Italie 75013 Paris;0.98;housenumber;75113_4754_00087;87;Avenue d'Italie;;75013;Paris;75, Paris, Île-de-France;75113;;;Paris 13e Arrondissement
10;rue de rivoli;75004;Paris;48.8555;2.36041;10 Rue de Rivoli 75004 Paris;0.97;housenumber;75104_8249_00010;10;Rue de Rivoli;;75004;Paris;75, Paris, Île-de-France;75104;;;Paris 4e Arrondissement

Le fichier renvoyé garde vos colonnes et votre séparateur, suivis de latitude, longitude et des colonnes result_*, qui reprennent les propriétés d'un résultat. Il commence par une marque d'ordre des octets (BOM) UTF-8, pour qu'Excel l'ouvre avec les bons accents. Une ligne non trouvée a des colonnes de résultat vides.

Taille des fichiers

Découpez les gros fichiers. La taille d'un fichier et son temps de traitement sont limités. Un fichier trop gros est refusé avec 413 (payload_too_large) ; un envoi trop lent est interrompu avec 408 (request_timeout).

Pour un volume important, envoyez plusieurs fichiers de quelques milliers de lignes, l'un après l'autre plutôt qu'en parallèle.

Traitement par lot

Géocodage inverse d'un fichier CSV

POST/v2/geocoding/ban/reverse/csvmultipart/form-data

Même principe, à partir d'un fichier de coordonnées. Les colonnes lat et lon (ou latitude et longitude) sont reconnues automatiquement.

Requête
curl "https://geoservice.example.com/v2/geocoding/ban/reverse/csv" \
  -H "X-API-Key: $GEOSERVICE_KEY" \
  -F data=@points.csv \
  -o points-adresses.csv
200 OK · points-adresses.csv
id,latitude,longitude,result_latitude,result_longitude,result_label,result_distance,result_type,result_id,result_housenumber,result_name,result_street,result_postcode,result_city,result_context,result_citycode,result_oldcitycode,result_oldcity,result_district
1,48.8240267,2.3584248,48.824031,2.358434,87 Avenue d'Italie 75013 Paris,0,housenumber,75113_4754_00087,87,Avenue d'Italie,,75013,Paris,"75, Paris, Île-de-France",75113,,,Paris 13e Arrondissement

result_distance est en mètres. Les mêmes limites de taille s'appliquent.

Licence

Citer la Base Adresse Nationale

La BAN est publiée sous Licence Ouverte 2.0 (Etalab) : réutilisation libre, à condition de mentionner la source, par exemple :

Mention à afficher
Base Adresse Nationale (BAN), Licence Ouverte 2.0