REST API — Vue d'ensemble
Accédez aux données DVF depuis n'importe quel langage avec une API REST standard.
URL de base
https://mcp.normi.fr/v1
Tous les endpoints retournent du JSON. HTTPS uniquement.
Authentification
Passez votre clé API dans le header X-API-Key. Générez une clé depuis le tableau de bord → Tokens.
curl "https://mcp.normi.fr/v1/stats/market?code_postal=75001" \ -H "X-API-Key: normi_votre_token"
Authorization: Bearer VOTRE_TOKEN est également accepté pour la compatibilité MCP.Format de réponse
Toutes les réponses incluent les champs _credits et query_time_ms :
{
"total_transactions": 563,
"median_price": 527000,
"median_price_m2": 13850,
"avg_price": 612000,
"avg_price_m2": 15200,
"_credits": { "used": 5, "remaining": 95 },
"query_time_ms": 1025
}Le champ note dans _credits apparaît uniquement quand il reste moins de 20 crédits.
Crédits
Chaque requête déduit des crédits selon sa complexité. En cas de crédits insuffisants, l'API retourne HTTP 402 sans exécuter la requête.
Achetez des crédits ou passez à un abonnement depuis la page Tarifs.
Pagination
GET /v1/transactions supporte la pagination par offset. Paramètres : limit (max 200, défaut 50) et offset. La réponse inclut next_cursor (null si dernière page).
# Page 1
GET /v1/transactions?code_postal=75001&limit=50&offset=0
→ { ..., "next_cursor": 50, "pagination": { "total": 563, "has_more": true } }
# Page 2
GET /v1/transactions?code_postal=75001&limit=50&offset=50
→ { ..., "next_cursor": 100 }Limites de débit
| Plan | Requêtes / minute |
|---|---|
| Free | 60 req/min |
| Agent | 30 req/min |
| Pro | 60 req/min |
| Enterprise | 120 req/min |
Au-delà de la limite, l'API retourne HTTP 429. Le header Retry-After indique le délai d'attente.
Format d'erreur
Toutes les erreurs retournent un objet JSON avec un code machine et un message lisible :
{
"error": {
"code": "insufficient_credits",
"message": "Insufficient credits. Required: 5, available: 3."
}
}| HTTP | Signification |
|---|---|
| 401 | Unauthorized |
| 400 | Bad Request |
| 402 | Payment Required |
| 429 | Too Many Requests |
| 503 | Service Unavailable |
Endpoints
/v1/transactions5 créditsRechercher des transactions DVF avec filtres géographiques, type, prix, surface et date.
/v1/transactions/:id2 créditsDétail d'une transaction par son identifiant.
/v1/stats/market5 créditsStatistiques agrégées : médiane, moyenne, prix/m², volume pour une zone.
/v1/stats/trends10 créditsÉvolution des prix dans le temps (mensuel, trimestriel, annuel).
/v1/comparables10 créditsBiens similaires autour d'un point GPS pour estimation de valeur.
/v1/heatmap15 créditsPrix agrégés par code postal ou commune pour cartographier un département.
/v1/estimate10 créditsEstimation automatisée (AVM) : fourchette basse/médiane/haute à partir de comparables DVF.
/v1/market-score10 créditsScore de santé du marché (0–100) pour un code postal, une commune ou un département.
/v1/portfolio10 créditsGérez un portefeuille de biens avec estimations automatiques (POST/GET/PUT/DELETE).
/v1/alertsAlertes webhook sur nouvelles transactions DVF — Pro/Enterprise uniquement (POST/GET/PUT/DELETE).
/v1/stats/compare10 créditsComparer 2 à 5 zones géographiques côte à côte : prix, volume, évolution.
/v1/market-activity10 créditsVolume mensuel et saisonnalité du marché immobilier sur une zone donnée.
/v1/property-history20 créditsHistorique complet des transactions pour une adresse ou une parcelle cadastrale.