Aller au contenu principal

Rechercher des Diagnostics de Performance Énergétique (DPE)

L'API Infoparcelle donne accès à la base de données complète des Diagnostics de Performance Énergétique (DPE) de l'ADEME. Ce guide vous explique comment rechercher et analyser les performances énergétiques des logements français.

Vue d'ensemble

L'endpoint /api/v1/dpes permet de rechercher des DPE par différents critères : localisation, étiquettes énergétiques, type de bâtiment, année de construction, consommation, etc.

Fonctionnalités principales

  • ✅ Accès à tous les DPE officiels (ADEME)
  • ✅ Filtrage par étiquettes énergétiques (A à G)
  • ✅ Filtrage par étiquettes GES (A à G)
  • ✅ Filtrage par type de bâtiment (maison, appartement, immeuble)
  • ✅ Filtrage par performances énergétiques
  • ✅ Données de consommation et coûts détaillés
  • ✅ Format JSON ou GeoJSON
  • ✅ Pagination par curseur

Qu'est-ce qu'un DPE ?

Le DPE (Diagnostic de Performance Énergétique) est un document qui évalue :

  • 🔥 Consommation énergétique : Chauffage, eau chaude, refroidissement, éclairage
  • 🌍 Émissions de gaz à effet de serre (GES) : Impact environnemental
  • 💰 Coûts énergétiques annuels : Estimation des dépenses
  • 📊 Étiquettes énergétiques : De A (excellent) à G (passoire thermique)

Recherche basique

Par code postal

curl -X GET \
"https://app.infoparcelle.fr/api/v1/dpes?code_postal=75008&limite=10" \
-H "Authorization: Bearer VOTRE_CLE_API"

Par commune

curl "https://app.infoparcelle.fr/api/v1/dpes?code_municipalite=69123&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Par coordonnées GPS

curl "https://app.infoparcelle.fr/api/v1/dpes?lat=48.8566&lon=2.3522&limite=15" \
-H "Authorization: Bearer VOTRE_CLE_API"

Filtrer par étiquette énergétique

Trouver les passoires thermiques

Les passoires thermiques sont les logements avec étiquettes F ou G (forte consommation énergétique).

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=13001&etiquette_dpe=F,G&limite=30" \
-H "Authorization: Bearer VOTRE_CLE_API"

Étiquettes DPE énergie :

  • A - ≤ 70 kWh/m²/an (Très performant)
  • B - 71-110 kWh/m²/an (Performant)
  • C - 111-180 kWh/m²/an (Assez performant)
  • D - 181-250 kWh/m²/an (Moyennement performant)
  • E - 251-330 kWh/m²/an (Peu performant)
  • F - 331-420 kWh/m²/an (Très peu performant)
  • G - > 420 kWh/m²/an (Passoire thermique)

Trouver les logements performants

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=33000&etiquette_dpe=A,B,C&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Filtrer par émissions de GES

Les émissions de gaz à effet de serre mesurent l'impact environnemental du logement.

curl "https://app.infoparcelle.fr/api/v1/dpes?code_municipalite=69123&etiquette_ges=F,G&limite=25" \
-H "Authorization: Bearer VOTRE_CLE_API"

Étiquettes GES :

  • A - ≤ 6 kg CO2/m²/an (Très faible émission)
  • B - 7-11 kg CO2/m²/an (Faible émission)
  • C - 12-30 kg CO2/m²/an (Émission modérée)
  • D - 31-50 kg CO2/m²/an (Émission moyenne)
  • E - 51-70 kg CO2/m²/an (Émission importante)
  • F - 71-100 kg CO2/m²/an (Émission très importante)
  • G - > 100 kg CO2/m²/an (Émission extrêmement importante)

Filtrer par type de bâtiment

Appartements

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=06000&type_batiment=appartement&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Maisons

curl "https://app.infoparcelle.fr/api/v1/dpes?code_municipalite=31555&type_batiment=maison&limite=30" \
-H "Authorization: Bearer VOTRE_CLE_API"

Types de bâtiments :

  • appartement - Logement dans un immeuble collectif
  • maison - Logement individuel
  • immeuble - Bâtiment collectif complet

Filtrage détaillé par type de bâti

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=44000&bati_type=10&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Codes de bâti détaillés :

Maisons :

  • 1 - Maison (indéterminé)
  • 2 - Maison 1 pièce/studio
  • 3 - Maison 2 pièces
  • 4 - Maison 3 pièces
  • 5 - Maison 4 pièces
  • 6 - Maison 5 pièces et plus

Appartements :

  • 7 - Appartement (indéterminé)
  • 8 - Appartement 1 pièce/studio
  • 9 - Appartement 2 pièces
  • 10 - Appartement 3 pièces
  • 11 - Appartement 4 pièces
  • 12 - Appartement 5 pièces et plus

Filtrer par consommation énergétique

Par consommation totale

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=59000&conso_energie_min=150&conso_energie_max=250&limite=25" \
-H "Authorization: Bearer VOTRE_CLE_API"

Par émissions de GES

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=67000&emission_ges_max=30&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Filtrer par coût énergétique

curl "https://app.infoparcelle.fr/api/v1/dpes?code_municipalite=34172&cout_total_max=1500&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Filtrer par année de construction

Bâtiments anciens

curl "https://app.infoparcelle.fr/api/v1/dpes?code_municipalite=75056&annee_construction_max=1950&limite=30" \
-H "Authorization: Bearer VOTRE_CLE_API"

Bâtiments récents

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=35000&annee_construction_min=2010&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Filtrer par surface

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=13080&type_batiment=appartement&surface_habitable_min=60&surface_habitable_max=100&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Filtrer par date de DPE

DPE récents

curl "https://app.infoparcelle.fr/api/v1/dpes?code_municipalite=44109&date_reception_dpe_min=2024-01-01&limite=30" \
-H "Authorization: Bearer VOTRE_CLE_API"

Type de DPE

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=69000&type_dpe=0&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Types de DPE :

  • 0 - Existant : DPE pour un logement existant
  • 1 - Neuf : DPE pour une construction neuve
  • 2 - Tertiaire : DPE pour un bâtiment tertiaire

Tri et pagination

Trier les résultats

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=75008&champ_tri=conso_energie&ordre_tri=desc&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Champs de tri disponibles :

  • numero_dpe - Numéro unique
  • date_etablissement - Date d'établissement
  • date_reception - Date de réception (défaut)
  • date_visite - Date de visite
  • etiquette_dpe - Étiquette énergétique
  • etiquette_ges - Étiquette GES
  • annee_construction - Année de construction
  • surface_habitable - Surface habitable
  • conso_energie - Consommation énergétique
  • emission_ges - Émissions de GES

Pagination avec curseur

# Page 1
curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=75001&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API" \
-i

# Page 2 (utilisez le curseur retourné dans X-Pagination-Next-Cursor)
curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=75001&limite=20&curseur=CURSEUR" \
-H "Authorization: Bearer VOTRE_CLE_API"

Format GeoJSON

Pour afficher les DPE sur une carte :

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=75008&format=geojson&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [2.3522, 48.8566]
},
"properties": {
"numero_dpe": "2312345678901",
"etiquette_dpe": "C",
"etiquette_ges": "D",
"type_batiment": "appartement",
"surface_habitable": 75.5,
"conso_energie": 185.4,
"emission_ges": 32.8,
"cout_total": 1450
}
}
]
}

Personnaliser les champs retournés

curl "https://app.infoparcelle.fr/api/v1/dpes?code_postal=75008&champs=numero_dpe,etiquette_dpe,etiquette_ges,conso_energie,cout_total,municipalite&limite=20" \
-H "Authorization: Bearer VOTRE_CLE_API"

Champs disponibles :

  • numero_dpe - Numéro unique
  • type_dpe - Type de DPE
  • date_etablissement, date_reception, date_visite, date_fin_validite
  • version - Version du DPE
  • etiquette_dpe, etiquette_ges
  • adresse - Adresse du bien
  • type_batiment, bati_type
  • annee_construction, periode_construction
  • surface_habitable, nombre_niveau_logement, hauteur_sous_plafond
  • conso_energie, conso_chauffage, conso_ecs, conso_refroidissement, conso_eclairage
  • emission_ges, emission_ges_chauffage, emission_ges_ecs
  • cout_total, cout_chauffage, cout_ecs
  • parcelles - Parcelles cadastrales (max 10)
  • municipalite - Informations commune
  • centre - Point GPS

Cas d'usage avancés

1. Cartographie des passoires thermiques

async function cartographierPassoiresThermiques(codeMunicipalite) {
/**
* Cartographie les passoires thermiques d'une commune
*/
const apiKey = process.env.INFOPARCELLE_API_KEY;

const response = await fetch(
'https://app.infoparcelle.fr/api/v1/dpes?' +
new URLSearchParams({
code_municipalite: codeMunicipalite,
etiquette_dpe: 'F,G',
format: 'geojson',
limite: '50'
}),
{
headers: { 'Authorization': `Bearer ${apiKey}` }
}
);

const geojson = await response.json();

// Statistiques
const total = geojson.features.length;
const parEtiquette = { F: 0, G: 0 };

geojson.features.forEach(feature => {
const etiquette = feature.properties.etiquette_dpe;
parEtiquette[etiquette] = (parEtiquette[etiquette] || 0) + 1;
});

return {
geojson,
total,
repartition: parEtiquette
};
}

// Utilisation
const resultat = await cartographierPassoiresThermiques('75108');
console.log(`Total passoires: ${resultat.total}`);
console.log(`Étiquette F: ${resultat.repartition.F}`);
console.log(`Étiquette G: ${resultat.repartition.G}`);

2. Analyse du parc immobilier

async function analyserParcImmobilier(codePostal) {
/**
* Analyser la qualité énergétique du parc immobilier
*/
const apiKey = process.env.INFOPARCELLE_API_KEY;

const response = await fetch(
'https://app.infoparcelle.fr/api/v1/dpes?' +
new URLSearchParams({
code_postal: codePostal,
limite: '50',
}),
{
headers: { 'Authorization': `Bearer ${apiKey}` }
}
);

const dpes = await response.json();

// Répartition par étiquette
const repartition = { A: 0, B: 0, C: 0, D: 0, E: 0, F: 0, G: 0 };
dpes.forEach(dpe => {
if (dpe.etiquette_dpe) {
repartition[dpe.etiquette_dpe]++;
}
});

// Calculs
const total = dpes.length;
const passoiresThermiques = repartition.F + repartition.G;
const performants = repartition.A + repartition.B + repartition.C;
const consoMoyenne = dpes.reduce((sum, dpe) => sum + (dpe.conso_energie || 0), 0) / total;
const coutMoyen = dpes.reduce((sum, dpe) => sum + (dpe.cout_total || 0), 0) / total;

return {
total,
repartition,
passoiresThermiques,
tauxPassoires: (passoiresThermiques / total * 100).toFixed(1) + '%',
performants,
tauxPerformants: (performants / total * 100).toFixed(1) + '%',
consoMoyenne: Math.round(consoMoyenne),
coutMoyen: Math.round(coutMoyen),
};
}

// Utilisation
const analyse = await analyserParcImmobilier('75008');
console.log('Analyse du parc immobilier:');
console.log(` Total DPE: ${analyse.total}`);
console.log(` Passoires thermiques (F+G): ${analyse.passoiresThermiques} (${analyse.tauxPassoires})`);
console.log(` Performants (A+B+C): ${analyse.performants} (${analyse.tauxPerformants})`);
console.log(` Consommation moyenne: ${analyse.consoMoyenne} kWh/m²/an`);
console.log(` Coût moyen: ${analyse.coutMoyen} €/an`);

3. Détection d'opportunités de rénovation

async function detecterOpportunitesRenovation(codePostal) {
/**
* Détecte les opportunités de rénovation énergétique
*/
const apiKey = process.env.INFOPARCELLE_API_KEY;

// Rechercher les passoires thermiques récentes
const response = await fetch(
'https://app.infoparcelle.fr/api/v1/dpes?' +
new URLSearchParams({
code_postal: codePostal,
etiquette_dpe: 'F,G',
date_reception_dpe_min: '2023-01-01',
type_batiment: 'maison',
limite: '50'
}),
{
headers: { 'Authorization': `Bearer ${apiKey}` }
}
);

const dpes = await response.json();

const opportunites = dpes.map(dpe => {
// Calculer le potentiel de gain
const consoActuelle = dpe.conso_energie || 0;
const coutActuel = dpe.cout_total || 0;

// Estimer après rénovation (passage en C)
const consoCible = 145; // Milieu de l'étiquette C
const reductionConso = consoActuelle - consoCible;
const economieAnnuelle = coutActuel * (reductionConso / consoActuelle);

return {
numero_dpe: dpe.numero_dpe,
adresse: dpe.adresse,
etiquette_actuelle: dpe.etiquette_dpe,
conso_actuelle: consoActuelle,
cout_actuel: coutActuel,
economie_potentielle: Math.round(economieAnnuelle),
reduction_conso: Math.round(reductionConso)
};
});

return opportunites.sort((a, b) => b.economie_potentielle - a.economie_potentielle);
}

// Utilisation
const opportunites = await detecterOpportunitesRenovation('69000');
console.log('Top 5 opportunités de rénovation:');
opportunites.slice(0, 5).forEach((opp, i) => {
console.log(`${i + 1}. ${opp.adresse}`);
console.log(` Étiquette: ${opp.etiquette_actuelle}`);
console.log(` Économie potentielle: ${opp.economie_potentielle} €/an`);
console.log(` Réduction conso: ${opp.reduction_conso} kWh/m²/an`);
});

4. Comparaison entre types de bâtiments

async function comparerTypesBuildings(codePostal) {
/**
* Comparer les performances entre maisons et appartements
*/
const apiKey = process.env.INFOPARCELLE_API_KEY;
const types = ['maison', 'appartement'];
const resultats = {};

for (const type of types) {
const response = await fetch(
'https://app.infoparcelle.fr/api/v1/dpes?' +
new URLSearchParams({
code_postal: codePostal,
type_batiment: type,
limite: '50',
}),
{
headers: { 'Authorization': `Bearer ${apiKey}` }
}
);

const dpes = await response.json();

const consoMoyenne = dpes.reduce((sum, d) => sum + (d.conso_energie || 0), 0) / dpes.length;
const coutMoyen = dpes.reduce((sum, d) => sum + (d.cout_total || 0), 0) / dpes.length;
const emissionMoyenne = dpes.reduce((sum, d) => sum + (d.emission_ges || 0), 0) / dpes.length;

resultats[type] = {
total: dpes.length,
consoMoyenne: Math.round(consoMoyenne),
coutMoyen: Math.round(coutMoyen),
emissionMoyenne: Math.round(emissionMoyenne),
};
}

return resultats;
}

// Utilisation
const comparaison = await comparerTypesBuildings('75008');
console.table(comparaison);

Bonnes pratiques

✅ À faire

  1. Filtrer par localisation (code postal ou commune)
  2. Combiner les filtres (étiquette + type + surface)
  3. Utiliser la pagination pour de grands volumes
  4. Vérifier la date de validité des DPE (valides 10 ans)
  5. Analyser les consommations détaillées (chauffage, ECS, etc.)
  6. Calculer les économies potentielles après rénovation
  7. Demander uniquement les champs nécessaires
  8. Cacher les résultats pour les recherches fréquentes

❌ À éviter

  1. ❌ Ignorer le type de DPE (existant vs neuf)
  2. ❌ Ne pas vérifier la date de validité
  3. ❌ Oublier la pagination (limite max : 50)
  4. ❌ Ne pas gérer les valeurs nulles
  5. ❌ Ignorer les différences entre étiquettes DPE et GES

Limites et précisions

  • DPE valides 10 ans : Vérifier la date_fin_validite
  • Champ parcelles limité à 10 parcelles par DPE
  • Maximum 50 résultats par requête (utilisez la pagination)
  • Certains champs peuvent être null selon le type de DPE
  • Les DPE avant 2021 peuvent avoir des données moins complètes (ancienne méthode)

Performances

  • Temps de réponse moyen : < 150ms
  • Cache côté serveur : 15 minutes
  • Rate limit : 1200 requêtes/minute

Voir aussi