API DPE — Diagnostics de Performance Énergétique
Trois endpoints pour accéder aux données DPE d'ADEME (~13 millions de diagnostics) et les croiser avec les transactions DVF. Vous pouvez obtenir la distribution des classes énergétiques d'un marché, et — fait unique — la prime de prix associée à chaque étiquette.
GET /v1/transactions/:id/dpe
/v1/transactions/:id/dpe2 créditsRetourne le diagnostic DPE associé à une transaction DVF précise. La correspondance est tentée d'abord par référence cadastrale (section + no_plan), puis par proximité géographique (50 m) si la première échoue. Les 2 crédits sont remboursés en cas d'absence de correspondance (HTTP 404).
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| id* | string | — | ID de la transaction DVF (paramètre de chemin) |
curl "https://mcp.normi.fr/v1/transactions/123456/dpe" \ -H "X-API-Key: normi_votre_token"
GET /v1/dpe/stats
/v1/dpe/stats10 créditsFiltre de localisation requis : code_postal, commune, code_departement, ou latitude + longitude.
Distribution des classes DPE (A–G) et médianes de consommation énergétique pour une zone géographique. Au moins un filtre de localisation est requis.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| code_postal | string | — | Code postal (ex. '75011') |
| commune | string | — | Nom de commune en majuscules (ex. 'BORDEAUX') |
| code_departement | string | — | Code département (ex. '33') |
| type_batiment | enum | — | maison | appartement | immeuble |
| date_debut | string | — | Filtrer les DPE établis depuis cette date (YYYY-MM-DD) |
curl "https://mcp.normi.fr/v1/dpe/stats?code_postal=75011" \ -H "X-API-Key: normi_votre_token"
Réponse
{
"count": 42300,
"distribution": { "A": 812, "B": 3104, "C": 9240, "D": 14760, "E": 8920, "F": 3740, "G": 1724 },
"pct": { "A": 1.9, "B": 7.3, "C": 21.8, "D": 34.9, "E": 21.1, "F": 8.8, "G": 4.1 },
"median_conso_ep_m2": 187.4,
"median_emission_ges_m2": 41.2,
"filters": { "code_postal": "75011", "type_batiment": null },
"_credits": { "used": 10, "remaining": 490 },
"query_time_ms": 84,
"cache": { "hit": false, "ttl_seconds": 86400 }
}Champs de réponse
| Champ | Type | Description |
|---|---|---|
count | number | Nombre total de DPE dans la zone |
distribution | object | Nombre de DPE par classe (A→G) |
pct | object | Pourcentage de chaque classe |
median_conso_ep_m2 | number | Médiane consommation énergie primaire (kWh/m²/an) |
median_emission_ges_m2 | number | Médiane émissions GES (kgCO2eq/m²/an) |
GET /v1/stats/dpe-premium
/v1/stats/dpe-premium10 créditsFiltre de localisation requis : code_postal, commune, code_departement, ou latitude + longitude.
Analyse la prime ou décote de prix liée à l'étiquette DPE. Croise les données DPE avec les transactions DVF par référence cadastrale, puis calcule le prix médian/m² par classe et son écart à la médiane du marché.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| code_postal | string | — | Code postal (ex. '75011') — obligatoire si commune absent |
| commune | string | — | Commune (ex. 'BORDEAUX') — obligatoire si code_postal absent |
| type_local | enum | — | Maison | Appartement — filtre le côté DVF du croisement |
curl "https://mcp.normi.fr/v1/stats/dpe-premium?code_postal=75011&type_local=Appartement" \ -H "X-API-Key: normi_votre_token"
Réponse
{
"classes": {
"A": { "count": 234, "median_prix_m2": 12800, "p25_prix_m2": 11200, "p75_prix_m2": 14600, "vs_median_pct": 14.2 },
"B": { "count": 891, "median_prix_m2": 11900, "p25_prix_m2": 10400, "p75_prix_m2": 13500, "vs_median_pct": 6.1 },
"C": { "count": 2740, "median_prix_m2": 11400, "p25_prix_m2": 9800, "p75_prix_m2": 13100, "vs_median_pct": 1.7 },
"D": { "count": 4120, "median_prix_m2": 11200, "p25_prix_m2": 9400, "p75_prix_m2": 12900, "vs_median_pct": 0.0 },
"E": { "count": 2210, "median_prix_m2": 10100, "p25_prix_m2": 8600, "p75_prix_m2": 11800, "vs_median_pct": -9.8 },
"F": { "count": 890, "median_prix_m2": 9300, "p25_prix_m2": 7800, "p75_prix_m2": 10700, "vs_median_pct":-16.9 },
"G": { "count": 412, "median_prix_m2": 8800, "p25_prix_m2": 7200, "p75_prix_m2": 10100, "vs_median_pct":-21.4 }
},
"summary": "Class A homes sell at +14.2% vs. median; class G at -21.4%",
"methodology": "Cadastral cross-reference of DPE diagnoses and DVF transactions...",
"_credits": { "used": 10, "remaining": 480 },
"query_time_ms": 42
}Champs par classe (A–G)
| Champ | Type | Description |
|---|---|---|
count | number | Transactions DVF avec DPE matchée |
median_prix_m2 | number | Prix médian/m² pour cette classe (€) |
p25_prix_m2 | number | 1er quartile prix/m² |
p75_prix_m2 | number | 3ème quartile prix/m² |
vs_median_pct | number | Écart à la médiane marché (%). Positif = prime, négatif = décote |
classes peut être null si aucune transaction DVF n'a été croisée avec un DPE dans cette zone. La couverture s'améliore avec le temps à mesure que les DPE post-2021 s'accumulent.