API Pouvoir d'achat immobilier
Ratio prix/revenu par commune — le « pouvoir d'achat immobilier par ville » : combien d'années de revenu médian faut-il pour acheter le bien médian d'une zone. Croise les médianes de prix/m² et de surface DVF avec le revenu médian disponible par unité de consommation publié par l'INSEE (dispositif Filosofi).
ratio_prix_revenu vaut null quand l'INSEE applique le secret statistique sur le revenu de la commune (petites communes rurales) ou quand aucune donnée Filosofi n'est chargée pour ce code INSEE — un message accompagne alors la réponse.GET /v1/stats/pouvoir-achat
/v1/stats/pouvoir-achat5 créditsFiltre de localisation requis : code_postal, commune, code_departement, ou latitude + longitude.
code_departement seul et les recherches par rayon (latitude/longitude) ne sont pas supportés — un département regroupe des centaines de communes sans revenu médian unique représentatif, et un rayon traverse des limites communales. Utilisez /v1/stats/market ou /v1/comparables pour ces échelles.| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| code_postal | string | — | Code postal (ex. '75011') |
| commune | string | — | Commune en majuscules (ex. 'LYON', 'PARIS 11') |
| code_commune | string | — | Code INSEE à 5 chiffres — court-circuite la résolution par commune |
| type_local | enum | — | Maison | Appartement |
| date_debut | string | — | Date de début (YYYY-MM-DD) — plafonnée automatiquement sur les grandes zones |
| date_fin | string | — | Date de fin (YYYY-MM-DD) |
curl "https://mcp.normi.fr/v1/stats/pouvoir-achat?commune=LYON" \ -H "X-API-Key: normi_votre_token"
Réponse
{
"count": 7675,
"prix_m2_median": 4631.22,
"surface_median": 54.02,
"code_commune": "69388",
"annee_reference": 2021,
"revenu_median_annuel_uc": 21100,
"nb_menages_fiscaux": 36868,
"prix_bien_median": 250179,
"ratio_prix_revenu": 11.86,
"filters": { "code_postal": null, "commune": "LYON", "code_commune": null, "type_local": null },
"notice": "Applied date_debut=2024-07-18 automatically (1-year cap for this scope)",
"_credits": { "used": 5, "remaining": 495 },
"query_time_ms": 87
}Champs de réponse
| Champ | Type | Description |
|---|---|---|
count | number | Transactions DVF dans la fenêtre analysée |
prix_m2_median | number | Prix médian au m² (€) |
surface_median | number | Surface médiane (m²) |
prix_bien_median | number | prix_m2_median × surface_median (€) |
code_commune | string | Code INSEE à 5 chiffres résolu pour cette zone |
annee_reference | number | Millésime des données Filosofi (généralement 2-3 ans de retard) |
revenu_median_annuel_uc | number | null | Revenu médian disponible par unité de consommation (€/an) |
nb_menages_fiscaux | number | null | Nombre de ménages fiscaux dans la commune |
ratio_prix_revenu | number | null | Années de revenu médian nécessaires pour acheter le bien médian |
Enrichissement de /v1/stats/market
Ajoutez include_pouvoir_achat=true à GET /v1/stats/market pour obtenir le champ pouvoir_achat directement dans la réponse des statistiques de marché, sans appel supplémentaire crédité. Le calcul s'exécute en parallèle de la requête principale et ne fait jamais échouer la réponse de base — en cas d'échec ou d'absence de donnée, pouvoir_achat.available vaut false.
code_postal ou commune (pas les recherches par rayon) — le paramètre est silencieusement ignoré si combiné à latitude/longitude.// GET /v1/stats/market?commune=LYON&include_pouvoir_achat=true
{
"count": 7675,
"price": { "min": 45000, "max": 890000, "avg": 271430, "median": 250179 },
"surface": { "min": 12, "max": 240, "avg": 58.4, "median": 54.02 },
"price_per_m2": { "avg": 4712, "median": 4631.22, "min": 900, "max": 12400 },
"pouvoir_achat": {
"ratio_prix_revenu": 11.86,
"revenu_median_annuel_uc": 21100,
"annee_reference": 2021,
"code_commune": "69388"
},
"_credits": { "used": 5, "remaining": 494 },
"query_time_ms": 112
}