L'API Adresse de data.gouv.fr est gratuite, sans authentification, construite sur la Base Adresse Nationale (BAN) de l'IGN. La BAN est alimentée en continu par les communes, et l'API en réindexe les données deux fois par semaine. Pour une très grande partie des besoins de géocodage français (projet ponctuel, script ETL simple, intégration rapide), elle suffit amplement. C'est une ressource publique de qualité, et il serait malhonnête de prétendre le contraire.
Cet article regarde l'autre côté : les limites concrètes que l'on rencontre quand on industrialise, et le moment précis où une API enrichie, bâtie sur la même BAN mais avec une couche d'information en plus, commence à justifier son coût.
Ce que l'API Adresse fait très bien (et gratuitement)
L'API Adresse expose deux endpoints principaux. /search prend une adresse en texte libre et renvoie une liste de résultats GeoJSON triés par score de confiance. /reverse fait l'opération inverse : à partir de coordonnées WGS84, il retourne l'adresse la plus proche.
Chaque résultat contient ce dont on a besoin pour un géocodage standard : le libellé normalisé (label), un score de confiance entre 0 et 1, le code INSEE de la commune (citycode), le code postal (postcode), les coordonnées lon/lat, et un champ context qui donne le département et la région. La couverture est quasi-exhaustive : la BAN recense plus de 26 millions d'adresses géocodées sur l'ensemble du territoire.
Son vrai atout, c'est l'endpoint /search/csv : il géocode un fichier CSV entier en un seul appel HTTP, gratuitement. Pour du traitement de masse sans enrichissement (normaliser un fichier client, valider un lot d'adresses avant une campagne), c'est l'outil le plus adapté sur le marché français. Pas de quota ni de clé à gérer.
Le débit autorisé est de 50 requêtes par IP et par seconde, ce qui couvre confortablement les cas unitaires et les scripts modérés. La mise en place se compte en minutes.
Là où vous la dépassez
Ces avantages ont des contreparties que l'on découvre en production.
Le débit par IP, pas par compte
50 requêtes par seconde sonnent bien. Mais c'est 50 req/IP/s — et en architecture cloud moderne, plusieurs services ou clients d'une même infrastructure peuvent sortir sur la même IP de sortie (NAT gateway, proxy d'entreprise). Dans ce contexte multi-tenant, le quota se partage implicitement entre tous les appelants qui passent par cette IP. Un pic de trafic côté service A throttle service B. L'API renvoie alors un HTTP 429 avec un retry-after, mais la gestion de ce cas en production ajoute de la complexité.
Pas de code IRIS ni de données Filosofi
L'API Adresse renvoie le code commune INSEE. C'est une maille trop large pour les grandes villes : Paris 15e fait près de 230 000 habitants. Pour descendre au quartier (~2 000 habitants), il faut le code IRIS, que l'API gouv ne produit pas.
Les indicateurs socio-démographiques INSEE Filosofi (revenus médians, structure des ménages, densité de population) sont publiés à la maille IRIS et au carreau de 200 m. Sans IRIS, impossible de croiser une adresse avec ces données en temps réel. C'est le cas d'usage qui revient le plus souvent dans mes projets depuis vingt-cinq ans : scoring géographique, ciblage retail, étude de zone de chalandise.
Pas de verdict de matching exploitable
L'API Adresse renvoie un score brut, qui varie entre 0 et 1 selon la qualité de la correspondance. Ce score n'est pas documenté comme une décision binaire. C'est une mesure de similarité, pas un verdict opérationnel. Définir un seuil d'acceptation dans un pipeline ETL revient à calibrer empiriquement ce seuil, ce qui prend du temps et génère des faux positifs sur les adresses ambiguës.
Un pipeline industriel préfère généralement un verdict explicite (match_exact / match_probable) qui encode déjà la logique de décision et réduit le code de gestion des cas limites. L'article sur la validation d'adresses en Python détaille les implications pratiques dans un pipeline ETL.
Pas de SLA, pas de support dédié, pas d'accès MCP
L'API Adresse est un service public maintenu en mode best-effort. Il n'y a pas de SLA publié, pas de support dédié pour les intégrations en production, et pas d'accès MCP pour les agents LLM. Si votre pipeline dépend du géocodage en temps réel et que l'API est indisponible ou lente, vous n'avez pas d'interlocuteur.
Tableau comparatif
| Dimension | API Adresse (data.gouv.fr) | TrustyData |
|---|---|---|
| Prix | Gratuit | Payant (plans) |
| Authentification | Aucune | Clé API Bearer |
| Référentiel | BAN (IGN) | BAN (IGN) — même base |
| Géocodage direct / inverse | Oui | Oui |
| Traitement par fichier (CSV) | Oui (/search/csv) |
Non (une adresse par requête) |
| Débit | 50 req/IP/s (HTTP 429 au-delà) | Quota mensuel selon plan, sans limite par seconde |
| Code INSEE commune | Oui | Oui |
| Code IRIS | Non | Oui (plan Growth+) |
| Carreau Filosofi 200 m | Non | Oui (plan Business) |
| Verdict de matching | Non (score brut) | Oui (match_exact / match_probable) |
| Accès LLM (MCP) | Non | Oui (mcp.trustydata.app) |
| Support | Communauté open data (best-effort) | Support dédié + forum community.trustydata.fr + assistant IA |
Prêt à intégrer l'API TrustyData ?
Quand l'API gouv suffit / quand passer à une alternative
La décision est simple une fois qu'on a clarifié le besoin.
Restez sur l'API Adresse gouv si :
- votre besoin est du géocodage simple, sans enrichissement infra-communal
- le projet est ponctuel ou expérimental
- vous devez traiter un fichier CSV en volume : le /search/csv est imbattable pour ça
- votre budget est zéro et vous n'avez pas besoin de support contractuel
Passez à une API enrichie si :
- vous avez besoin du code IRIS ou des données Filosofi pour le scoring géographique, le ciblage ou la qualification de prospect
- votre pipeline exige un verdict de matching exploitable (match_exact / match_probable) sans avoir à calibrer un seuil empirique
- vous opérez en multi-tenant derrière une IP partagée et le throttle par IP est un risque opérationnel
- vous avez besoin d'un SLA et d'un support réactif
- vos agents LLM ont besoin d'un accès MCP natif via mcp.trustydata.app
Sur la recherche de proximité, les deux APIs ne font pas la même chose. L'API gouv expose /reverse qui renvoie l'adresse la plus proche d'un point géographique, utile pour l'affichage cartographique. TrustyData couvre un cas distinct : filtrer des adresses par rayon autour d'un point de référence avec des critères métiers additionnels (scoring, qualification de prospect, zone de chalandise). Ces usages sont complémentaires, pas substituables.
La même adresse via les deux APIs
Le même appel, sur la même adresse, via les deux APIs :
import requests
adresse = "29 rue des Pyramides, Paris 75001"
# ── API Adresse gouv (gratuit, sans clé) ──────────────────────────────
r_gouv = requests.get(
"https://api-adresse.data.gouv.fr/search/",
params={"q": adresse, "limit": 1},
timeout=5,
)
r_gouv.raise_for_status()
props = r_gouv.json()["features"][0]["properties"]
print("=== API Adresse (data.gouv.fr) ===")
print(f"Libellé : {props['label']}")
print(f"Score : {props['score']:.3f}")
print(f"Code INSEE : {props['citycode']}")
# → Pas de code IRIS, pas de verdict de matching
# ── API TrustyData (clé Bearer, même BAN en dessous) ─────────────────
r_trusty = requests.post(
"https://api.trustydata.app/services/v1/address/verify",
headers={"Authorization": "Bearer VOTRE_CLE_API"},
json={"q": adresse, "max_results": 1},
timeout=5,
)
r_trusty.raise_for_status()
match = r_trusty.json()["matches"][0]
print("\n=== API TrustyData ===")
print(f"Libellé : {match['adresse']}")
print(f"Verdict : {match['verdict']}") # match_exact | match_probable
print(f"Code IRIS : {match['geocoding']['code_iris']}")
print(f"Nom IRIS : {match['geocoding']['nom_iris']}")
print(f"Type IRIS : {match['geocoding']['type_iris']}")
# En plan Business, match['statistical_grid'] donne le carreau Filosofi 200 m
Les deux APIs lisent la même Base Adresse Nationale. La différence se lit sur les trois dernières lignes : le verdict opérationnel et le code_iris n'existent pas dans la réponse gouv. Pour un géocodage simple, cette différence ne justifie pas le coût. Pour un pipeline de scoring ou une intégration IRIS, elle le justifie.
Pour résumer
L'API Adresse de data.gouv.fr est le bon défaut pour le géocodage français : gratuite, sans friction, et son /search/csv est imbattable pour le traitement de fichiers en volume. Il n'y a aucune raison de la remplacer si votre besoin s'arrête au géocodage et à la validation géographique de base.
TrustyData se justifie quand on a besoin de ce qui n'existe pas dans l'API gouv : l'enrichissement IRIS et Filosofi, un verdict de matching directement exploitable dans un pipeline, un quota sans throttle par IP, un SLA ou un support dédié, et un accès MCP pour des agents LLM. Dans les deux cas, c'est la même BAN qui fait le travail de géolocalisation.
Vous pouvez tester le comportement sur une adresse réelle sur la démo publique ou consulter les tarifs pour choisir le plan adapté à votre volume.