Astuces · Mis à jour le

Comment géocoder gratuitement une adresse dans vos applications ?

Vous avez une adresse et il vous faut ses coordonnées GPS ? Inutile de passer par Google Maps : l’État met à disposition une API de géocodage gratuite, ouverte et mise à jour chaque semaine.

Une API publique et gratuite

Le service s’appelle l’API de géocodage de la Géoplateforme. Il est porté par l’IGN. À partir d’une adresse complète, il renvoie sa latitude et sa longitude.

Il s’appuie sur trois sources de données publiques :

  • Les adresses viennent de la Base Adresse Nationale (BAN). L’index est actualisé chaque semaine.
  • Les lieux nommés (mairies, cimetières, gares…) viennent des « points d’intérêt » de la BD TOPO®, actualisée chaque trimestre.
  • Les parcelles cadastrales viennent du Parcellaire Express (PCI), actualisé chaque trimestre.

Comment l’utiliser ?

Tout passe par une seule adresse :

https://data.geopf.fr/geocodage/search

Aucune clé d’API n’est nécessaire. Vous pouvez l’appeler depuis n’importe quel langage : JavaScript, TypeScript, Go, PHP, Python… L’API autorise aussi les appels depuis un navigateur (CORS ouvert).

Il suffit de passer votre recherche dans le paramètre q. Quelques exemples :

/search?q=73 Avenue de Paris Saint-Mandé
/search?q=cimetière Vincennes
/search?q=75056104AE0003
/search?q=73 Avenue de Paris Saint-Mandé&limit=1

Le dernier exemple ajoute limit=1 pour ne garder que le meilleur résultat.

En JavaScript, un appel tient en quelques lignes :

const url = new URL("https://data.geopf.fr/geocodage/search");
url.searchParams.set("q", "73 Avenue de Paris Saint-Mandé");
url.searchParams.set("limit", "1");

const response = await fetch(url);
const data = await response.json();

const [longitude, latitude] = data.features[0].geometry.coordinates;
console.log(latitude, longitude);

Que contient la réponse ?

L’API renvoie du GeoJSON : une liste de résultats classés par pertinence. Pour chaque résultat, deux champs vous intéressent :

  • properties.score : un indice de confiance entre 0 et 1. Plus il est proche de 1, plus le résultat correspond à votre recherche.
  • geometry.coordinates : les coordonnées GPS, dans l’ordre [longitude, latitude].

Attention à un piège classique : la réponse contient aussi des champs x et y. Ce ne sont pas des coordonnées GPS, mais des coordonnées en Lambert 93, la projection officielle en France métropolitaine. Pour placer un point sur une carte Leaflet ou OpenLayers, utilisez geometry.coordinates.

Ce qu’il faut savoir avant de se lancer

  • Une limite de débit : 50 requêtes par seconde depuis une même adresse IP. C’est largement suffisant pour la plupart des applications.
  • Le géocodage inverse existe aussi : l’adresse /geocodage/reverse fait le chemin inverse. Vous lui donnez des coordonnées, elle vous renvoie l’adresse la plus proche.
  • Le traitement par lot : pour géocoder un fichier CSV entier, l’API accepte des envois groupés. Le site adresse.data.gouv.fr propose même une interface toute prête pour le faire sans coder.
  • La documentation complète est disponible dans le Swagger de l’API.

En résumé

Avec cette API, plus besoin de Google Maps ni d’un service payant pour géocoder une adresse en France. Elle est gratuite, sans inscription, et ses données sont mises à jour par l’État.

À lire aussi

Articles sur le même sujet