Sommaire
L'idée tient en une phrase : l'annonce cache l'adresse, mais elle affiche presque toujours son étiquette énergétique. Or le DPE est public — avec l'adresse, la surface, l'année et la consommation. Il suffit donc d'inverser le raisonnement : on ne cherche plus le DPE d'un bien dont on connaît l'adresse, on se sert du DPE comme clé pour retrouver un bien dont on ne sait rien.
Sur un parc mesuré de 1 241 annonces, cette méthode aboutit à une adresse exploitable dans 42,4 % des cas : taux réel, refus compris.
Pourquoi l'adresse manque presque toujours
L'anonymat n'est pas un oubli, c'est une décision. Une annonce sans adresse empêche de contourner l'agence, de retrouver le propriétaire ou de comparer avec le mandat voisin. Pour un vendeur, l'adresse est une partie de la valeur commerciale de l'annonce — et aucun texte n'impose de l'indiquer.
Le problème : toute l'analyse sérieuse se joue à l'échelle de la parcelle — zone du PLU, emprise constructible, hauteur, servitudes, risque inondation, ventes comparables. Une annonce qui dit seulement « Bons-en-Chablais (74890) » ne permet aucune de ces vérifications. Elle donne un prix et une surface, c'est-à-dire une intuition.
Mais il existe une asymétrie que peu de gens exploitent : ce que l'annonce cache est public ailleurs. Les diagnostics sont versés en open data à l'ADEME avec l'adresse BAN, la surface habitable, l'année, les étiquettes énergie et GES, la consommation et l'énergie de chauffage. Un DPE n'est pas une lettre : c'est une fiche d'identité du logement. Et 1 067 annonces sur 1 241 (86 %) citent la leur dans le texte.
La méthode en 5 étapes
Les cinq étapes sont reproductibles à la main, avec un navigateur et l'API publique de l'ADEME. Chacune réduit le bruit de la précédente.
1. Extraire le DPE de la description
Ne cherchez pas dans les champs structurés : regardez le texte. Deux expressions couvrent l'essentiel.
DPE\s*:?\s*([A-G]) → « DPE E », « DPE : C »
classe\s+(?:énergie|énergétique)\s*:?\s*([A-G]) → « classe énergie D »
Piège de lecture immédiat : beaucoup d'annonces écrivent « DPE E GES E ». La première lettre est l'étiquette énergie, la seconde le GES. Les confondre envoie la requête sur la mauvaise étiquette. Le GES figure dans 96,7 % des descriptions et départage deux diagnostics de même classe énergétique mais de chauffage différent.
Extrayez en même temps tout le chiffré : surface, année, nombre de niveaux (« plain-pied » = 1, « duplex » = 2, « R+1 » = 2, « triplex » = 3, « N étages » = N), consommation et énergie de chauffage. Les couvertures mesurées disent ce qui est exploitable : 82 % pour la surface, 81 % pour l'année, 82 % pour les niveaux, 22 % pour le chauffage, 7 % pour la consommation. Extraction locale : 1 241 annonces en 6,9 secondes, zéro appel réseau.
Exemple réel, à Bons-en-Chablais : « MAISON 5 PIÈCES 135 M² … 604 m² 1993 3 étages … DPE E GES E ». On y lit l'étiquette (E), la surface habitable (135 m²), l'année (1993), les niveaux (3) — et 604 m² de terrain, à ne pas confondre avec l'habitable.
2. Interroger la base ADEME
Le jeu de données à interroger est dpe03existant, exposé par l'API data-fair de l'ADEME. Malgré son nom, il est alimenté en continu : le diagnostic le plus récent de Gex datait du 16 octobre 2026 au moment de ces mesures. Aucune clé d'API n'est nécessaire.
Première opération : convertir la commune en code INSEE, seul identifiant stable — le nom varie (accents, majuscules, suffixe « , France ») entre l'annonce et la base.
GET https://geo.api.gouv.fr/communes?nom=Bons-en-Chablais&fields=code,nom
→ [{ "code": "74043", "nom": "Bons-en-Chablais", "codesPostaux": ["74890"] }]
La requête utile combine INSEE, étiquette et fourchette de surface :
GET https://data.ademe.fr/data-fair/api/v1/datasets/dpe03existant/lines
?qs=code_insee_ban:"74043" AND etiquette_dpe:(E)
AND surface_habitable_logement:[122 TO 148]
AND annee_construction:[1989 TO 1997]
&select=numero_dpe,etiquette_dpe,adresse_ban,surface_habitable_logement,
annee_construction,periode_construction,nombre_niveau_logement,
conso_5_usages_par_m2_ep,statut_geocodage,_geopoint
La surface est prise à ±10 % ; l'année à ±4 ans, car elle est presque toujours arrondie dans une annonce alors que la période du DPE — « 1989-2000 » — est un bien meilleur signal. L'API tolère une requête par seconde : c'est ce qui fixe le débit réel de la chaîne.
3. Éliminer par élimination successive
La tentation est de filtrer au plus strict. C'est une erreur. Les données d'une annonce sont sales — surface arrondie, année approximative, « 3 étages » qui veut parfois dire « R+2 » — et un filtre strict rejette la bonne réponse avec le bruit. La bonne approche n'est pas un entonnoir binaire, c'est un vote pondéré : chaque critère ajoute ou retire des points.
| Critère | Concorde | Contredit |
|---|---|---|
| Surface (±10 %) | +45 à +50 (écart ≤ 2 %) +32 à +38 (≤ 5 %) +18 à +22 (≤ 10 %) | −25 au-delà de 10 % |
| Année de construction | +25 (exacte) +16 à +18 (± 2 ans) +8 à +13 (± 5 ans) | −3 si l'année est inconnue |
| Période de construction | +20 | −20 |
| Nombre de niveaux | +18 | −12 |
| Consommation kWh/m²/an | +40 (écart ≤ 5 %) +22 (≤ 15 %) | −25 au-delà de 40 % |
| Étiquette GES | +20 | −25 |
| Énergie de chauffage | +15 | −15 |
| Type de bâtiment | +12 | −100 (éliminatoire) |
| Qualité du géocodage | +8 | −30 (non géocodé) |
| Candidat unique | +30 | — |
| Fraîcheur du diagnostic | +6 (≤ 3 ans) | −4 (> 10 ans) |
Deux critères comptent particulièrement. La consommation est le plus discriminant quand elle est connue des deux côtés — 3 % d'écart, c'est presque une identification — mais elle n'apparaît que dans 7 % des annonces. Le nombre de niveaux est le plus discriminant des critères fréquents : « plain-pied », « duplex », « R+1 » sont rares, et leur concordance ne doit rien au hasard.
L'effet cumulé est brutal. Sur Bons-en-Chablais : 968 diagnostics dans la commune, 130 de la bonne étiquette, 8 dans la fourchette de surface, un seul après le filtre d'année.
Deux garde-fous. Une surface annoncée supérieure à 400 m² est presque toujours le terrain ou un domaine : le critère est ignoré, jamais appliqué, sinon il pénalise les biens à grand terrain. Et si la requête serrée ne renvoie aucun candidat, il faut élargir par paliers (surface ±35 %, puis sans surface) plutôt que conclure à l'absence — en plafonnant la confiance au palier atteint.
4. Scorer la confiance (et savoir renoncer)
La somme des points donne un score, et ce score décide de tout. Ce n'est pas un pourcentage : il n'a pas de plafond dur et dépasse 100 sur un cas très net (103 ci-dessous). Deux seuils comptent :
- 75 et plus : confiance haute, adresse retenue ;
- 50 à 74 : confiance moyenne, adresse retenue avec réserve ;
- moins de 50 : adresse non écrite.
Seconde règle, moins intuitive et plus importante : si deux candidats sont à moins de trois points d'écart, on refuse. Un score élevé partagé par deux logements ne désigne rien — il dit seulement que l'annonce ne contient pas l'information nécessaire pour trancher. Une seule exception : si tous les ex æquo portent la même adresse normalisée, ce n'est pas deux biens mais un même logement diagnostiqué deux fois. L'adresse est alors certaine, c'est le DPE qui est en double.
Ces règles ont un coût, et il faut l'assumer : une adresse manquante fait perdre une analyse, une fausse adresse envoie un professionnel visiter une maison qui n'est pas à vendre.
Le détail qui change tout. Le score a longtemps été calculé par paliers entiers : deux candidats de surface également « exacte » marquaient le même total, tombaient à égalité, et l'annonce était refusée pour ambiguïté. C'était la première cause d'adresses perdues — 214 annonces. Rendre le bonus continu à l'intérieur de chaque palier, sans changer de tranche, en a récupéré une dizaine sans en dégrader une seule. Autre bug instructif : le test ges_bien in "ABCDEFG" vaut True pour une chaîne vide en Python — tout candidat sans GES marquait +20 gratuitement.
5. Vérifier avant de se déplacer
Une adresse scorée n'est pas vérifiée. Trois contrôles coûtent deux minutes et évitent un déplacement inutile :
- Le cadastre : parcelle, forme, emprise du bâti. Une maison de 135 m² sur 604 m² de terrain doit s'y voir.
- Street View : type de bâti, époque apparente, environnement. Une maison « isolée » au milieu d'un lotissement est un signal d'erreur.
- DVF : ventes de la parcelle et du voisinage. Une vente récente au même prix change la lecture de l'annonce.
Un point technique : statut_geocodage dit si l'adresse a été résolue à la parcelle ou seulement à la commune. Un diagnostic « non géocodé » reçoit −30 points, à juste titre — le point géographique est imprécis. Mais la chaîne de caractères peut être parfaitement juste, comme ci-dessous : le contrôle visuel tranche, pas le drapeau.
Un cas réel, chiffré
L'annonce : une maison de 5 pièces à Bons-en-Chablais (74890), 135 m², 549 000 €, « 1993, 3 étages, terrain 604 m², DPE E GES E ». Aucune adresse. La requête ne laisse qu'un candidat sur 968 diagnostics.
| Annonce | DPE (ADEME) | |
|---|---|---|
| Surface habitable | 135 m² | 134,1 m² — écart 0,7 % |
| Année | 1993 | 1997 |
| Période | — | 1989-2000 (concordante) |
| Niveaux | 3 | 3 |
| Étiquette énergie | E | E |
| Consommation | non citée | 291,9 kWh/m²/an |
| Chauffage | non cité | Bois – bûches |
Résultat : 172 Impasse de Champs Gervais, 74890 Bons-en-Chablais, un candidat, score 103, confiance haute. Quatre critères indépendants concordent — surface, période, niveaux, type de bâtiment — et l'unicité dans la commune ajoute 30 points. Le diagnostic porte pourtant le malus maximal de géocodage (−30) et reste au-dessus du seuil haut : c'est le cumul qui décide, jamais un critère isolé. Et l'écart d'année (1993 annoncé, 1997 au DPE) montre pourquoi il faut comparer la période avant l'année : un filtre strict aurait rejeté la bonne réponse.
Les 4 pièges qui font échouer la méthode
Ces quatre erreurs ont toutes été rencontrées en production. Chacune produit le même symptôme trompeur : zéro candidat, donc « aucun DPE dans cette commune ».
1. Le code postal est stocké en entier
code_postal_brut vaut 1170, pas "01170" : le zéro initial a disparu au stockage. Comparez ou affichez la valeur telle quelle et vous obtenez « 1170 », pendant qu'un appariement sur la chaîne "01170" échoue silencieusement. Le champ voisin code_postal_ban est une chaîne à cinq caractères : utilisez-le quand il existe, et formatez l'autre (str(int(v)).zfill(5)) sinon.
2. Un seul champ invalide annule la requête entière
Demander un champ absent du jeu de données fait échouer toute la sélection. L'API répond et explique même pourquoi :
select=numero_dpe,latitude
→ HTTP 400 — « Impossible de sélectionner le champ latitude,
il n'existe pas dans le jeu de données. »
Le piège n'est pas l'API, c'est le client. Un try/except qui transforme l'erreur HTTP en {"total": 0, "results": []} efface le message. Vous ne voyez plus une requête invalide, vous voyez une commune sans DPE. Sur dpe03existant, ces champs suffisent à tout casser : annee_construction_dpe, type_batiment_principal, latitude, longitude, n_dpe. Le point géographique est dans _geopoint, au format « lat,lon ».
3. Le plein texte sur une commune ne ramène rien d'utile
Chercher q=Saint-Vérand ne renvoie pas une erreur : au moment de nos tests, la requête répond 200 avec 1 879 100 résultats, le moteur ayant cherché « Saint » ou « Verand » séparément. Avec ou sans accent, même résultat : inutilisable. La seule approche fiable est un filtre exact — code_insee_ban:"74043", ou à défaut nom_commune_brut:"GEX", en majuscules.
4. Une surface de 600 m² n'est pas une surface habitable
La surface d'une annonce est souvent le terrain. « Maison 135 m², terrain 604 m² » se lit bien, mais « propriété de 239 m² » ou « 684 m² » désignent parfois le bâti total, parfois la parcelle. Comparer une telle surface à l'habitable du DPE élimine le bon candidat avec un écart de 300 %. Trois règles : ignorer le critère au-delà de 400 m², privilégier une formulation explicite (« N m² habitables »), et à défaut seulement recalculer la surface en divisant le prix par le prix au m² affiché — « €/m² » uniquement, résultat borné entre 20 et 400 m².
Ce que cette méthode ne peut pas faire
Sur les 1 241 annonces mesurées, le bilan réel :
| Confiance | Annonces | Suite donnée |
|---|---|---|
| Haute | 282 | adresse écrite |
| Moyenne | 244 | adresse écrite, avec réserve |
| Faible | 306 | refusée |
| Aucune | 409 | pas de DPE, ou aucun candidat |
Soit 526 adresses exploitables et 715 annonces pour lesquelles la méthode ne donne rien. Les causes sont connues : plus d'une annonce sur dix ne cite aucun DPE — impasse totale ; certaines communes ou diagnostics sont absents de la base ; d'autres annonces tombent sur deux candidats strictement identiques et le refus est maintenu. Les bâtiments collectifs ajoutent leur ambiguïté, avec un diagnostic par logement.
Certaines annonces se trompent : surface arrondie, année approximative, DPE recopié d'un ancien diagnostic. La méthode rapproche deux descriptions, elle ne garantit pas que la description soit vraie. D'où l'étape 5.
Enfin, l'usage. Retrouver une adresse pour préparer une analyse — zone PLU, parcelle, servitudes, DVF — relève du travail d'analyse immobilière. La retrouver pour démarcher le propriétaire en contournant l'agence change la nature de la démarche. La donnée est publique ; l'usage ne l'est pas.
Cette méthode est faisable à la main en une vingtaine de minutes par annonce. C'est précisément pour ça qu'elle s'automatise : vingt minutes fois mille annonces, personne ne le fait. Le travail n'est pas de connaître l'astuce, il est de la tenir mille fois de suite sans se tromper.
Reste ensuite la partie qui intéresse un marchand de biens : zone du PLU, emprise constructible, marge, offre maximale. Tout commence par une rue, un numéro et une parcelle.
Questions fréquentes
Peut-on retrouver l'adresse d'une annonce immobilière sans DPE ?
Non, pas de façon fiable. Le DPE est la seule clé qui relie une annonce anonyme à un logement identifié dans une base publique. Sans étiquette, il ne reste que des indices visuels — photos, environnement, prix au m² — insuffisants pour engager un déplacement. Sur le parc mesuré, 14 % des annonces n'ont pas de DPE : impasse.
Les données DPE sont-elles publiques et librement consultables ?
Oui. L'ADEME publie les diagnostics en open data, sans clé d'API, sur le jeu de données dpe03existant : adresse, commune, code INSEE, surface, année, étiquettes énergie et GES, consommation, chauffage. C'est cette base qui rend le croisement possible.
Pourquoi l'adresse n'est-elle pas affichée alors que le DPE est connu ?
Parce que le score n'atteint pas le seuil. En dessous du palier moyen, plusieurs logements de la commune correspondent encore à l'annonce et aucun critère ne les départage. L'adresse est alors masquée : une fausse adresse coûte plus cher qu'une adresse manquante.
Cette méthode est-elle légale et compatible avec le RGPD ?
Les DPE sont des données publiques : les consulter et les croiser est licite. Ce qui change de nature, c'est l'usage. Préparer une analyse — zone PLU, parcelle, DVF, contraintes — reste dans le cadre d'une activité d'analyse immobilière. Démarcher le propriétaire, contourner une agence ou constituer un fichier de contacts change de finalité.
Combien de temps prend la méthode, à la main puis automatisée ?
Environ 20 minutes par annonce à la main : lecture, géocodage, requête ADEME, comparaison, contrôle cadastre et Street View. L'API accepte une requête par seconde, de quoi traiter un millier d'annonces en quelques minutes une fois la chaîne scriptée. C'est cet écart qui justifie l'automatisation, pas la complexité de la méthode.