API REST / Market Overview

Market Overview

Vue complète d'un marché immobilier en un seul appel : statistiques de prix, tendance annuelle et score de santé.

GET/v1/market-overview10 crédits

Agrège en parallèle GET /v1/stats/market, GET /v1/stats/trends et GET /v1/market-score pour retourner un résumé complet en un seul appel. Idéal comme point d'entrée pour tout diagnostic rapide d'un marché local.

Outil composite

Remplace trois appels séparés ( /v1/stats/market, /v1/stats/trends, /v1/market-score) en un seul. Économise 15 à 25 crédits pour les requêtes de type « comment se porte le marché ? ».

Paramètres

ParamètreTypeDéfautDescription
code_postalstringCode postal (ex. '75011'). Au moins un filtre de localisation est requis.
communestringNom de commune en majuscules (ex. 'PARIS 11', 'LYON').
code_departementstringCode département (ex. '75', '69').
latitudenumberLatitude GPS. Nécessite longitude.
longitudenumberLongitude GPS. Nécessite latitude.
radius_mnumber500Rayon en mètres pour la recherche par coordonnées.
type_localenumMaison | Appartement | Terrain | Local commercial | Dépendance | Local industriel

Exemple — Paris 11e appartements

curl "https://mcp.normi.fr/v1/market-overview?commune=PARIS%2011&type_local=Appartement" \
  -H "X-API-Key: normi_votre_token"

Réponse

{
  "location": {
    "code_postal": null,
    "commune": "PARIS 11",
    "code_departement": null,
    "latitude": null,
    "longitude": null,
    "radius_m": null
  },
  "property_type": "Appartement",
  "stats": {
    "count": 1842,
    "price": {
      "min": 120000,
      "max": 2100000,
      "avg": 518400,
      "median": 480000
    },
    "price_per_m2": {
      "min": 3200,
      "max": 18500,
      "avg": 9840,
      "median": 9650
    },
    "surface": {
      "min": 9,
      "max": 210,
      "avg": 52,
      "median": 48
    }
  },
  "trend": {
    "direction": "decreasing",
    "change_1y_pct": -4.2,
    "overall_change_pct": -4.2,
    "last_period": "2025"
  },
  "health": {
    "score": 58,
    "label": "Modéré",
    "data_quality": {
      "count_6m": 312,
      "sufficient": true
    }
  },
  "_credits": { "used": 10, "remaining": 90 },
  "query_time_ms": 487
}
Interpréter les résultats
  • trend.direction : "increasing" si variation >+2%, "decreasing" si <-2%, "stable" sinon.
  • trend.change_1y_pct : variation YoY de la dernière année complète disponible dans les données DVF.
  • health est null pour les recherches lat+lon (pas de périmètre administratif défini). Utilisez code_postal ou commune pour obtenir le score de santé.
  • Score de santé : 0–30 Calme · 31–60 Modéré · 61–80 Dynamique · 81–100 Très actif.
  • Pour les séries temporelles complètes ou les composantes détaillées du score, utilisez GET /v1/stats/trends et GET /v1/market-score directement.