Skip to main content
Match DPE à une annonce immobilière
curl --request POST \
  --url https://api.fluximmo.io/v2/protected/opendata/dpe/match \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "filters": {
    "code_departement_ban": "75",
    "code_insee_ban": "75113",
    "code_postal_ban": "75013",
    "numero_dpe": "2600E0590119C",
    "type_batiment": "appartement",
    "surface_habitable_logement": {
      "min": 57
    },
    "date_etablissement_dpe": {
      "from": "2023-06-15"
    },
    "location": {
      "lat": 48.8566,
      "lon": 2.3522,
      "distance": "10km"
    }
  },
  "size": 5,
  "scoring_targets": {
    "conso_5_usages_par_m2_ep": 210,
    "emission_ges_5_usages_par_m2": 18,
    "etiquette_dpe": "D",
    "etiquette_ges": "C",
    "nombre_niveau_immeuble": 6,
    "numero_etage_appartement": 3,
    "periode_construction": "1948-1974",
    "nombre_niveau_logement": 2
  }
}
'
{
  "data": [
    {
      "score": 85.3,
      "confidence": "HIGH",
      "dpe": {
        "numero_dpe": "<string>",
        "adresse_ban": "<string>",
        "location": {
          "lat": 48.8566,
          "lon": 2.3522
        },
        "etiquette_dpe": "<string>",
        "etiquette_ges": "<string>",
        "conso_5_usages_par_m2_ep": 123,
        "emission_ges_5_usages_par_m2": 123,
        "surface_habitable_logement": 123,
        "date_etablissement_dpe": "2023-06-15",
        "date_fin_validite_dpe": "2033-06-15"
      }
    }
  ],
  "meta": {
    "ambiguous": false,
    "total": 3
  }
}

À quoi ça sert

POST /v2/protected/opendata/dpe/match recherche, parmi les DPE de la base ADEME, les candidats les plus proches d’une annonce immobilière donnée. Contrairement à DPE Search qui renvoie une liste paginée et filtrée, Match renvoie les meilleurs candidats classés par similarité et accompagnés d’un score. Le payload sépare deux notions à ne pas confondre :
  • filters (pré-filtre dur) — exclut les candidats qui ne correspondent pas (géographie, plage de surface, type de bâtiment, plage de dates, codes ADEME/BAN). Un candidat hors de ces bornes n’apparaît jamais dans la réponse.
  • scoring_targets (ancres douces) — n’excluent rien. Elles influencent uniquement le classement : un candidat proche d’une ancre remonte dans le ranking, un candidat éloigné reste présent mais plus bas.
Chaque résultat porte un score normalisé de 0 à 100 et un confidence (HIGH, MEDIUM, LOW, REJECT). L’objet meta indique le nombre total de candidats trouvés et un drapeau ambiguous, vrai lorsque les deux premiers scores diffèrent de 5 points ou moins — utile pour signaler un match incertain à arbitrer manuellement. Cas d’usage typiques : retrouver le DPE exact d’une annonce, rapprocher un lot d’annonces de leurs DPE pour enrichir un portefeuille, ou estimer l’étiquette énergétique probable d’un bien à partir de ses caractéristiques.

Payload

Le corps de requête est un objet JSON.
ChampTypeObligatoireSens
filtersobjectNonPré-filtre dur. Voir le détail ci-dessous.
sizeintegerNonNombre de candidats retournés (1–20, défaut 5).
scoring_targetsobjectNonAncres de scoring. Voir le détail ci-dessous.

filters (pré-filtre dur)

ChampTypeSens
code_departement_banstringCode département BAN (2–3 caractères, ex. 75, 2A, 974).
code_insee_banstringCode INSEE de la commune (5 caractères).
code_postal_banstringCode postal (5 chiffres).
numero_dpestringNuméro unique du DPE attribué par l’ADEME. Recherche par identifiant.
type_batimentstringappartement, maison ou immeuble.
surface_habitable_logementobjectPlage de surface habitable en m² : { "min": number, "max": number }.
date_etablissement_dpeobjectPlage de dates d’établissement : { "from": "YYYY-MM-DD", "to": "YYYY-MM-DD" }.
locationobjectFiltre géographique : { "lat": number, "lon": number, "distance": "10km" }. Unités acceptées : m, km, mi, ft, yd, nmi.

scoring_targets (ancres douces)

ChampTypeSens
conso_5_usages_par_m2_epnumberConsommation cible en kWh/m²/an. Rapproche les candidats à conso proche.
emission_ges_5_usages_par_m2numberÉmissions GES cibles en kgCO₂/m²/an.
etiquette_dpestringÉtiquette énergie cible (AG). Bonus de score si correspondance.
etiquette_gesstringÉtiquette GES cible (AG). Bonus de score si correspondance.
nombre_niveau_immeublenumberNombre de niveaux de l’immeuble (0–200).
numero_etage_appartementnumberÉtage de l’appartement (−10 à 200 ; valeur négative = sous-sol).
periode_constructionstringPériode de construction cible (ex. avant 1948, 1948-1974, après 2021).
nombre_niveau_logementnumberNombre de niveaux du logement (0–200).

Réponse

L’API retourne un objet { data, meta }. data est un tableau de candidats classés par score décroissant. Chaque entrée contient :
ChampTypeSens
scorenumberScore de similarité normalisé (0–100).
confidencestringNiveau de confiance : HIGH, MEDIUM, LOW ou REJECT.
dpeobjectChamps clés du DPE retenu (projection Match).
L’objet dpe expose notamment numero_dpe, adresse_ban, location ({ lat, lon }), etiquette_dpe, etiquette_ges, conso_5_usages_par_m2_ep, emission_ges_5_usages_par_m2, surface_habitable_logement, date_etablissement_dpe et date_fin_validite_dpe. meta contient :
ChampTypeSens
totalnumberNombre total de candidats trouvés (au-delà de size).
ambiguousbooleantrue si les deux premiers scores diffèrent de 5 points ou moins.
Le contrat exact est documenté plus bas par le bloc OpenAPI (POST /v2/protected/opendata/dpe/match).

Exemple

Recherche par numéro de DPE

Lookup direct par identifiant ADEME : la recherche court-circuite le scoring et retourne le DPE correspondant.
curl -X POST https://api.fluximmo.io/v2/protected/opendata/dpe/match \
  -H "x-api-key: $FLUXIMMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "code_departement_ban": "75",
      "code_postal_ban": "75009",
      "numero_dpe": "2675E0698907D"
    }
  }'

Match multi-critères avec ancres de scoring

Pré-filtre dur sur la zone, le type et la plage de surface, puis classement affiné par quatre ancres douces.
curl -X POST https://api.fluximmo.io/v2/protected/opendata/dpe/match \
  -H "x-api-key: $FLUXIMMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "code_departement_ban": "75",
      "code_postal_ban": "75011",
      "type_batiment": "appartement",
      "surface_habitable_logement": { "min": 45, "max": 60 },
      "location": { "lat": 48.8592, "lon": 2.3789, "distance": "2km" }
    },
    "scoring_targets": {
      "etiquette_dpe": "D",
      "etiquette_ges": "C",
      "conso_5_usages_par_m2_ep": 210,
      "nombre_niveau_immeuble": 6
    },
    "size": 5
  }'

Liens utiles

Clé test gratuite — 1 semaine

Créez un compte sur my.fluximmo.io pour récupérer une clé API test gratuite (1 semaine, accès limité). Aucun paiement requis.

Authorizations

x-api-key
string
header
required

Body

application/json
filters
object
size
integer
default:5

Page size

Required range: 1 <= x <= 20
scoring_targets
object

Scoring anchors (conso_5_usages_par_m2_ep/emission_ges_5_usages_par_m2/etiquette_dpe/etiquette_ges/nombre_niveau_immeuble). Influence ranking only — do not exclude candidates.

Response

Candidats DPE classés par score de similarité

data
object[]
required

Candidats DPE classés par score de similarité

meta
object
required

Métadonnées du matching