InvestScore immobilier France (DPE, DVF, risques, INSEE), payé à la requête en USDC via x402.
API française sur les diagnostics de performance énergétique (DPE), monétisée en USDC via le protocole x402 pour les agents IA autonomes.
🌐 URL de production : https://dpe.bdatax.com 📄 Découverte automatique : https://dpe.bdatax.com/.well-known/x402.json
Interrogation intelligente de la base publique ADEME sur les DPE (Diagnostics de Performance Énergétique) en France, avec :
Conçu pour être utilisé par des agents IA autonomes qui payent en crypto sans intervention humaine (Machine Economy), mais aussi utilisable directement par un humain avec curl ou un navigateur.
curl https://dpe.bdatax.com/
curl -i "https://dpe.bdatax.com/dpe?cp=75001"
Réponse :
HTTP/1.1 402 Payment Required
{
"x402Version": 1,
"accepts": [{
"scheme": "exact",
"network": "base",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"maxAmountRequired": "1000",
"payTo": "0xc0a484b32798dEefcA38Ced6c6Aa780660c752A4"
}]
}
Voir test-client.js pour un exemple complet en Node.js utilisant x402-fetch et viem.
| Endpoint | Prix | Description |
|---|---|---|
GET / | Gratuit | Page d'accueil, liste des endpoints |
GET /.well-known/x402.json | Gratuit | Fichier de découverte pour crawlers x402 |
GET /dpe?cp=75001 | 0,001 USDC | Recherche par code postal |
GET /dpe?adresse=203 rue Saint-Honoré 75001 Paris | 0,001 USDC | Recherche par adresse libre |
GET /dpe?voie=Saint-Honoré&cp=75001 | 0,001 USDC | Recherche par nom de rue |
GET /dpe?numero=203&voie=Saint-Honoré&cp=75001 | 0,001 USDC | Recherche par numéro + rue + CP |
GET /dpe?numeroDPE=2175E0465600P | 0,001 USDC | Recherche par identifiant DPE |
GET /dpe?lat=48.864968&lon=2.331665 | 0,001 USDC | Recherche par coordonnées GPS |
GET /dpe?cp=75001&format=csv | 0,001 USDC | Export CSV (compatible Excel FR) |
GET /dpe?cp=75001&format=xlsx | 0,001 USDC | Export Excel natif |
Chaque appel /dpe renvoie un JSON structuré avec meilleurResultat, resultats (tableau classé), dpeLePlusRecent, et des métadonnées de recherche.
Chaque DPE renvoyé est automatiquement enrichi (sans surcoût) avec des données de marché immobilier issues de la base publique DVF (Demandes de Valeurs Foncières, DGFiP) :
{
"adresse": "14 rue Vauvilliers 75001 Paris",
"etiquetteDPE": "F",
"surfaceM2": 22.9,
"coutAnnuelTotal": 1168,
"dvf": {
"prixMedianM2": 12400,
"prixEstimeTotal": 283960,
"nbTransactionsComparables": 8,
"derniereTransaction": "2025-11-14",
"rayonMetres": 200,
"ecartSurfacePct": 30
}
}
Méthode : pour chaque DPE géolocalisé, on cherche dans un rayon de 200 m les transactions immobilières récentes (2024-2025), du même type (appartement / maison), avec une surface comparable (±30 %). On calcule ensuite la médiane des prix au m² et on l'applique à la surface du DPE.
dvf vaut null si l'échantillon est trop faible (moins de 3 transactions comparables) ou si le département n'est pas encore indexé — le champ apparaît toujours pour que les consommateurs de l'API puissent tester sa présence de façon uniforme.
Couverture : France entière (métropole + DROM), transactions publiées jusqu'à la dernière mise à jour semestrielle DGFiP.
Mise à jour de l'index DVF : deux fois par an (avril et octobre), en lançant localement node build-dvf-index.js après avoir téléchargé le nouveau fichier full.csv.gz depuis data.gouv.fr, puis en pushant data/dvf/.
Chaque DPE renvoyé est aussi enrichi (sans surcoût pour l'utilisateur) avec une synthèse des risques naturels et technologiques qui pèsent sur sa commune, via l'API officielle Géorisques maintenue par le BRGM et le Ministère de la Transition écologique :
{
"adresse": "203 Rue Saint-Honoré 75001 Paris",
"etiquetteDPE": "F",
"codeInsee": "75101",
"georisques": {
"commune": "PARIS 1ER ARRONDISSEMENT",
"codeInsee": "75101",
"risquesNaturels": {
"inondation": "existant",
"seisme": "faible",
"retraitGonflementArgile": "important",
"radon": "faible",
"mouvementTerrain": "existant",
"remonteeNappe": "existant"
},
"risquesTechnologiques": {
"icpe": "concerne",
"canalisationsMatieresDangereuses": "concerne",
"pollutionSols": "concerne"
},
"nbRisquesPresents": 9,
"sourceUrl": "https://www.georisques.gouv.fr/mes-risques/..."
}
}
Méthode : le code INSEE de la commune est dérivé du champ identifiantBAN du DPE, puis on interroge l'endpoint /api/v1/resultats_rapport_risque de Géorisques. La réponse est mise en cache 24 h en RAM par code INSEE — même 1000 DPE dans une même commune ne génèrent qu'un seul appel API par jour.
georisques vaut null si le codeInsee n'a pas pu être dérivé (DPE sans identifiantBAN), si l'API Géorisques répond en erreur, ou si le timeout de 5 s est dépassé. Comportement gracieux : les autres champs de la réponse (DPE + DVF) restent servis normalement.
Cas d'usage typique : assureurs (calcul de prime), banques (analyse de risque de crédit immobilier), plateformes de tokenisation immobilière (due diligence automatisée), agents IA immobiliers autonomes.
Installation :
npm install x402-fetch viem
Utilisation :
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const fetchWithPayment = wrapFetchWithPayment(fetch, account, BigInt(10_000));
const response = await fetchWithPayment(
"https://dpe.bdatax.com/dpe?cp=75001"
);
const data = await response.json();
console.log(data.meilleurResultat);
Un exemple complet et commenté est disponible dans test-client.js.
Pour tester, il faut :
client.env avec PRIVATE_KEY=... (jamais commit !)node --env-file=client.env test-client.jsPipeline en 12 étapes pour chaque requête /dpe :
/resultats_rapport_risque par code INSEE (cache RAM 24 h)Temps de réponse typique : < 800 ms (l'appel Géorisques ajoute ~200-400 ms au premier appel par commune, ensuite servi depuis le cache ; DVF et INSEE sont locaux donc quelques ms).
/dpe/enrichi à tarif différencié (~0,02 USDC)BData X — Portfolio d'APIs françaises monétisées x402 sur données publiques.
Ce projet est distribué sous Business Source License 1.1 (BSL) — voir LICENSE.
En résumé :
Le 27 août 2030, cette licence bascule automatiquement en Apache 2.0 (totalement libre).
Pour un usage commercial concurrent avant cette date, contact via le repo.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y bdatax-immo-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-benliberte-immo": {
"command": "npx",
"args": [
"-y",
"bdatax-immo-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencebdatax-immo-mcpnpmio.github.benliberte/immo works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.