Guides · APIs

APIs données immobilières françaises : le comparatif.

DVF, DPE, BAN, BDNB — quatre sources publiques, quatre APIs différentes. Endpoints, formats, limites et cas d'usage pour développeurs.

7sources publiquescroisables
4APIs RESTsans abonnement
163Madressesgéocodables (BAN)
JSONformat standardREST + CSV bulk

Les données immobilières publiques françaises forment un écosystème riche mais morcelé. DVF recense les transactions, l'ADEME publie les diagnostics énergétiques, la BAN gère les adresses, le CSTB décrit les bâtiments — chacun avec son propre endpoint, son format, ses limitations de débit et ses règles de pagination. Pour un développeur qui veut construire une application immobilière sérieuse, l'intégration de ces quatre sources représente plusieurs semaines de travail.

Ce guide recense les sept principales sources publiques disponibles en 2025, détaille les quatre APIs REST réellement utilisables, et explique pourquoi le croisement natif entre ces sources est plus complexe qu'il n'y paraît.

Vue d'ensemble des APIs publiques

Source Données Endpoint principal Format Mise à jour Limite
DVF Étalab Transactions immobilières files.data.gouv.fr/geo-dvf CSV.gz 2×/an Téléchargement complet uniquement
DVF (communautaire) Transactions par localisation api.cquest.org/dvf GeoJSON/JSON Dépend de DVF ~1 000 résultats/requête
ADEME DPE Diagnostics énergétiques data.ademe.fr/data-fair JSON Mensuelle 10 000/requête, cursor
BAN Géocodage adresses api-adresse.data.gouv.fr JSON Hebdomadaire 50 requêtes/s (IP)
BDNB Bâtiments (DPE, surface, année) files.data.gouv.fr/bdnb CSV.gz Annuelle Téléchargement complet
BPE Équipements (écoles, médecins…) data.gouv.fr CSV Annuelle Téléchargement
Cadastre (API Carto) Parcelles, bâtiments apicarto.ign.fr GeoJSON Continue 100 req/s (clé gratuite)

Les sources BDNB, BPE et DVF Étalab n'exposent pas d'API REST à proprement parler — elles mettent à disposition des fichiers complets à télécharger. Pour des lookups ponctuels ou des intégrations temps réel, seules quatre APIs REST sont exploitables : DVF communautaire, ADEME DPE, BAN et API Carto IGN.

Détail par source

DVF communautaire (api.cquest.org)

Endpoint : https://api.cquest.org/dvf — Licence : Etalab 2.0 (données DGFiP)

Maintenue par Christian Quest, cette API REST expose le registre DVF avec filtrage géographique par commune (code_commune), département ou rayon autour d'un point (paramètres lat, lon, dist en mètres). Elle retourne du GeoJSON — les résultats sont limités à environ 1 000 entrées par requête, sans mécanisme de cursor officiel. Pour des volumes importants, le téléchargement CSV Étalab reste nécessaire. Aucune authentification requise.

# Transactions dans un rayon de 500m autour d'un point
curl "https://api.cquest.org/dvf?lat=48.8566&lon=2.3522&dist=500"

ADEME DPE (data.ademe.fr/data-fair)

Endpoint : https://data.ademe.fr/data-fair/api/v1/datasets/dpe-v2-logements-existants/lines — Licence : ODbL

L'API Data Fair de l'ADEME expose les diagnostics DPE via un endpoint REST paginé par cursor. Chaque requête retourne jusqu'à 10 000 entrées. Le paramètre select permet de restreindre les colonnes retournées. La pagination se fait via le champ next présent dans la réponse JSON, contenant la valeur cursor à passer au paramètre after de la requête suivante. Aucune clé API n'est requise pour un usage raisonnable.

import requests
url = "https://data.ademe.fr/data-fair/api/v1/datasets/dpe-v2-logements-existants/lines"
params = {
    "size": 10000,
    "select": "N°DPE,Code_postal_(BAN),Etiquette_DPE,Surface_habitable_logement",
    "after": ""
}
r = requests.get(url, params=params)
data = r.json()
next_cursor = data.get("next", "")

BAN — Base Adresse Nationale (api-adresse.data.gouv.fr)

Endpoint : https://api-adresse.data.gouv.fr — Licence : ODbL

L'API BAN propose deux modes : géocodage unitaire (GET /search/) et géocodage batch par upload CSV (POST /search/csv/). Le mode unitaire est limité à 50 requêtes par seconde par IP. Le mode batch accepte des fichiers jusqu'à 50 000 adresses en une seule requête. La réponse inclut le champ id (le ban_id) et un score de confiance entre 0 et 1. Le ban_id est l'identifiant pivot pour croiser DVF, DPE et BDNB.

# Géocodage d'une adresse
curl "https://api-adresse.data.gouv.fr/search/?q=8+bd+du+Port+Amiens&limit=1"
# Retourne: { "features": [{ "properties": { "id": "80021_6590_00008", "score": 0.97 } }] }
curl -X POST https://api-adresse.data.gouv.fr/search/csv/ \
  -F data=@adresses.csv \
  -F columns=adresse \
  -F columns=code_postal

API Carto IGN — Cadastre (apicarto.ign.fr)

Endpoint : https://apicarto.ign.fr/api/cadastre — Licence : Étalab 2.0

L'API Carto de l'IGN expose le plan cadastral vectoriel en GeoJSON. Le module /cadastre/parcelle permet de récupérer la géométrie d'une parcelle à partir de son code INSEE, de sa section et de son numéro. Le module /cadastre/batiment retourne les bâtiments d'une parcelle ou d'une emprise géographique. Une clé gratuite est disponible sur geoservices.ign.fr — sans clé, la limite est de 100 requêtes par seconde.

curl "https://apicarto.ign.fr/api/cadastre/parcelle?code_insee=75056§ion=AX&numero=0042"

Pourquoi croiser ces APIs est complexe

Le principal obstacle au croisement de DVF, DPE et BDNB n'est pas technique — c'est l'absence d'identifiant commun natif entre ces sources. DVF enregistre des adresses en texte libre, sous forme de colonnes séparées. L'ADEME DPE utilise un champ d'adresse concaténé, avec des variantes d'orthographe fréquentes. La BDNB référence ses bâtiments par id_bdnb et id_parcelle_cadastrale.

Le ban_id est le pivot universel recommandé. Il s'obtient en géocodant chaque adresse via l'API BAN, qui retourne un identifiant pérenne de la forme code_commune_voie_numero. Une fois ce ban_id obtenu, il peut servir de clé de jointure entre les trois référentiels — à condition que chaque source ait été géocodée avec la même méthode, ce qui représente un travail préalable conséquent sur des dizaines de millions d'enregistrements.

Trois complications pratiques s'ajoutent. Premièrement, le décalage temporel : DVF a un lag de 6 mois. Deuxièmement, la qualité du géocodage varie selon les adresses rurales ou les voies non normalisées. Troisièmement, aucune de ces APIs publiques ne propose de SLA de disponibilité.

Absence de SLA public. Les APIs DVF communautaire, ADEME DPE et BAN sont maintenues sans engagement de niveau de service. Des interruptions, ralentissements ou changements de format non annoncés sont possibles. Pour une application en production, prévoyez un cache local et une gestion robuste des erreurs HTTP.

L'API Intent Analytics résout ce problème en pré-joignant les sept référentiels sur le ban_id. Un seul appel REST retourne : ban_id, dvf_prix_m2 (médiane 24 mois glissants), dpe_classe, bdnb_annee_construction et bpe_score_equipements — avec un indice de confiance par champ et un SLA garanti.

Quel endpoint pour quel besoin ?

Besoin API recommandée Raison
Prix transactions d'une commune DVF Étalab CSV Volume + fiabilité
DPE d'un logement précis ADEME DPE REST Lookup rapide par adresse
Géocoder une liste d'adresses BAN batch CSV Gratuit, 50 000 adresses/appel
Forme d'une parcelle API Carto IGN GeoJSON natif, temps réel
Tout croiser sans dev Intent Analytics API Données pré-jointes, SLA garanti
Analyse nationale bulk Téléchargements CSV Seule option pour gros volumes

Questions fréquentes

Existe-t-il une API officielle pour accéder aux données DVF ?

Oui, via l'API communautaire maintenue par Christian Quest sur api.cquest.org/dvf. Elle expose les transactions DVF filtrables par commune, département ou rayon géographique. L'API officielle DGFiP ne propose pas d'endpoint REST direct — le téléchargement CSV reste la méthode de référence.

L'API DPE de l'ADEME est-elle gratuite ?

Oui. L'API ADEME DPE (data.ademe.fr/data-fair) est gratuite et sans authentification pour un usage raisonnable. Elle utilise la pagination par cursor et retourne jusqu'à 10 000 entrées par requête. Pour des volumes importants, l'export CSV complet est recommandé.

Qu'est-ce que l'API BAN et à quoi sert-elle ?

La BAN (Base Adresse Nationale) dispose d'une API de géocodage gratuite (api-adresse.data.gouv.fr). Elle permet de convertir une adresse textuelle en coordonnées GPS et de récupérer le ban_id (identifiant universel d'adresse), qui sert de clé de jointure entre DVF, DPE et BDNB.

Peut-on croiser DVF, DPE et BDNB via une seule API ?

Pas nativement avec les APIs publiques — chaque source a son propre endpoint. Il faut géocoder d'abord via BAN pour obtenir le ban_id, puis appeler chaque API séparément et joindre les résultats. L'API Intent Analytics unifie ce croisement en un seul appel REST avec tous les indicateurs pré-calculés.

Accéder aux données sans complexité

Pour éviter de gérer 4 APIs, licences et formats différents :

Ressources liées

API & endpoints Les 7 référentiels Lire les comparables DVF