Documentation
Référence API

Versions

Cette documentation décrit la version 1.0 de l'API open-connect, en cours de conception : les formes de réponse décrites ici sont le contrat visé, pas encore un service en ligne.
Une version publiée ne change plus de forme : une clé ou une valeur nouvelle n'est servie qu'à partir de la version suivante, et un préfixe déjà en ligne ne reçoit que des corrections. Le numéro de correction suit le préfixe qui la sert : une 1.0.x est servie sous /api/v1/.

Version 1.0

Préfixe /api/v1/ · version de référence, en conception.
  • Rapport de localisation : une position ou une adresse, toutes les données disponibles par domaine, filtrables avec include
  • Une route par domaine, et des listes paginées pour les ventes, les lieux et les autorisations d'urbanisme
  • Indicateurs d'une zone sans position (/zones/…)
  • Catalogue : domaines, indicateurs, sources et licences, couverture par pays

Compatibilité

Un numéro de version s'écrit X.Y.Z. Le chiffre qui bouge dit ce que vous avez à faire.
Incrément Ce qui change Ce que vous avez à faire
X — refonte Nouveau modèle de ressources, d'authentification ou de pagination Une migration, annoncée en amont avec une date de fin de support
Y — rupture Une réponse change de forme : un champ ajouté, retiré, renommé, de type ou de valeur différente Rien dans l'immédiat : la nouvelle forme a sa propre URL, et la précédente continue de servir celle que vous connaissez
Z — ajout Une route ou un paramètre optionnel en plus. Rien de ce que vous lisez déjà Rien, l'URL ne change pas
Chaque rupture est publiée sous son propre préfixe d'URL, et un préfixe une fois publié ne change plus jamais de forme. Migrer se fait donc en changeant le préfixe dans vos appels, à votre rythme ; une intégration nouvelle part du préfixe le plus récent.
Un champ n'apparaît jamais dans une réponse servie par une URL que vous utilisez déjà : il attend la sienne.
Chaque réponse porte l'en-tête X-Api-Version avec la version effectivement servie : c'est le moyen le plus sûr de savoir quelle forme vous recevez.

Introduction

open-connect rassemble en une seule réponse ce que les données publiques disent d'un lieu : prix et ventes, loyers, bâtiment et logement, énergie, risques, urbanisme, fiscalité locale, population, services et transports. Vous envoyez une position ou une adresse, open-connect vous renvoie toutes les données qu'il connaît à cet endroit, ou seulement les domaines que vous demandez.
Les données viennent de plus de soixante sources publiques (administrations, instituts statistiques, municipalités), importées, contrôlées et mises en forme par immosquare. Chaque valeur renvoyée dit d'où elle vient, à quelle date elle a été publiée et sous quelle licence.
Pays Couverture
France Métropole et départements d'outre-mer ; Alsace-Moselle et Mayotte sans ventes (absentes de DVF)
Belgique Les trois régions ; certaines données par région seulement (indiqué domaine par domaine)
Canada Québec ; quelques données canadiennes par région de tri d'acheminement (RTA)
Le même moteur sert les outils d'immosquare : une donnée visible dans nos fiches biens est une donnée que l'API sait servir, avec la même forme.

Domaines

Une réponse est découpée en domaines. Chacun a sa route, et le rapport complet les assemble.
Domaine Contenu FR BE QC
location Position, adresse et zones administratives et statistiques du point ✓ ✓ ✓
prices Prix de vente par zone, évolution, volumes de transactions, valeurs foncières ✓ ✓ ✓
sales Ventes une à une autour du point (liste paginée) ✓ — —
rents Loyers de marché, loyers de référence de l'encadrement, inoccupation ✓ — ✓
property Biens, bâtiment et copropriété au point ✓ ◐ ✓
energy Diagnostics énergétiques, statistiques énergétiques du secteur, potentiel solaire ✓ ◐ ✓
taxation Taux de la taxe foncière et taxes locales ✓ — ✓
risks Zones de risques naturels, sites et sols pollués, historique des catastrophes ✓ ✓ ✓
urbanism Zonage, prescriptions et servitudes, parcelle, autorisations d'urbanisme autour ✓ ◐ ◐
population Revenus, ménages, parc de logements, vacance, logement social ✓ ✓ ◐
amenities Écoles, santé, commerces, sport, culture, tourisme, avec leur distance ✓ ◐ ✓
transport Arrêts et lignes de transport en commun, gares, aéroports, accès routiers ✓ ◐ ✓
✓ couvert · ◐ couvert en partie (une région, une ville, ou un indicateur agrégé seulement) · — non couvert, faute de donnée publique réutilisable. La couverture exacte de chaque champ est servie par GET /catalog/coverage.

Démarrage rapide

Tout ce que l'API sait d'une adresse à Paris :
curl "https://app.open-connect.io/api/v1/report?address=95%20rue%20Sedaine%2075011%20Paris" \
  -H "Authorization: Bearer oc_live_7f3c…"
Seulement les prix et les risques d'un point à Montréal :
curl "https://app.open-connect.io/api/v1/report?lat=45.5246&lng=-73.5840&include=prices,risks" \
  -H "Authorization: Bearer oc_live_7f3c…"
La réponse porte toujours deux clés : data, les données par domaine, et meta, la position retenue, les sources citées et l'identifiant de la requête.
{
  "data": {
    "location": { "…": "…" },
    "prices":   { "status": "ok", "…": "…" },
    "risks":    { "status": "ok", "…": "…" }
  },
  "meta": {
    "request_id": "req_01JA2Q8W6Y3K5V",
    "api_version": "1.0",
    "generated_at": "2026-10-11T08:12:44Z",
    "sources": [ { "id": "dvf", "…": "…" } ]
  }
}

Authentification

Chaque requête porte votre clé dans l'en-tête Authorization, au format Bearer :
GET /api/v1/report?lat=48.8590&lng=2.3795
Authorization: Bearer oc_live_7f3c9a1e5b2d4c6f8a0b1c2d3e4f5a6b
  • Une clé commence par oc_live_ (production) ou oc_test_ (bac à sable, mêmes données, quotas réduits, réponses marquées "sandbox": true dans meta).
  • La clé n'est montrée qu'une fois, à sa création : nous n'en gardons qu'une empreinte. Une clé perdue se révoque et se remplace depuis votre espace client.
  • Une clé peut être limitée à certains domaines. Un domaine hors de votre clé répond 403 avec le code domain_not_allowed, et un rapport complet l'omet en le signalant dans meta.warnings.
  • La clé ne doit jamais être exposée dans un navigateur ou une application mobile : appelez l'API depuis votre serveur.
Pour obtenir une clé : contact@immosquare.com.

Quotas et limites

Chaque réponse annonce l'état de votre quota :
En-tête Valeur
X-RateLimit-Limit Requêtes autorisées par minute
X-RateLimit-Remaining Requêtes restantes dans la minute en cours
X-RateLimit-Reset Secondes avant la remise à zéro du compteur
X-Quota-Remaining Unités restantes sur la période de votre abonnement
X-Request-Id Identifiant de la requête, à nous transmettre en cas de besoin
X-Api-Version Version effectivement servie
Au-delà, l'API répond 429 avec un en-tête Retry-After en secondes. Un 429 est toujours temporaire : attendez le délai indiqué avant de renvoyer la requête.
Une route de domaine consomme une unité ; un rapport consomme une unité par domaine calculé. Une réponse servie depuis notre cache coûte la même chose qu'une réponse calculée : le cache sert à la vitesse, pas au décompte.

Erreurs

Une erreur répond avec un code HTTP et un corps stable, dont error.code ne change jamais d'une version à l'autre :
{
  "error": {
    "code": "invalid_parameter",
    "message": "lat doit être compris entre -90 et 90",
    "details": {
      "parameter": "lat",
      "value": "148.85"
    }
  },
  "meta": {
    "request_id": "req_01JA2Q8W6Y3K5V",
    "api_version": "1.0",
    "generated_at": "2026-10-11T08:12:44Z"
  }
}
HTTP error.code Cas
400 invalid_parameter Paramètre absent, mal formé ou hors bornes ; error.details.parameter le nomme
400 ambiguous_location lat/lng et address envoyés ensemble
401 unauthorized Clé absente, inconnue ou révoquée
403 domain_not_allowed Domaine hors de votre clé
404 address_not_found Adresse introuvable : renvoyez la requête avec des coordonnées
404 zone_not_found Zone inconnue (/zones/…)
422 outside_coverage Position hors des pays couverts
429 rate_limited Trop de requêtes : attendre Retry-After
429 quota_exceeded Quota de la période épuisé
500 internal_error Erreur interne, sans détail technique : la requête peut être renvoyée plus tard
503 maintenance Maintenance annoncée : Retry-After donne la durée estimée
Une source indisponible ne fait pas échouer la requête : le domaine concerné répond "status": "partial" ou "unavailable", et meta.warnings explique ce qui manque. Seule une erreur de votre requête ou de notre service répond par un code d'erreur.

Conventions

  • Format : JSON en UTF-8, clés en anglais et en snake_case.
  • Nombres : toujours des nombres JSON, jamais des chaînes. Un montant est un nombre accompagné de son unité.
  • Dates : AAAA-MM-JJ ; horodatages en ISO 8601, en UTC (2026-10-11T08:12:44Z).
  • Positions : latitude et longitude en degrés décimaux WGS84 (lat, lng en paramètres ; latitude, longitude en réponse).
  • Distances : en mètres, à vol d'oiseau, dans distance_m.
  • Surfaces : en mètres carrés.
  • Absence : un champ documenté est toujours présent ; il vaut null quand la donnée n'existe pas à cet endroit ou dans ce pays. Une liste vide vaut [].
  • Codes et libellés : les valeurs énumérées sont des codes stables (apartment, flood, high) ; quand un libellé lisible est utile, il est servi à côté, dans la langue demandée.
  • Langue : fr (par défaut) ou en, par le paramètre locale ou l'en-tête Accept-Language. Les noms propres (rues, communes, établissements) restent dans leur langue d'origine.

Unités

unit Sens
EUR, CAD Montant dans la monnaie du pays
EUR/m2 Prix au mètre carré
EUR/m2/month Loyer mensuel au mètre carré
CAD/month Loyer mensuel
% Pourcentage (3.2 signifie 3,2 %)
ratio Proportion entre 0 et 1, ou facteur multiplicatif
count Nombre
kWh/m2/year Consommation d'énergie annuelle au mètre carré
GJ/year Consommation d'énergie annuelle
GJ/m2/year Intensité énergétique annuelle
kWh/year Production annuelle
kW Puissance
CAD/100CAD Taux de taxe en dollars par 100 $ d'évaluation
year Une année (âge médian du parc, par exemple)

Niveaux de zones

Les zones suivent un découpage commun aux trois pays, du plus large au plus fin :
level France Belgique Québec
country France Belgique Canada
region Région Région —
subregion Département Province Région administrative
county — Arrondissement MRC ou territoire équivalent
municipality Commune Commune Municipalité
district Arrondissement (Paris, Lyon, Marseille) Section (ancienne commune) Arrondissement (Montréal, Québec…)
neighbourhood IRIS (Insee) Secteur statistique (Statbel) —
rental_survey_area — — Quartier de l'enquête locative de la SCHL
postal_area — — Région de tri d'acheminement (RTA)
Un code de zone n'est unique que dans son pays et son niveau : 21004 est à la fois une commune belge (Bruxelles) et une commune française (Côte-d'Or). Les codes suivent ceux des instituts : code Insee, code INS, code géographique du ministère des Affaires municipales du Québec, code d'IRIS ou de secteur statistique.
Le quartier de l'enquête locative de la SCHL a son propre niveau, rental_survey_area : il est plus grand qu'un IRIS et déborde parfois sur plusieurs municipalités, ce n'est pas un découpage statistique fin. Il n'a pas de code officiel unique ; open-connect lui donne le sien (Q + région de la SCHL + quartier, par exemple Q10600120).

Objets communs

Les domaines diffèrent, mais leurs valeurs sont toujours construites avec les mêmes objets.

Zone

{ "level": "neighbourhood", "code": "751114317", "name": "Roquette 17", "country": "FR" }

Mesure

Une valeur chiffrée, avec ce qu'il faut pour la lire honnêtement : son unité, sa période, la zone qu'elle décrit, sa fiabilité et sa source.
{
  "value": 10000,
  "unit": "EUR/m2",
  "period": { "start": "2025-01-01", "end": "2025-12-31" },
  "zone": { "level": "neighbourhood", "code": "751114317", "name": "Roquette 17", "country": "FR" },
  "sample_size": 80,
  "reliability": "high",
  "range": null,
  "definition": "dvf_median_price_per_m2",
  "source": "area_prices"
}
Champ Type Description
value nombre La valeur
unit chaîne Unité
period objet Période décrite, start et end inclus ; null pour une donnée sans période (un taux en vigueur)
zone Zone Zone décrite. Elle peut être plus large que le point : open-connect sert la zone la plus fine qui a une valeur fiable
sample_size entier Nombre d'observations derrière la valeur (ventes, logements, déclarations), quand la source le publie
reliability chaîne high, medium ou low : voir Fiabilité
range objet Intervalle publié par la source : {"low": …, "high": …} (intervalle de prédiction, premier et troisième quartiles)
definition chaîne Méthode exacte de la valeur, décrite dans GET /catalog/indicators
source chaîne Identifiant de la source, détaillée dans meta.sources
Deux mesures de même nom peuvent ne pas se comparer d'un pays à l'autre : un revenu médian par unité de consommation (France) n'est pas un revenu médian par déclaration (Belgique). definition le dit, et le catalogue précise si un indicateur est comparable entre pays.

Fiabilité

reliability Signification
high Assez d'observations, ou cote de la source excellente ou très bonne
medium Utilisable avec prudence : échantillon réduit, prédiction moins ajustée, cote « bonne » de la source
low Indicatif seulement : petit échantillon, cote « passable » de la source
open-connect ne sert jamais une valeur que la source elle-même a supprimée pour confidentialité ou manque de fiabilité : elle vaut alors null.

Série

Une suite de valeurs dans le temps, pour une même zone :
{
  "unit": "EUR/m2",
  "zone": { "level": "district", "code": "75111", "name": "Paris 11e Arrondissement", "country": "FR" },
  "points": [
    { "period": { "start": "2014-01-01", "end": "2014-12-31" }, "value": 8051, "sample_size": 2076 },
    { "period": { "start": "2015-01-01", "end": "2015-12-31" }, "value": 7946, "sample_size": 2445 }
  ],
  "changes": { "1y": 1.4, "2y": -3.4, "5y": 2.1 },
  "source": "area_prices"
}
changes donne l'évolution en pour cent sur 1, 2 et 5 ans entre les derniers points de la série.

Répartition

Le nombre d'observations par classe :
{
  "unit": "count",
  "total": 23360,
  "buckets": [
    { "code": "under_250k", "max": 250000, "count": 1357 },
    { "code": "250k_500k", "min": 250000, "max": 500000, "count": 6746 },
    { "code": "over_500k", "min": 500000, "count": 15257 }
  ]
}

Lieu

Un point d'intérêt, avec sa distance au point demandé :
{
  "id": "place_bpe_2646057f",
  "category": "school.primary",
  "name": "École élémentaire Servan",
  "address": "2 rue Servan, 75011 Paris",
  "latitude": 48.8601,
  "longitude": 2.3812,
  "distance_m": 160,
  "source": "education_france"
}
Les catégories forment une hiérarchie stable à deux niveaux, un groupe et sa catégorie (school, school.primary, health.pharmacy…), identique dans les trois pays : voir GET /catalog/categories.

Événement

Un fait daté de la vie d'un bien (vente, diagnostic, autorisation de travaux) :
{ "type": "sale", "date": "2021-11-09", "price": { "value": 570000, "unit": "EUR" }, "surface": 140, "source": "dvf" }

Source

meta.sources liste chaque source citée dans la réponse, une seule fois. Les valeurs y renvoient par leur champ source.
{
  "id": "dvf",
  "name": "Demandes de valeurs foncières géolocalisées",
  "publisher": "Direction générale des Finances publiques, préparé par Etalab",
  "license": "etalab-2.0",
  "license_url": "https://www.etalab.gouv.fr/licence-ouverte-open-licence/",
  "attribution": "Source : DGFiP, DVF ; traitement immosquare",
  "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
  "published_at": "2026-04-15",
  "imported_at": "2026-10-09T01:20:30Z",
  "fresh": true
}
attribution est le texte à reproduire là où vous affichez la donnée : la plupart des licences l'exigent. Voir Licences et attribution.

Statut d'un domaine

Chaque domaine ouvre sur son statut :
status Signification
ok Toutes les sources du domaine ont répondu
partial Une source n'a pas répondu à temps ou est en pause : les champs qu'elle alimente valent null, meta.warnings les nomme
not_covered Le domaine n'a aucune donnée dans ce pays
unavailable Aucune source du domaine n'a répondu ; la requête peut être renvoyée plus tard
insufficient_precision La position est trop imprécise pour ce domaine (adresse trouvée à la rue ou à la commune seulement) : les données au point ne sont pas servies, plutôt que de décrire le mauvais bâtiment

Absences

Un champ à null peut vouloir dire des choses très différentes. Chaque domaine porte un objet missing, qui donne la raison de chaque champ absent :
"missing": {
  "sale_price_per_m2.house": "insufficient_sample",
  "rent_control": "not_applicable",
  "average_rent": "not_covered"
}
Raison Signification
not_covered Aucune source ne publie cette donnée dans ce pays
not_applicable La donnée n'existe pas ici (pas d'encadrement des loyers dans cette commune, pas de copropriété)
insufficient_sample Trop peu d'observations pour une valeur fiable
suppressed Valeur supprimée par la source (secret statistique, fiabilité insuffisante)
not_found Rien trouvé au point (aucun bien connu, aucun DPE)
unavailable Source momentanément indisponible ou en pause
insufficient_precision Position trop imprécise pour une donnée au point

Localiser

Toutes les routes de données prennent un lieu, de l'une de ces deux façons :
Paramètre Type Description
lat nombre Latitude WGS84, avec lng
lng nombre Longitude WGS84, avec lat
address chaîne Adresse postale complète, à la place de lat/lng : numéro, rue, code postal, ville
country chaîne FR, BE ou CA. Facultatif, il lève l'ambiguïté d'une adresse dont la ville existe dans plusieurs pays
Une adresse est d'abord cherchée dans les bases d'adresses officielles que nous importons (Base adresse nationale en France, BeST en Belgique, rôle d'évaluation foncière au Québec), puis dans notre géocodeur. Une adresse trouvée par l'un ou l'autre l'est ensuite pour tout le monde : la seconde requête sur la même adresse est immédiate.
data.location dit toujours ce qui a été retenu, et avec quelle précision : vérifiez-le avant d'afficher des données « à l'adresse ».

Résoudre un lieu

Position, adresse et zones d'un lieu, sans autre donnée. Utile pour valider une adresse saisie, ou pour connaître les codes de zones à passer à /zones.
Endpoint
GET https://app.open-connect.io/api/v1/location
Query Parameters
Parameter Type Description
lat nombre Voir Localiser
lng nombre Voir Localiser
address chaîne Voir Localiser
country chaîne Voir Localiser
locale chaîne fr ou en
Réponse : data.location
Champ Type Description
latitude nombre Latitude retenue
longitude nombre Longitude retenue
country chaîne FR, BE ou CA
precision chaîne input (vos coordonnées), address (adresse trouvée au numéro), street (à la rue), municipality (à la commune seulement)
address objet \ null
geocoding objet \ null
zones objet Les zones du point, une clé par niveau : region, subregion, county, municipality, district, neighbourhood, rental_survey_area, postal_area ; null pour un niveau absent
parcel objet \ null
{
  "data": {
    "location": {
      "latitude": 48.859081,
      "longitude": 2.379159,
      "country": "FR",
      "precision": "address",
      "address": {
        "label": "95 Rue Sedaine, 75011 Paris",
        "number": "95",
        "street": "Rue Sedaine",
        "postal_code": "75011",
        "municipality": "Paris 11e Arrondissement"
      },
      "geocoding": {
        "query": "95 rue Sedaine 75011 Paris",
        "matched": "95 Rue Sedaine, 75011 Paris",
        "method": "official_addresses"
      },
      "zones": {
        "region": {
          "code": "11",
          "name": "Île-de-France"
        },
        "subregion": {
          "code": "75",
          "name": "Paris"
        },
        "county": null,
        "municipality": {
          "code": "75056",
          "name": "Paris"
        },
        "district": {
          "code": "75111",
          "name": "Paris 11e Arrondissement"
        },
        "neighbourhood": {
          "code": "751114317",
          "name": "Roquette 17"
        },
        "rental_survey_area": null,
        "postal_area": null
      },
      "parcel": {
        "id": "75111000BL0013",
        "source": "dvf"
      }
    }
  },
  "meta": {
    "request_id": "req_KYEGGO8SZJNKTE",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:40Z",
    "sources": [],
    "warnings": [],
    "sandbox": false
  }
}

Rapport de localisation

Toutes les données d'un lieu en une requête, ou seulement les domaines demandés. Les domaines sont calculés en parallèle : un domaine lent ou indisponible n'empêche pas les autres de répondre.
Endpoint
GET https://app.open-connect.io/api/v1/report
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
include chaîne Domaines à calculer, séparés par des virgules : prices,rents,risks. Un domaine peut être restreint à une partie : energy.solar, prices.trend. Par défaut, tous ceux de votre clé. location est toujours servi
property_type chaîne apartment ou house : ne sert que les prix, loyers et ventes de ce type
radius entier Rayon en mètres des listes (ventes, lieux, autorisations, sites pollués), de 100 à 2000. Par défaut, celui de chaque domaine
locale chaîne fr ou en
Dans un rapport, les listes sont abrégées à leurs premiers éléments (les plus proches) ; la route du domaine sert la liste complète, paginée.
Réponse
Champ Type Description
data.location objet Voir Résoudre un lieu
data.<domaine> objet Une clé par domaine calculé, décrite dans la section du domaine. Chacune ouvre sur son status
meta.request_id chaîne Identifiant de la requête
meta.api_version chaîne Version servie
meta.generated_at chaîne Horodatage UTC du calcul
meta.sources liste Les sources citées par la réponse
meta.warnings liste Ce qui manque et pourquoi : {"domain": "urbanism", "code": "source_unavailable", "message": "…"}
meta.sandbox booléen true avec une clé de test
Exemple à Paris (abrégé) :
{
  "data": {
    "location": {
      "latitude": 48.859081,
      "longitude": 2.379159,
      "country": "FR",
      "precision": "address",
      "address": {
        "label": "95 Rue Sedaine, 75011 Paris",
        "number": "95",
        "street": "Rue Sedaine",
        "postal_code": "75011",
        "municipality": "Paris 11e Arrondissement"
      },
      "geocoding": {
        "query": "95 rue Sedaine 75011 Paris",
        "matched": "95 Rue Sedaine, 75011 Paris",
        "method": "official_addresses"
      },
      "zones": {
        "region": {
          "code": "11",
          "name": "Île-de-France"
        },
        "subregion": {
          "code": "75",
          "name": "Paris"
        },
        "county": null,
        "municipality": {
          "code": "75056",
          "name": "Paris"
        },
        "district": {
          "code": "75111",
          "name": "Paris 11e Arrondissement"
        },
        "neighbourhood": {
          "code": "751114317",
          "name": "Roquette 17"
        },
        "rental_survey_area": null,
        "postal_area": null
      },
      "parcel": {
        "id": "75111000BL0013",
        "source": "dvf"
      }
    },
    "prices": {
      "status": "ok",
      "sale_price_per_m2": {
        "apartment": {
          "value": 10000,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "751114317",
            "name": "Roquette 17",
            "country": "FR"
          },
          "sample_size": 80,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        },
        "house": {
          "value": 12740,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 250,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        },
        "all": {
          "value": 10000,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "751114317",
            "name": "Roquette 17",
            "country": "FR"
          },
          "sample_size": 80,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        }
      },
      "sale_price": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "trend": "… (voir Prix)",
      "price_index": {
        "apartment": {
          "zone_name": "Paris",
          "change_1y": 0.67,
          "as_of": "2026-04-01",
          "provisional": true,
          "source": "insee_housing_prices"
        },
        "house": {
          "zone_name": "Île-de-France",
          "change_1y": -1.42,
          "as_of": "2026-04-01",
          "provisional": true,
          "source": "insee_housing_prices"
        }
      },
      "transactions": {
        "count": {
          "value": 80,
          "unit": "count",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "751114317",
            "name": "Roquette 17",
            "country": "FR"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "dvf_residential_sales_count",
          "source": "area_prices"
        },
        "change": null,
        "by_price_band": null,
        "monthly": null
      },
      "assessed_values": null,
      "missing": {
        "sale_price.apartment": "not_covered",
        "sale_price.house": "not_covered",
        "sale_price.all": "not_covered",
        "transactions.change": "not_covered",
        "transactions.by_price_band": "not_covered",
        "transactions.monthly": "not_covered",
        "assessed_values": "not_covered"
      }
    },
    "rents": {
      "status": "ok",
      "market_rent_per_m2": {
        "apartment": {
          "value": 31.72,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 17411,
          "reliability": "high",
          "range": {
            "low": 25.17,
            "high": 39.98
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        },
        "apartment_1_2_rooms": {
          "value": 33.28,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 14088,
          "reliability": "high",
          "range": {
            "low": 26.43,
            "high": 41.89
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        },
        "apartment_3_plus_rooms": {
          "value": 30.42,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 3306,
          "reliability": "high",
          "range": {
            "low": 24.39,
            "high": 37.93
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        },
        "house": {
          "value": 24.79,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR",
            "note": "estimation à la maille de communes"
          },
          "sample_size": 479,
          "reliability": "medium",
          "range": {
            "low": 14.12,
            "high": 43.55
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        }
      },
      "average_rent": null,
      "vacancy_rate": null,
      "rent_control": "… (voir Loyers)",
      "regulation": {
        "tense_zone": true,
        "abc_zone": "Abis"
      },
      "missing": {
        "average_rent": "not_covered",
        "vacancy_rate": "not_covered"
      }
    },
    "risks": {
      "status": "ok",
      "hazards": [
        {
          "type": "radon",
          "level": "low",
          "source_level": "Faible",
          "label": "Potentiel radon",
          "source": "bdnb",
          "published_on": null
        }
      ],
      "polluted_sites": {
        "counts": {
          "former_industrial_site": 222,
          "classified_installation": 2,
          "soil_information_sector": 1,
          "soil_investigation": 1
        },
        "items": [
          {
            "type": "former_industrial_site",
            "name": "imprimerie, lithographie, typographie",
            "status": "Indéterminé",
            "address": "5 bis Place Voltaire",
            "distance_m": 126,
            "url": "https://fiches-risques.brgm.fr/georisques/casias/SSP3871042",
            "updated_on": "2014-12-04",
            "source": "georisques_ssp"
          },
          {
            "type": "former_industrial_site",
            "name": null,
            "status": "Indéterminé",
            "address": "23 rue PETION",
            "distance_m": 133,
            "url": "https://fiches-risques.brgm.fr/georisques/casias/SSP3867906",
            "updated_on": "2014-12-04",
            "source": "georisques_ssp"
          }
        ]
      },
      "municipal": {
        "risks": [
          {
            "code": "11",
            "label": "Inondation"
          },
          {
            "code": "24",
            "label": "Transport de marchandises dangereuses"
          }
        ],
        "natural_disasters": {
          "total": 20,
          "latest": [
            {
              "type": "Inondations et/ou Coulées de Boue",
              "started_on": "2018-07-27",
              "ended_on": "2018-07-27",
              "decree_on": "2018-11-26"
            },
            {
              "type": "Inondations et/ou Coulées de Boue",
              "started_on": "2018-01-15",
              "ended_on": "2018-02-05",
              "decree_on": "2018-02-14"
            }
          ]
        },
        "prevention_plans": [
          {
            "type": "PPRi de Paris",
            "status": "Caduque",
            "approved_on": null
          },
          {
            "type": "PPRi de Paris - Révision",
            "status": "Opposable",
            "approved_on": null
          }
        ],
        "flood_atlas": true
      },
      "missing": {}
    },
    "amenities": {
      "status": "ok",
      "counts": {
        "school.kindergarten": 83,
        "school.primary": 71,
        "school.training": 75,
        "school.daycare": 135,
        "school.higher_education": 92,
        "school.middle_school": 29
      },
      "items": [
        {
          "id": "place_8f2d6915542b46d4e88c",
          "category": "school.kindergarten",
          "label": null,
          "name": "Ecole Maternelle Publique Parmentier V",
          "address": "11 B Av Parmentier   75011 Paris 11 E Arrondissement",
          "latitude": 48.85966,
          "longitude": 2.37884,
          "distance_m": 68,
          "source": "insee_bpe"
        }
      ],
      "missing": {}
    },
    "transport": {
      "status": "ok",
      "stops": [
        {
          "id": "IDFM:23655",
          "name": "Voltaire - Léon Blum",
          "modes": [
            "bus"
          ],
          "lines": [
            {
              "short_name": "56",
              "long_name": "56",
              "mode": "bus",
              "color": "#A0006E"
            }
          ],
          "wheelchair_accessible": true,
          "latitude": 48.85852,
          "longitude": 2.37877,
          "distance_m": 68,
          "source": "mobility_database"
        }
      ],
      "stops_by_mode": {
        "bus": 17,
        "subway": 2
      },
      "nearest": {
        "train_station": {
          "id": "place_1dd7e787b4530b344f16",
          "category": "transport.train_station",
          "name": "Paris Gare de Lyon",
          "address": "Pl Louis Armand   75012 Paris 12 E Arrondissement",
          "latitude": 48.84455,
          "longitude": 2.3741,
          "distance_m": 1658,
          "source": "insee_bpe"
        },
        "airport": {
          "id": "place_6d28a68577508a17ca0e",
          "category": "transport.airport",
          "name": "Paris-Le Bourget",
          "address": "180 Esp De L Air Et De L Espace   93350 Dugny",
          "latitude": 48.94968,
          "longitude": 2.43236,
          "distance_m": 10799,
          "source": "insee_bpe"
        },
        "road_access": null,
        "charging_station": {
          "id": "place_194baf49498505ae80e1",
          "category": "transport.charging_station",
          "name": "Belib'",
          "address": "4 Av Parmentier   75011 Paris 11 E Arrondissement",
          "latitude": 48.85895,
          "longitude": 2.37987,
          "distance_m": 54,
          "source": "insee_bpe"
        }
      },
      "missing": {
        "nearest.road_access": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_RHTXBXTZDWRBAH",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:11Z",
    "sources": [
      {
        "id": "area_prices",
        "share_alike": false,
        "name": "Prix médians par zone, calculés depuis DVF",
        "publisher": "immosquare, d'après la DGFiP",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, DVF ; calcul immosquare",
        "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
        "imported_at": "2026-10-10T20:32:59Z",
        "fresh": true
      },
      {
        "id": "insee_housing_prices",
        "share_alike": false,
        "name": "Indices Notaires-Insee des prix des logements anciens",
        "publisher": "Insee et Notaires de France",
        "license": "etalab-2.0",
        "attribution": "Source : Insee, indices Notaires-Insee",
        "url": "https://www.insee.fr/fr/statistiques/series/102830616",
        "imported_at": "2026-10-07T04:29:45Z",
        "fresh": true
      },
      {
        "id": "anil_rents",
        "share_alike": false,
        "name": "Carte des loyers",
        "publisher": "Ministère du Logement et ANIL",
        "license": "etalab-2.0",
        "attribution": "Source : Carte des loyers, ministère du Logement / ANIL",
        "url": "https://www.data.gouv.fr/datasets/carte-des-loyers-indicateurs-de-loyers-dannonce-par-commune-en-2025/",
        "imported_at": "2026-10-09T15:35:40Z",
        "fresh": true
      },
      {
        "id": "rent_control",
        "share_alike": true,
        "name": "Encadrement des loyers",
        "publisher": "Ville de Paris ; Métropole de Lyon",
        "license": "odbl-1.0",
        "attribution": "Source : Ville de Paris (ODbL) ; Métropole de Lyon",
        "url": "https://www.data.gouv.fr/datasets/logement-encadrement-des-loyers",
        "imported_at": "2026-10-11T03:15:52Z",
        "fresh": true
      },
      {
        "id": "bdnb",
        "share_alike": false,
        "name": "Base de données nationale des bâtiments (BDNB)",
        "publisher": "CSTB",
        "license": "etalab-2.0",
        "attribution": "Source : CSTB, BDNB",
        "url": "https://bdnb.io/",
        "imported_at": "2026-10-10T17:28:04Z",
        "fresh": true
      },
      {
        "id": "georisques_ssp",
        "share_alike": false,
        "name": "Sites et sols pollués (CASIAS, SIS)",
        "publisher": "BRGM et ministère de la Transition écologique",
        "license": "etalab-2.0",
        "attribution": "Source : Géorisques, CASIAS et SIS",
        "url": "https://www.georisques.gouv.fr/",
        "imported_at": "2026-10-09T19:20:29Z",
        "fresh": true
      },
      {
        "id": "georisques_gaspar",
        "share_alike": false,
        "name": "Base GASPAR (risques et catastrophes naturelles des communes)",
        "publisher": "Ministère de la Transition écologique, Géorisques",
        "license": "etalab-2.0",
        "attribution": "Source : Géorisques, GASPAR",
        "url": "https://www.georisques.gouv.fr/",
        "imported_at": "2026-10-09T19:21:38Z",
        "fresh": true
      },
      {
        "id": "education_france",
        "share_alike": false,
        "name": "Annuaire de l'Éducation nationale",
        "publisher": "Ministère de l'Éducation nationale",
        "license": "etalab-2.0",
        "attribution": "Source : ministère de l'Éducation nationale",
        "url": "https://data.education.gouv.fr/",
        "imported_at": "2026-10-02T13:09:54Z",
        "fresh": true
      },
      {
        "id": "insee_bpe",
        "share_alike": false,
        "name": "Base permanente des équipements",
        "publisher": "Insee",
        "license": "etalab-2.0",
        "attribution": "Source : Insee, BPE",
        "url": "https://www.insee.fr/",
        "imported_at": "2026-10-07T02:37:35Z",
        "fresh": true
      },
      {
        "id": "mobility_database",
        "share_alike": null,
        "name": "Flux GTFS des réseaux de transport (Mobility Database)",
        "publisher": "Autorités organisatrices de la mobilité",
        "license": "per_feed",
        "attribution": "Sources : autorités organisatrices des réseaux de transport, licence propre à chaque flux (certains sous ODbL)",
        "url": "https://mobilitydatabase.org/",
        "imported_at": "2026-10-10T21:40:56Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
Exemple à Montréal, include=prices,rents,taxation :
{
  "data": {
    "location": {
      "latitude": 45.5246,
      "longitude": -73.584,
      "country": "CA",
      "precision": "input",
      "address": null,
      "geocoding": null,
      "zones": {
        "region": null,
        "subregion": {
          "code": "06",
          "name": "Montréal"
        },
        "county": {
          "code": "66",
          "name": "Montréal"
        },
        "municipality": {
          "code": "66023",
          "name": "Montréal"
        },
        "district": {
          "code": "REM21",
          "name": "Le Plateau-Mont-Royal"
        },
        "neighbourhood": null,
        "rental_survey_area": {
          "code": "Q10600120",
          "name": "Plateau-Mont-Royal"
        },
        "postal_area": {
          "code": "H2J",
          "name": "H2J"
        }
      },
      "parcel": null
    },
    "prices": {
      "status": "ok",
      "sale_price_per_m2": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "sale_price": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "trend": {
        "apartment": null,
        "house": null
      },
      "price_index": {
        "apartment": null,
        "house": null
      },
      "transactions": {
        "count": {
          "value": 23360,
          "unit": "count",
          "period": {
            "start": "2025-09-01",
            "end": "2026-08-31"
          },
          "zone": {
            "level": "subregion",
            "code": "06",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_land_registry_sales_12m",
          "source": "quebec_land_registry_stats"
        },
        "change": {
          "value": -6.9,
          "unit": "%",
          "period": {
            "start": "2025-09-01",
            "end": "2026-08-31"
          },
          "zone": {
            "level": "subregion",
            "code": "06",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": null,
          "range": null,
          "definition": "qc_land_registry_sales_change_1y",
          "source": "quebec_land_registry_stats"
        },
        "by_price_band": {
          "unit": "count",
          "total": 23360,
          "buckets": [
            {
              "code": "under_250k",
              "max": 250000,
              "count": 1357
            },
            {
              "code": "250k_500k",
              "min": 250000,
              "max": 500000,
              "count": 6746
            },
            {
              "code": "over_500k",
              "min": 500000,
              "count": 15257
            }
          ],
          "source": "quebec_land_registry_stats"
        },
        "monthly": "… (voir Prix)"
      },
      "assessed_values": {
        "average_single_family": {
          "value": 625650,
          "unit": "CAD",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_average_uniformized_value_single_family",
          "source": "quebec_municipal_valuations"
        },
        "average_per_dwelling": {
          "value": 363162,
          "unit": "CAD",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_average_uniformized_value_per_dwelling",
          "source": "quebec_municipal_valuations"
        },
        "roll_factor": {
          "value": 1.0,
          "unit": "ratio",
          "period": {
            "start": "2026-01-01",
            "end": "2026-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_roll_comparative_factor",
          "source": "quebec_municipal_valuations"
        }
      },
      "missing": {
        "sale_price_per_m2.apartment": "not_covered",
        "sale_price_per_m2.house": "not_covered",
        "sale_price_per_m2.all": "not_covered",
        "sale_price.apartment": "not_covered",
        "sale_price.house": "not_covered",
        "sale_price.all": "not_covered",
        "trend.apartment": "not_covered",
        "trend.house": "not_covered",
        "price_index.apartment": "not_covered",
        "price_index.house": "not_covered"
      }
    },
    "rents": {
      "status": "ok",
      "market_rent_per_m2": null,
      "average_rent": {
        "studio": {
          "value": 1014.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "one_bedroom": {
          "value": 1111.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "two_bedrooms": {
          "value": 1348.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "three_bedrooms_plus": {
          "value": 1692.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "all": {
          "value": 1272.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        }
      },
      "vacancy_rate": {
        "studio": {
          "value": 3.6,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "one_bedroom": {
          "value": 3.2,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "medium",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "two_bedrooms": {
          "value": 2.9,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "three_bedrooms_plus": {
          "value": 2.2,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "medium",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "all": {
          "value": 3.0,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        }
      },
      "rent_control": null,
      "regulation": {
        "tense_zone": null,
        "abc_zone": null
      },
      "missing": {
        "market_rent_per_m2": "not_covered",
        "rent_control": "not_covered",
        "regulation.tense_zone": "not_covered",
        "regulation.abc_zone": "not_covered"
      }
    },
    "taxation": {
      "status": "ok",
      "property_tax": {
        "year": 2026,
        "basis": "assessed_value",
        "total_rate": {
          "value": 0.4631,
          "unit": "CAD/100CAD",
          "period": {
            "start": "2026-01-01",
            "end": "2026-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_residential_property_tax_rate",
          "source": "quebec_municipal_taxes"
        },
        "components": {
          "residential": 0.4631,
          "special_residential": null,
          "non_residential": 2.4951,
          "industrial": null,
          "agricultural": 0.4631,
          "single_rate": false
        }
      },
      "waste_collection_rate": null,
      "estimate": {
        "roll_number": "984227435870000000",
        "total_value": 1041400,
        "municipal_property_tax": 4823,
        "unit": "CAD",
        "excludes": [
          "agglomeration_taxes",
          "municipal_fees",
          "school_tax"
        ]
      },
      "missing": {
        "waste_collection_rate": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_3KK4ZD4ECRDJU6",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:11Z",
    "sources": [
      {
        "id": "quebec_land_registry_stats",
        "share_alike": false,
        "name": "Statistiques du Registre foncier",
        "publisher": "Ministère des Ressources naturelles et des Forêts (MRNF)",
        "license": "cc-by-4.0",
        "attribution": "Source : MRNF, Registre foncier du Québec",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-11T03:16:00Z",
        "fresh": true
      },
      {
        "id": "quebec_municipal_valuations",
        "share_alike": false,
        "name": "Richesse foncière uniformisée et profil financier des municipalités",
        "publisher": "MAMH",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH",
        "url": "https://www.donneesquebec.ca/recherche/dataset/richesse-fonciere-uniformisee",
        "imported_at": "2026-10-11T03:15:55Z",
        "fresh": true
      },
      {
        "id": "cmhc_rental_market",
        "share_alike": false,
        "name": "Enquête sur les logements locatifs",
        "publisher": "Société canadienne d'hypothèques et de logement (SCHL)",
        "license": "cmhc-terms",
        "attribution": "Source : SCHL, Enquête sur les logements locatifs",
        "url": "https://www03.cmhc-schl.gc.ca/hmip-pimh/",
        "imported_at": "2026-10-11T04:05:07Z",
        "fresh": true
      },
      {
        "id": "quebec_municipal_taxes",
        "share_alike": false,
        "name": "Taux de taxe foncière des municipalités",
        "publisher": "MAMH",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rapports financiers des organismes municipaux",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-11T03:15:56Z",
        "fresh": true
      },
      {
        "id": "quebec_assessment_roll",
        "share_alike": false,
        "name": "Rôles d'évaluation foncière du Québec",
        "publisher": "Ministère des Affaires municipales et de l'Habitation (MAMH)",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rôles d'évaluation foncière",
        "url": "https://www.donneesquebec.ca/recherche/dataset/roles-d-evaluation-fonciere-du-quebec",
        "imported_at": "2026-10-11T04:26:40Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Prix

Prix de vente par zone et leur évolution, volume de transactions, et au Québec les valeurs foncières de référence. Chaque mesure est servie pour la zone la plus fine qui a assez de ventes pour être fiable, et dit laquelle.
Endpoint
GET https://app.open-connect.io/api/v1/prices
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
property_type chaîne apartment ou house
locale chaîne fr ou en
Réponse : data.prices
Champ Type FR BE QC Description
sale_price_per_m2 objet de Mesures ✓ — — Prix médian au m² des ventes des 12 derniers mois, par type : apartment, house, all. Calculé sur les ventes de logements de DVF
sale_price objet de Mesures — ✓ — Prix médian d'un bien vendu, par type, sur la dernière année publiée ; range porte le premier et le troisième quartile quand la source les publie
trend objet de Séries ✓ — — Prix médian au m² par année depuis 2014, par type, avec ses évolutions sur 1, 2 et 5 ans
price_index objet ✓ — — Indice Notaires-Insee des prix des logements anciens de la zone la plus proche (agglomération, département d'Île-de-France, région), par type : dernière valeur et évolution sur un an
transactions.count Mesure ✓ ✓ ✓ Nombre de ventes sur 12 mois : zone la plus fine en France, commune en Belgique, région administrative au Québec (Registre foncier)
transactions.change Mesure — — ✓ Évolution du nombre de ventes sur un an, en %
transactions.by_price_band Répartition — — ✓ Ventes des 12 derniers mois par tranche de prix (moins de 250 000 $, 250 000 à 500 000 $, plus de 500 000 $)
transactions.monthly Série — — ✓ Ventes par mois sur 12 mois
assessed_values.average_single_family Mesure — — ✓ Évaluation moyenne uniformisée d'une résidence d'un logement de la municipalité (copropriétés comprises)
assessed_values.average_per_dwelling Mesure — — ✓ Évaluation moyenne uniformisée par logement
assessed_values.roll_factor Mesure — — ✓ Facteur comparatif du rôle de la municipalité : une valeur au rôle multipliée par ce facteur est ramenée au marché de l'exercice
En Belgique, la vente une à une n'est pas publiée ; au Québec, les ventes ne sont publiées qu'à l'acte, contre paiement : les prix servis sont des statistiques de zone et, au Québec, les valeurs du rôle d'évaluation (voir Bien et bâtiment).
Paris :
{
  "data": {
    "prices": {
      "status": "ok",
      "sale_price_per_m2": {
        "apartment": {
          "value": 10000,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "751114317",
            "name": "Roquette 17",
            "country": "FR"
          },
          "sample_size": 80,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        },
        "house": {
          "value": 12740,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 250,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        },
        "all": {
          "value": 10000,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "751114317",
            "name": "Roquette 17",
            "country": "FR"
          },
          "sample_size": 80,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        }
      },
      "sale_price": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "trend": {
        "apartment": {
          "unit": "EUR/m2",
          "zone": {
            "level": "district",
            "code": "75111",
            "name": "Paris 11e Arrondissement",
            "country": "FR"
          },
          "points": [
            {
              "period": {
                "start": "2014-01-01",
                "end": "2014-12-31"
              },
              "value": 8051,
              "sample_size": 2076
            },
            {
              "period": {
                "start": "2015-01-01",
                "end": "2015-12-31"
              },
              "value": 7946,
              "sample_size": 2445
            },
            {
              "period": {
                "start": "2016-01-01",
                "end": "2016-12-31"
              },
              "value": 8281,
              "sample_size": 2451
            },
            {
              "period": {
                "start": "2017-01-01",
                "end": "2017-12-31"
              },
              "value": 8938,
              "sample_size": 2575
            },
            {
              "period": {
                "start": "2018-01-01",
                "end": "2018-12-31"
              },
              "value": 9597,
              "sample_size": 2508
            },
            {
              "period": {
                "start": "2019-01-01",
                "end": "2019-12-31"
              },
              "value": 10208,
              "sample_size": 2699
            },
            {
              "period": {
                "start": "2020-01-01",
                "end": "2020-12-31"
              },
              "value": 11042,
              "sample_size": 2223
            },
            {
              "period": {
                "start": "2021-01-01",
                "end": "2021-12-31"
              },
              "value": 11027,
              "sample_size": 2591
            },
            {
              "period": {
                "start": "2022-01-01",
                "end": "2022-12-31"
              },
              "value": 10870,
              "sample_size": 2736
            },
            {
              "period": {
                "start": "2023-01-01",
                "end": "2023-12-31"
              },
              "value": 10278,
              "sample_size": 2296
            },
            {
              "period": {
                "start": "2024-01-01",
                "end": "2024-12-31"
              },
              "value": 9795,
              "sample_size": 2083
            },
            {
              "period": {
                "start": "2025-01-01",
                "end": "2025-12-31"
              },
              "value": 9932,
              "sample_size": 2371
            }
          ],
          "changes": {
            "1y": 1.4,
            "2y": -3.4,
            "4y": -9.9
          },
          "source": "area_prices"
        },
        "house": {
          "unit": "EUR/m2",
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "points": [
            {
              "period": {
                "start": "2014-01-01",
                "end": "2014-12-31"
              },
              "value": 10560,
              "sample_size": 114
            },
            {
              "period": {
                "start": "2015-01-01",
                "end": "2015-12-31"
              },
              "value": 10135,
              "sample_size": 144
            },
            {
              "period": {
                "start": "2016-01-01",
                "end": "2016-12-31"
              },
              "value": 11190,
              "sample_size": 138
            },
            {
              "period": {
                "start": "2017-01-01",
                "end": "2017-12-31"
              },
              "value": 11760,
              "sample_size": 153
            },
            {
              "period": {
                "start": "2018-01-01",
                "end": "2018-12-31"
              },
              "value": 13056,
              "sample_size": 159
            },
            {
              "period": {
                "start": "2019-01-01",
                "end": "2019-12-31"
              },
              "value": 13535,
              "sample_size": 158
            },
            {
              "period": {
                "start": "2020-01-01",
                "end": "2020-12-31"
              },
              "value": 13725,
              "sample_size": 135
            },
            {
              "period": {
                "start": "2021-01-01",
                "end": "2021-12-31"
              },
              "value": 15672,
              "sample_size": 174
            },
            {
              "period": {
                "start": "2022-01-01",
                "end": "2022-12-31"
              },
              "value": 15315,
              "sample_size": 156
            },
            {
              "period": {
                "start": "2023-01-01",
                "end": "2023-12-31"
              },
              "value": 14509,
              "sample_size": 132
            },
            {
              "period": {
                "start": "2024-01-01",
                "end": "2024-12-31"
              },
              "value": 12636,
              "sample_size": 103
            },
            {
              "period": {
                "start": "2025-01-01",
                "end": "2025-12-31"
              },
              "value": 12861,
              "sample_size": 147
            }
          ],
          "changes": {
            "1y": 1.8,
            "2y": -11.4,
            "4y": -17.9
          },
          "source": "area_prices"
        }
      },
      "price_index": {
        "apartment": {
          "zone_name": "Paris",
          "change_1y": 0.67,
          "as_of": "2026-04-01",
          "provisional": true,
          "source": "insee_housing_prices"
        },
        "house": {
          "zone_name": "Île-de-France",
          "change_1y": -1.42,
          "as_of": "2026-04-01",
          "provisional": true,
          "source": "insee_housing_prices"
        }
      },
      "transactions": {
        "count": {
          "value": 80,
          "unit": "count",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "751114317",
            "name": "Roquette 17",
            "country": "FR"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "dvf_residential_sales_count",
          "source": "area_prices"
        },
        "change": null,
        "by_price_band": null,
        "monthly": null
      },
      "assessed_values": null,
      "missing": {
        "sale_price.apartment": "not_covered",
        "sale_price.house": "not_covered",
        "sale_price.all": "not_covered",
        "transactions.change": "not_covered",
        "transactions.by_price_band": "not_covered",
        "transactions.monthly": "not_covered",
        "assessed_values": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_FZ7ZDK2O7K5ZNP",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:40Z",
    "sources": [
      {
        "id": "area_prices",
        "share_alike": false,
        "name": "Prix médians par zone, calculés depuis DVF",
        "publisher": "immosquare, d'après la DGFiP",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, DVF ; calcul immosquare",
        "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
        "imported_at": "2026-10-10T20:32:59Z",
        "fresh": true
      },
      {
        "id": "insee_housing_prices",
        "share_alike": false,
        "name": "Indices Notaires-Insee des prix des logements anciens",
        "publisher": "Insee et Notaires de France",
        "license": "etalab-2.0",
        "attribution": "Source : Insee, indices Notaires-Insee",
        "url": "https://www.insee.fr/fr/statistiques/series/102830616",
        "imported_at": "2026-10-07T04:29:45Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
Ixelles :
{
  "data": {
    "prices": {
      "status": "ok",
      "sale_price_per_m2": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "sale_price": {
        "apartment": {
          "value": 342000,
          "unit": "EUR",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "21009",
            "name": "Ixelles",
            "country": "BE"
          },
          "sample_size": 1023,
          "reliability": "high",
          "range": null,
          "definition": "statbel_median_price",
          "source": "statbel_prices"
        },
        "house": {
          "value": 785000,
          "unit": "EUR",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "21009",
            "name": "Ixelles",
            "country": "BE"
          },
          "sample_size": 116,
          "reliability": "high",
          "range": null,
          "definition": "statbel_median_price",
          "source": "statbel_prices"
        },
        "all": null
      },
      "trend": {
        "apartment": null,
        "house": null
      },
      "price_index": {
        "apartment": null,
        "house": null
      },
      "transactions": {
        "count": {
          "value": 1139,
          "unit": "count",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "21009",
            "name": "Ixelles",
            "country": "BE"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "statbel_sales_count",
          "source": "statbel_prices"
        },
        "change": null,
        "by_price_band": null,
        "monthly": null
      },
      "assessed_values": null,
      "missing": {
        "sale_price_per_m2.apartment": "not_covered",
        "sale_price_per_m2.house": "not_covered",
        "sale_price_per_m2.all": "not_covered",
        "sale_price.all": "not_found",
        "trend.apartment": "not_covered",
        "trend.house": "not_covered",
        "price_index.apartment": "not_covered",
        "price_index.house": "not_covered",
        "transactions.change": "not_covered",
        "transactions.by_price_band": "not_covered",
        "transactions.monthly": "not_covered",
        "assessed_values": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_XYWGDQKPETULSY",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "statbel_prices",
        "share_alike": false,
        "name": "Prix de l'immobilier",
        "publisher": "Statbel",
        "license": "cc-by-4.0",
        "attribution": "Source : Statbel",
        "url": "https://statbel.fgov.be/",
        "imported_at": "2026-10-07T05:19:06Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
Montréal :
{
  "data": {
    "prices": {
      "status": "ok",
      "sale_price_per_m2": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "sale_price": {
        "apartment": null,
        "house": null,
        "all": null
      },
      "trend": {
        "apartment": null,
        "house": null
      },
      "price_index": {
        "apartment": null,
        "house": null
      },
      "transactions": {
        "count": {
          "value": 23360,
          "unit": "count",
          "period": {
            "start": "2025-09-01",
            "end": "2026-08-31"
          },
          "zone": {
            "level": "subregion",
            "code": "06",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_land_registry_sales_12m",
          "source": "quebec_land_registry_stats"
        },
        "change": {
          "value": -6.9,
          "unit": "%",
          "period": {
            "start": "2025-09-01",
            "end": "2026-08-31"
          },
          "zone": {
            "level": "subregion",
            "code": "06",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": null,
          "range": null,
          "definition": "qc_land_registry_sales_change_1y",
          "source": "quebec_land_registry_stats"
        },
        "by_price_band": {
          "unit": "count",
          "total": 23360,
          "buckets": [
            {
              "code": "under_250k",
              "max": 250000,
              "count": 1357
            },
            {
              "code": "250k_500k",
              "min": 250000,
              "max": 500000,
              "count": 6746
            },
            {
              "code": "over_500k",
              "min": 500000,
              "count": 15257
            }
          ],
          "source": "quebec_land_registry_stats"
        },
        "monthly": {
          "unit": "count",
          "zone": {
            "level": "subregion",
            "code": "06",
            "name": "Montréal",
            "country": "CA"
          },
          "points": [
            {
              "period": {
                "start": "2025-09-01",
                "end": "2025-09-30"
              },
              "value": 1918
            },
            {
              "period": {
                "start": "2025-10-01",
                "end": "2025-10-31"
              },
              "value": 2074
            },
            {
              "period": {
                "start": "2025-11-01",
                "end": "2025-11-30"
              },
              "value": 1733
            },
            {
              "period": {
                "start": "2025-12-01",
                "end": "2025-12-31"
              },
              "value": 2133
            },
            {
              "period": {
                "start": "2026-01-01",
                "end": "2026-01-31"
              },
              "value": 1341
            },
            {
              "period": {
                "start": "2026-02-01",
                "end": "2026-02-28"
              },
              "value": 1320
            },
            {
              "period": {
                "start": "2026-03-01",
                "end": "2026-03-31"
              },
              "value": 1653
            },
            {
              "period": {
                "start": "2026-04-01",
                "end": "2026-04-30"
              },
              "value": 1872
            },
            {
              "period": {
                "start": "2026-05-01",
                "end": "2026-05-31"
              },
              "value": 2306
            },
            {
              "period": {
                "start": "2026-06-01",
                "end": "2026-06-30"
              },
              "value": 3102
            },
            {
              "period": {
                "start": "2026-07-01",
                "end": "2026-07-31"
              },
              "value": 2249
            },
            {
              "period": {
                "start": "2026-08-01",
                "end": "2026-08-31"
              },
              "value": 1659
            }
          ],
          "changes": null,
          "source": "quebec_land_registry_stats"
        }
      },
      "assessed_values": {
        "average_single_family": {
          "value": 625650,
          "unit": "CAD",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_average_uniformized_value_single_family",
          "source": "quebec_municipal_valuations"
        },
        "average_per_dwelling": {
          "value": 363162,
          "unit": "CAD",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_average_uniformized_value_per_dwelling",
          "source": "quebec_municipal_valuations"
        },
        "roll_factor": {
          "value": 1.0,
          "unit": "ratio",
          "period": {
            "start": "2026-01-01",
            "end": "2026-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_roll_comparative_factor",
          "source": "quebec_municipal_valuations"
        }
      },
      "missing": {
        "sale_price_per_m2.apartment": "not_covered",
        "sale_price_per_m2.house": "not_covered",
        "sale_price_per_m2.all": "not_covered",
        "sale_price.apartment": "not_covered",
        "sale_price.house": "not_covered",
        "sale_price.all": "not_covered",
        "trend.apartment": "not_covered",
        "trend.house": "not_covered",
        "price_index.apartment": "not_covered",
        "price_index.house": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_4RJUAQD7JYHIFH",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "quebec_land_registry_stats",
        "share_alike": false,
        "name": "Statistiques du Registre foncier",
        "publisher": "Ministère des Ressources naturelles et des Forêts (MRNF)",
        "license": "cc-by-4.0",
        "attribution": "Source : MRNF, Registre foncier du Québec",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-11T03:16:00Z",
        "fresh": true
      },
      {
        "id": "quebec_municipal_valuations",
        "share_alike": false,
        "name": "Richesse foncière uniformisée et profil financier des municipalités",
        "publisher": "MAMH",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH",
        "url": "https://www.donneesquebec.ca/recherche/dataset/richesse-fonciere-uniformisee",
        "imported_at": "2026-10-11T03:15:55Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Ventes

Les ventes une à une autour d'un lieu, les plus récentes d'abord. France uniquement : les autres pays ne publient pas leurs ventes à l'unité.
Endpoint
GET https://app.open-connect.io/api/v1/sales
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
radius entier Rayon en mètres, de 50 à 2000 ; 500 par défaut
property_type chaîne apartment, house, commercial, land, dependency
since, until date Bornes de date de vente, incluses ; depuis 2014
min_surface, max_surface nombre Bornes de surface en m²
comparable_only booléen true : seulement les ventes d'un seul logement, de gré à gré, utilisables comme comparables
sort chaîne -date (par défaut) ou distance
page[size] entier De 1 à 100 ; 20 par défaut
page[after] chaîne Curseur de la page suivante, lu dans data.sales.next_cursor
Réponse : data.sales
Champ Type Description
summary.count entier Ventes répondant aux filtres dans le rayon
summary.median_price_per_m2 Mesure Prix médian au m² des ventes comparables de la sélection
summary.from, summary.to date Première et dernière date de vente de la sélection
items[] liste Les ventes de la page
items[].id chaîne Identifiant stable de la vente
items[].date date Date de la mutation
items[].nature chaîne sale, off_plan_sale (vente en l'état futur d'achèvement), auction, exchange, other
items[].property_type chaîne Type du bien principal
items[].price objet value, unit
items[].price_per_m2 nombre \ null
items[].surface nombre \ null
items[].land_surface nombre \ null
items[].rooms entier \ null
items[].address chaîne Adresse publiée (numéro et voie)
items[].latitude, items[].longitude nombre Position de la parcelle
items[].distance_m entier Distance au lieu demandé
items[].parcels liste Identifiants des parcelles cadastrales vendues
items[].multi_property booléen Plusieurs biens vendus ensemble pour un prix global
items[].comparable booléen Vente d'un seul logement, de gré à gré : utilisable comme comparable
items[].revaluation objet \ null
items[].source chaîne dvf (depuis 2021) ou dvf_plus (2014 à 2020)
next_cursor chaîne \ null
{
  "data": {
    "sales": {
      "status": "ok",
      "summary": {
        "count": 1654,
        "median_price_per_m2": {
          "value": 10652,
          "unit": "EUR/m2",
          "period": {
            "start": "2021-01-05",
            "end": "2025-12-30"
          },
          "zone": null,
          "sample_size": 1275,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2_comparable",
          "source": "dvf"
        },
        "from": "2021-01-05",
        "to": "2025-12-30"
      },
      "items": [
        {
          "id": "dvf:2023:75:0486931594072edacc3ec4b5",
          "date": "2023-01-25",
          "nature": "sale",
          "property_type": "apartment",
          "price": {
            "value": 1285000,
            "unit": "EUR"
          },
          "price_per_m2": 13385,
          "surface": 96.0,
          "land_surface": null,
          "rooms": 5,
          "address": "95 Rue Sedaine",
          "latitude": 48.85915,
          "longitude": 2.379099,
          "distance_m": 9,
          "parcels": [
            "75111000BL0013"
          ],
          "multi_property": false,
          "comparable": true,
          "revaluation": {
            "value": 1188000,
            "change": -7.5,
            "index_zone": "Paris",
            "index_date": "2026-04-01",
            "provisional": true
          },
          "source": "dvf"
        },
        {
          "id": "dvf:2023:75:8859d046ba9cc68a5adeee6e",
          "date": "2023-08-01",
          "nature": "sale",
          "property_type": "apartment",
          "price": {
            "value": 433036,
            "unit": "EUR"
          },
          "price_per_m2": 12029,
          "surface": 36.0,
          "land_surface": null,
          "rooms": 2,
          "address": "95 Rue Sedaine",
          "latitude": 48.85915,
          "longitude": 2.379099,
          "distance_m": 9,
          "parcels": [
            "75111000BL0013"
          ],
          "multi_property": false,
          "comparable": true,
          "revaluation": {
            "value": 415000,
            "change": -4.1,
            "index_zone": "Paris",
            "index_date": "2026-04-01",
            "provisional": true
          },
          "source": "dvf"
        },
        {
          "id": "dvf:2024:75:a83c7a7e1574c397181dfa8c",
          "date": "2024-04-22",
          "nature": "sale",
          "property_type": "commercial",
          "price": {
            "value": 160000,
            "unit": "EUR"
          },
          "price_per_m2": null,
          "surface": 48.0,
          "land_surface": null,
          "rooms": 0,
          "address": "95 Rue Sedaine",
          "latitude": 48.85915,
          "longitude": 2.379099,
          "distance_m": 9,
          "parcels": [
            "75111000BL0013"
          ],
          "multi_property": false,
          "comparable": true,
          "revaluation": null,
          "source": "dvf"
        }
      ],
      "next_cursor": "eyJkIjoiMjAyMy0wMS0yNSIsImkiOjMxNDE1OX0",
      "missing": {}
    }
  },
  "meta": {
    "request_id": "req_RC8UW8QTWTAHD2",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:40Z",
    "sources": [
      {
        "id": "dvf",
        "share_alike": false,
        "name": "Demandes de valeurs foncières géolocalisées",
        "publisher": "DGFiP, préparé par Etalab",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, DVF géolocalisées (Etalab) ; traitement immosquare",
        "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
        "imported_at": "2026-10-09T03:20:30Z",
        "fresh": true
      },
      {
        "id": "insee_housing_prices",
        "share_alike": false,
        "name": "Indices Notaires-Insee des prix des logements anciens",
        "publisher": "Insee et Notaires de France",
        "license": "etalab-2.0",
        "attribution": "Source : Insee, indices Notaires-Insee",
        "url": "https://www.insee.fr/fr/statistiques/series/102830616",
        "imported_at": "2026-10-07T04:29:45Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
DVF ne publie ni le nom des parties ni l'étage ; ses conditions de réutilisation interdisent de chercher à identifier les personnes et d'indexer ces données dans un moteur de recherche : une page publique qui afficherait ces ventes doit être exclue de l'indexation (noindex).

Loyers

Loyers de marché, loyers de référence là où ils sont encadrés, et inoccupation des logements locatifs.
Endpoint
GET https://app.open-connect.io/api/v1/rents
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
property_type chaîne apartment ou house
locale chaîne fr ou en
Réponse : data.rents
Champ Type FR BE QC Description
market_rent_per_m2 objet de Mesures ✓ — — Loyer mensuel charges comprises au m², estimé à partir des annonces (Carte des loyers), par type : apartment, apartment_1_2_rooms, apartment_3_plus_rooms, house ; range porte l'intervalle de prédiction
average_rent objet de Mesures — — ✓ Loyer mensuel moyen des appartements de l'enquête d'octobre de la SCHL, par taille : studio, one_bedroom, two_bedrooms, three_bedrooms_plus, all. Quartier de l'enquête (rental_survey_area) quand le point y est et qu'il est publié, sinon municipalité
vacancy_rate objet de Mesures — — ✓ Taux d'inoccupation des mêmes logements, en %
rent_control objet \ null ◐ — —
regulation.tense_zone booléen \ null ✓ — —
regulation.abc_zone chaîne \ null ✓ — —
{
  "data": {
    "rents": {
      "status": "ok",
      "market_rent_per_m2": {
        "apartment": {
          "value": 31.72,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 17411,
          "reliability": "high",
          "range": {
            "low": 25.17,
            "high": 39.98
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        },
        "apartment_1_2_rooms": {
          "value": 33.28,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 14088,
          "reliability": "high",
          "range": {
            "low": 26.43,
            "high": 41.89
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        },
        "apartment_3_plus_rooms": {
          "value": 30.42,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 3306,
          "reliability": "high",
          "range": {
            "low": 24.39,
            "high": 37.93
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        },
        "house": {
          "value": 24.79,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR",
            "note": "estimation à la maille de communes"
          },
          "sample_size": 479,
          "reliability": "medium",
          "range": {
            "low": 14.12,
            "high": 43.55
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        }
      },
      "average_rent": null,
      "vacancy_rate": null,
      "rent_control": {
        "zone": {
          "level": "neighbourhood",
          "code": "751114317",
          "name": "Roquette",
          "country": "FR"
        },
        "year": 2025,
        "unit": "EUR/m2/month",
        "reference_rents": [
          {
            "rooms": "1",
            "construction_period": "before_1946",
            "furnished": false,
            "reference": 30.5,
            "increased": 36.6,
            "reduced": 21.4
          },
          {
            "rooms": "1",
            "construction_period": "before_1946",
            "furnished": true,
            "reference": 34.8,
            "increased": 41.8,
            "reduced": 24.4
          },
          {
            "rooms": "1",
            "construction_period": "after_1990",
            "furnished": false,
            "reference": 25.7,
            "increased": 30.8,
            "reduced": 18.0
          },
          {
            "rooms": "1",
            "construction_period": "after_1990",
            "furnished": true,
            "reference": 29.3,
            "increased": 35.2,
            "reduced": 20.5
          },
          {
            "…": "28 de plus"
          }
        ],
        "source": "rent_control"
      },
      "regulation": {
        "tense_zone": true,
        "abc_zone": "Abis"
      },
      "missing": {
        "average_rent": "not_covered",
        "vacancy_rate": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_VFFBEBMX4D9SND",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:06Z",
    "sources": [
      {
        "id": "anil_rents",
        "share_alike": false,
        "name": "Carte des loyers",
        "publisher": "Ministère du Logement et ANIL",
        "license": "etalab-2.0",
        "attribution": "Source : Carte des loyers, ministère du Logement / ANIL",
        "url": "https://www.data.gouv.fr/datasets/carte-des-loyers-indicateurs-de-loyers-dannonce-par-commune-en-2025/",
        "imported_at": "2026-10-09T15:35:40Z",
        "fresh": true
      },
      {
        "id": "rent_control",
        "share_alike": true,
        "name": "Encadrement des loyers",
        "publisher": "Ville de Paris ; Métropole de Lyon",
        "license": "odbl-1.0",
        "attribution": "Source : Ville de Paris (ODbL) ; Métropole de Lyon",
        "url": "https://www.data.gouv.fr/datasets/logement-encadrement-des-loyers",
        "imported_at": "2026-10-11T03:15:52Z",
        "fresh": true
      },
      {
        "id": "tense_zones",
        "share_alike": false,
        "name": "Communes en zone tendue",
        "publisher": "Ministère du Logement",
        "license": "etalab-2.0",
        "attribution": "Source : ministère du Logement",
        "url": "https://www.data.gouv.fr/",
        "imported_at": "2026-10-09T15:34:35Z",
        "fresh": true
      },
      {
        "id": "abc_zoning",
        "share_alike": false,
        "name": "Zonage ABC",
        "publisher": "Ministère du Logement",
        "license": "etalab-2.0",
        "attribution": "Source : ministère du Logement, zonage ABC",
        "url": "https://www.data.gouv.fr/datasets/liste-des-communes-selon-le-zonage-abc/",
        "imported_at": "2026-10-09T15:34:42Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "rents": {
      "status": "ok",
      "market_rent_per_m2": null,
      "average_rent": {
        "studio": {
          "value": 1014.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "one_bedroom": {
          "value": 1111.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "two_bedrooms": {
          "value": 1348.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "three_bedrooms_plus": {
          "value": 1692.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        },
        "all": {
          "value": 1272.0,
          "unit": "CAD/month",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_average_rent",
          "source": "cmhc_rental_market"
        }
      },
      "vacancy_rate": {
        "studio": {
          "value": 3.6,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "one_bedroom": {
          "value": 3.2,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "medium",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "two_bedrooms": {
          "value": 2.9,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "three_bedrooms_plus": {
          "value": 2.2,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "medium",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        },
        "all": {
          "value": 3.0,
          "unit": "%",
          "period": {
            "start": "2025-10-01",
            "end": "2025-10-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "cmhc_rms_vacancy_rate",
          "source": "cmhc_rental_market"
        }
      },
      "rent_control": null,
      "regulation": {
        "tense_zone": null,
        "abc_zone": null
      },
      "missing": {
        "market_rent_per_m2": "not_covered",
        "rent_control": "not_covered",
        "regulation.tense_zone": "not_covered",
        "regulation.abc_zone": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_UPCONYUT7IPN7A",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "cmhc_rental_market",
        "share_alike": false,
        "name": "Enquête sur les logements locatifs",
        "publisher": "Société canadienne d'hypothèques et de logement (SCHL)",
        "license": "cmhc-terms",
        "attribution": "Source : SCHL, Enquête sur les logements locatifs",
        "url": "https://www03.cmhc-schl.gc.ca/hmip-pimh/",
        "imported_at": "2026-10-11T04:05:07Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Bien et bâtiment

Les biens connus au point, le bâtiment qui les porte et sa copropriété.
Une adresse désigne souvent plusieurs biens (les lots d'un immeuble, les unités d'un plex) : properties[] les sert tous, et vous choisissez. Si vous connaissez la surface, le nombre de pièces ou le lot de votre bien, passez-les : open-connect classe les candidats par ressemblance.
Endpoint
GET https://app.open-connect.io/api/v1/property
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
radius entier Rayon en mètres autour du point pour rattacher les biens, de 10 à 100 ; 30 par défaut
surface nombre Surface habitable connue du bien, en m² : classe les biens candidats par ressemblance
rooms entier Nombre de pièces connu du bien : même usage
unit chaîne Numéro de lot ou d'appartement s'il est connu : le bien correspondant passe en tête
locale chaîne fr ou en
Réponse : data.property
Champ Type FR BE QC Description
properties[] liste ✓ — ✓ Biens au point. En France, chaque lot ou parcelle vendu depuis 2014, reconstitué depuis les ventes, les DPE et le bâtiment ; au Québec, chaque unité d'évaluation du rôle
properties[].id chaîne ✓ — ✓ Identifiant stable du bien
properties[].type chaîne ✓ — ✓ apartment, house, commercial, land, dependency, other
properties[].address chaîne ✓ — ✓ Adresse
properties[].unit chaîne \ null ✓ — ✓
properties[].floor entier \ null ✓ — —
properties[].rooms entier \ null ✓ — —
properties[].surfaces objet ✓ — ✓ living (habitable), carrez, land (terrain), floor_area (aire de plancher au rôle), en m² ; null si inconnue
properties[].construction_year entier \ null ✓ — ✓
properties[].energy objet \ null ✓ — —
properties[].last_sale objet \ null ✓ — —
properties[].last_transfer_on date \ null — — ✓
properties[].assessment objet \ null — — ✓
properties[].dwellings entier \ null — — ✓
properties[].usage objet \ null — — ✓
properties[].identifiers objet ✓ — ✓ parcel (cadastre), lots (cadastre du Québec), roll_number
properties[].events[] liste d'Événements ✓ — — Ventes, DPE et autorisations du bien
properties[].provenance objet ✓ — ✓ La source de chaque champ, quand plusieurs sources le donnent : {"living": "dvf", "construction_year": "bdnb"}
properties[].distance_m entier ✓ — ✓ Distance au lieu demandé
properties[].match objet \ null ✓ — ✓
building objet \ null ✓ — ◐
copro objet \ null ✓ — —
{
  "data": {
    "property": {
      "status": "ok",
      "properties": [
        {
          "id": "fr_estate_69383000AP0006:2",
          "type": "commercial",
          "address": "96 rue de la Part-Dieu, 69003 Lyon 3e Arrondissement",
          "unit": "2",
          "floor": null,
          "rooms": 0,
          "surfaces": {
            "living": 140.0,
            "carrez": 127.22,
            "land": null,
            "floor_area": null
          },
          "construction_year": 1929,
          "construction_year_estimated": null,
          "energy": null,
          "last_sale": {
            "date": "2021-11-09",
            "price": {
              "value": 570000,
              "unit": "EUR"
            }
          },
          "last_transfer_on": null,
          "assessment": null,
          "dwellings": null,
          "usage": null,
          "identifiers": {
            "parcel": "69383000AP0006",
            "lots": null,
            "roll_number": null
          },
          "events": [
            {
              "type": "sale",
              "date": "2021-11-09",
              "price": {
                "value": 570000,
                "unit": "EUR"
              },
              "surface": 140.0,
              "source": "dvf"
            }
          ],
          "provenance": {
            "living_surface": "dvf",
            "carrez_surface": "dvf",
            "rooms": "dvf",
            "construction_year": "bdnb",
            "construction_period": "anah_copros",
            "copro_id": "anah_copros",
            "building_id": "bdnb"
          },
          "distance_m": 11
        },
        {
          "id": "fr_estate_69383000AP0006:7",
          "type": "apartment",
          "address": "96 rue de la Part-Dieu, 69003 Lyon 3e Arrondissement",
          "unit": "7",
          "floor": 0,
          "rooms": 4,
          "surfaces": {
            "living": 113.0,
            "carrez": 96.67,
            "land": null,
            "floor_area": null
          },
          "construction_year": 1929,
          "construction_year_estimated": null,
          "energy": {
            "class": "E",
            "ghg_class": "C",
            "consumption_kwh_m2": 289.5,
            "diagnosed_on": "2023-10-05"
          },
          "last_sale": {
            "date": "2024-11-14",
            "price": {
              "value": 455000,
              "unit": "EUR"
            }
          },
          "last_transfer_on": null,
          "assessment": null,
          "dwellings": null,
          "usage": null,
          "identifiers": {
            "parcel": "69383000AP0006",
            "lots": null,
            "roll_number": null
          },
          "events": [
            {
              "type": "sale",
              "date": "2024-11-14",
              "price": {
                "value": 455000,
                "unit": "EUR"
              },
              "surface": 113.0,
              "source": "dvf"
            },
            {
              "type": "dpe",
              "date": "2023-10-05",
              "price": null,
              "surface": 96.7,
              "source": "ademe_dpe"
            }
          ],
          "provenance": {
            "living_surface": "dvf",
            "carrez_surface": "dvf",
            "rooms": "dvf",
            "floor": "ademe_dpe",
            "construction_year": "bdnb",
            "construction_period": "ademe_dpe",
            "energy_class": "ademe_dpe",
            "copro_id": "anah_copros",
            "building_id": "bdnb"
          },
          "distance_m": 11
        }
      ],
      "building": {
        "id": "bdnb-bg-Q8H6-4V5G-6ER8",
        "construction_year": 1929,
        "levels": 7,
        "dwellings": 10,
        "height_m": 28.0,
        "footprint_m2": 226,
        "usage": "Commercial et services, Résidentiel",
        "wall_material": "beton",
        "roof_material": "tuiles",
        "heritage": {
          "name": "bourse du travail",
          "distance_m": 273
        },
        "fiber_connections": 1,
        "social_dwellings": null,
        "source": "bdnb"
      },
      "copro": {
        "id": "AA3969789",
        "name": "SDC 96 RUE DE LA PART DIEU",
        "lots": {
          "total": 14,
          "housing": 12,
          "parking": 0
        },
        "construction_period": "Avant 1949",
        "registered_on": "2017-05-04",
        "syndic": {
          "type": "professional",
          "name": "REGIE DE L'OPERA",
          "mandate_ends_on": "2027-03-31"
        },
        "source": "anah_copros"
      },
      "missing": {
        "building.social_dwellings": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_BOSYL49MDTYHVW",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:06Z",
    "sources": [
      {
        "id": "estates",
        "share_alike": false,
        "name": "Fiches biens",
        "publisher": "immosquare, d'après DVF, BDNB, ADEME et Anah",
        "license": "etalab-2.0",
        "attribution": "Sources : DGFiP, CSTB, ADEME, Anah ; traitement immosquare",
        "url": "https://www.immosquare.com/",
        "imported_at": "2026-10-10T03:48:49Z",
        "fresh": true
      },
      {
        "id": "dvf",
        "share_alike": false,
        "name": "Demandes de valeurs foncières géolocalisées",
        "publisher": "DGFiP, préparé par Etalab",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, DVF géolocalisées (Etalab) ; traitement immosquare",
        "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
        "imported_at": "2026-10-09T03:20:30Z",
        "fresh": true
      },
      {
        "id": "bdnb",
        "share_alike": false,
        "name": "Base de données nationale des bâtiments (BDNB)",
        "publisher": "CSTB",
        "license": "etalab-2.0",
        "attribution": "Source : CSTB, BDNB",
        "url": "https://bdnb.io/",
        "imported_at": "2026-10-10T17:28:04Z",
        "fresh": true
      },
      {
        "id": "anah_copros",
        "share_alike": false,
        "name": "Registre national des copropriétés",
        "publisher": "Anah",
        "license": "etalab-2.0",
        "attribution": "Source : Anah, registre des copropriétés",
        "url": "https://www.data.gouv.fr/datasets/registre-national-dimmatriculation-des-coproprietes/",
        "imported_at": "2026-10-09T02:07:54Z",
        "fresh": true
      },
      {
        "id": "ademe_dpe",
        "share_alike": false,
        "name": "Diagnostics de performance énergétique des logements",
        "publisher": "ADEME",
        "license": "etalab-2.0",
        "attribution": "Source : ADEME, DPE",
        "url": "https://data.ademe.fr/",
        "imported_at": "2026-10-09T02:03:54Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "property": {
      "status": "ok",
      "properties": [
        {
          "id": "qc_roll_66023984227435870000000",
          "type": "house",
          "address": "4585 rue Saint-Denis",
          "unit": null,
          "floor": null,
          "rooms": null,
          "surfaces": {
            "living": null,
            "carrez": null,
            "land": 194.2,
            "floor_area": 179.9
          },
          "construction_year": 1947,
          "construction_year_estimated": false,
          "energy": null,
          "last_sale": null,
          "last_transfer_on": "2021-07-05",
          "assessment": {
            "roll_year": 2026,
            "market_date": "2024-07-01",
            "land_value": 514600,
            "building_value": 526800,
            "total_value": 1041400,
            "previous_value": 913500,
            "change": 14.0,
            "uniformized_value": 1041400
          },
          "dwellings": 1,
          "usage": {
            "code": "1000",
            "label": "Logement"
          },
          "identifiers": {
            "parcel": null,
            "lots": [
              "1443981"
            ],
            "roll_number": "984227435870000000"
          },
          "events": [],
          "provenance": null,
          "distance_m": 13
        },
        {
          "id": "qc_roll_66023984227495430000000",
          "type": "multi_dwelling",
          "address": "4577-4581 rue Saint-Denis",
          "unit": null,
          "floor": null,
          "rooms": null,
          "surfaces": {
            "living": null,
            "carrez": null,
            "land": 194.2,
            "floor_area": 313.3
          },
          "construction_year": 1900,
          "construction_year_estimated": null,
          "energy": null,
          "last_sale": null,
          "last_transfer_on": "2011-04-04",
          "assessment": {
            "roll_year": 2026,
            "market_date": "2024-07-01",
            "land_value": 514600,
            "building_value": 614600,
            "total_value": 1129200,
            "previous_value": 990500,
            "change": 14.0,
            "uniformized_value": 1129200
          },
          "dwellings": 2,
          "usage": {
            "code": "1000",
            "label": "Logement"
          },
          "identifiers": {
            "parcel": null,
            "lots": [
              "1443982"
            ],
            "roll_number": "984227495430000000"
          },
          "events": [],
          "provenance": null,
          "distance_m": 14
        }
      ],
      "building": null,
      "copro": null,
      "missing": {
        "building": "not_covered",
        "copro": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_MUEDJLFWOVV62C",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "quebec_assessment_roll",
        "share_alike": false,
        "name": "Rôles d'évaluation foncière du Québec",
        "publisher": "Ministère des Affaires municipales et de l'Habitation (MAMH)",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rôles d'évaluation foncière",
        "url": "https://www.donneesquebec.ca/recherche/dataset/roles-d-evaluation-fonciere-du-quebec",
        "imported_at": "2026-10-11T04:26:40Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Énergie

Diagnostics énergétiques au point, statistiques énergétiques du secteur, et potentiel solaire du toit quand il est connu.
Endpoint
GET https://app.open-connect.io/api/v1/energy
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
radius entier Rayon en mètres pour rattacher les diagnostics, de 10 à 100 ; 30 par défaut
locale chaîne fr ou en
Réponse : data.energy
Champ Type FR BE QC Description
certificates[] liste ✓ — — DPE des logements du bâtiment ou de l'adresse, les plus récents d'abord : id, issued_on, valid_until, method, building_type, energy_class, ghg_class, consumption_kwh_m2, emissions_kg_m2, living_surface, floor, construction_period, heating_energy, distance_m
building_classes Répartition ✓ — — Classes énergétiques des DPE en cours de validité du bâtiment
audits[] liste ✓ — — Audits énergétiques réglementaires : issued_on, energy_class, scenarios[] (travaux proposés, classe atteinte, coût estimé)
area.certificates Répartition — ◐ — Classes des certificats PEB des logements de la commune (Wallonie)
area.median_consumption Mesure — ◐ ✓ Consommation médiane : énergie spécifique en kWh/m2/year des certificats PEB (Wallonie), consommation des maisons évaluées ÉnerGuide en GJ/year (RTA)
area.median_intensity Mesure — — ✓ Intensité énergétique médiane des maisons évaluées ÉnerGuide de la RTA, en GJ/m2/year
area.main_heating Répartition — — ✓ Chauffage principal des maisons évaluées, en %
area.homes_evaluated Mesure — ◐ ✓ Logements ou maisons derrière ces statistiques
solar objet \ null ✓ — ◐
{
  "data": {
    "energy": {
      "status": "ok",
      "certificates": [
        {
          "id": "2469E2782905P",
          "issued_on": "2024-08-01",
          "valid_until": "2034-07-31",
          "method": "dpe appartement individuel",
          "building_type": "apartment",
          "energy_class": "D",
          "ghg_class": "B",
          "consumption_kwh_m2": 232.3,
          "emissions_kg_m2": 8.8,
          "annual_cost": {
            "value": 964,
            "unit": "EUR"
          },
          "living_surface": 34.8,
          "floor": 4,
          "construction_period": "1989-2000",
          "heating_energy": "Électricité",
          "distance_m": null,
          "source": "ademe_dpe"
        },
        {
          "id": "2369E3950461O",
          "issued_on": "2023-11-21",
          "valid_until": "2033-11-20",
          "method": "dpe appartement individuel",
          "building_type": "apartment",
          "energy_class": "C",
          "ghg_class": "A",
          "consumption_kwh_m2": 152.1,
          "emissions_kg_m2": 5.0,
          "annual_cost": {
            "value": 797,
            "unit": "EUR"
          },
          "living_surface": 55.3,
          "floor": 0,
          "construction_period": "1989-2000",
          "heating_energy": "Électricité",
          "distance_m": null,
          "source": "ademe_dpe"
        }
      ],
      "building_classes": {
        "unit": "count",
        "total": 6,
        "buckets": [
          {
            "code": "C",
            "count": 4
          },
          {
            "code": "D",
            "count": 1
          },
          {
            "code": "E",
            "count": 1
          }
        ],
        "source": "ademe_dpe"
      },
      "audits": [],
      "area": null,
      "potential": {
        "solar_thermal_mwh_year": 16.12,
        "solar_thermal_favorable": false,
        "geothermal_aquifer": "éligible avec avis expert",
        "geothermal_probe": "éligible avec avis expert",
        "source": "bdnb"
      },
      "solar": null,
      "missing": {
        "area": "not_covered",
        "solar": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_29XJ5TZZKNWODG",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:06Z",
    "sources": [
      {
        "id": "ademe_dpe",
        "share_alike": false,
        "name": "Diagnostics de performance énergétique des logements",
        "publisher": "ADEME",
        "license": "etalab-2.0",
        "attribution": "Source : ADEME, DPE",
        "url": "https://data.ademe.fr/",
        "imported_at": "2026-10-09T02:03:54Z",
        "fresh": true
      },
      {
        "id": "bdnb",
        "share_alike": false,
        "name": "Base de données nationale des bâtiments (BDNB)",
        "publisher": "CSTB",
        "license": "etalab-2.0",
        "attribution": "Source : CSTB, BDNB",
        "url": "https://bdnb.io/",
        "imported_at": "2026-10-10T17:28:04Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "energy": {
      "status": "ok",
      "certificates": [],
      "building_classes": null,
      "audits": [],
      "area": {
        "certificates": null,
        "median_consumption": {
          "value": 112.0,
          "unit": "GJ/year",
          "period": null,
          "zone": {
            "level": "postal_area",
            "code": "H2J",
            "name": "H2J",
            "country": "CA"
          },
          "sample_size": 110,
          "reliability": "high",
          "range": null,
          "definition": "energuide_median_rated_consumption",
          "source": "nrcan_energuide"
        },
        "median_intensity": {
          "value": 0.605,
          "unit": "GJ/m2/year",
          "period": null,
          "zone": {
            "level": "postal_area",
            "code": "H2J",
            "name": "H2J",
            "country": "CA"
          },
          "sample_size": 110,
          "reliability": "high",
          "range": null,
          "definition": "energuide_median_energy_intensity",
          "source": "nrcan_energuide"
        },
        "main_heating": {
          "unit": "%",
          "buckets": [
            {
              "code": "electricity",
              "share": 88.2
            },
            {
              "code": "natural_gas",
              "share": 11.8
            }
          ],
          "source": "nrcan_energuide"
        },
        "homes_evaluated": {
          "value": 110,
          "unit": "count",
          "period": null,
          "zone": {
            "level": "postal_area",
            "code": "H2J",
            "name": "H2J",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": null,
          "range": null,
          "definition": null,
          "source": "nrcan_energuide"
        }
      },
      "solar": null,
      "missing": {
        "building_classes": "not_covered",
        "area.certificates": "not_covered",
        "solar": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_Y7NSX5OI7JUKXE",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "nrcan_energuide",
        "share_alike": false,
        "name": "Évaluations ÉnerGuide des maisons",
        "publisher": "Ressources naturelles Canada",
        "license": "ogl-canada-2.0",
        "attribution": "Source : Ressources naturelles Canada, ÉnerGuide",
        "url": "https://open.canada.ca/",
        "imported_at": "2026-10-11T03:24:10Z",
        "fresh": true
      },
      {
        "id": "montreal_solar",
        "share_alike": false,
        "name": "Potentiel solaire des toits de Montréal",
        "publisher": "Ville de Montréal",
        "license": "cc-by-4.0",
        "attribution": "Source : Ville de Montréal",
        "url": "https://donnees.montreal.ca/",
        "imported_at": null,
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Fiscalité locale

Les taux de la taxe foncière votés pour l'année, et les autres taxes locales liées au bien.
Endpoint
GET https://app.open-connect.io/api/v1/taxation
Réponse : data.taxation
Champ Type FR BE QC Description
property_tax.year entier ✓ — ✓ Année d'imposition
property_tax.basis chaîne ✓ — ✓ Assiette : cadastral_rental_value (France : valeur locative cadastrale, non publiée) ou assessed_value (Québec : valeur au rôle)
property_tax.total_rate Mesure ✓ — ✓ Taux applicable aux logements : taux global de la taxe foncière sur les propriétés bâties en % (France) ; taux résidentiel, taxes spéciales comprises, en CAD/100CAD (Québec)
property_tax.components objet ✓ — ✓ Détail : municipal, intercommunal, syndicates, gemapi (France) ; residential, special_residential, non_residential, industrial, agricultural, single_rate (Québec)
waste_collection_rate Mesure \ null ✓ — —
estimate objet \ null — — ◐
Ces taux ne donnent pas, à eux seuls, la taxe d'un bien : en France l'assiette (valeur locative cadastrale) n'est pas publique, et au Québec les taxes d'agglomération (Montréal, Québec, Longueuil…), les tarifs municipaux et la taxe scolaire s'y ajoutent.
{
  "data": {
    "taxation": {
      "status": "ok",
      "property_tax": {
        "year": 2025,
        "basis": "cadastral_rental_value",
        "total_rate": {
          "value": 21.21,
          "unit": "%",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "fr_tfpb_global_rate",
          "source": "dgfip_rei"
        },
        "components": {
          "municipal": 20.5,
          "intercommunal": 0.0,
          "syndicates": 0.0,
          "gemapi": 0.143,
          "previous_total": 21.19
        }
      },
      "waste_collection_rate": {
        "value": 6.21,
        "unit": "%",
        "period": {
          "start": "2025-01-01",
          "end": "2025-12-31"
        },
        "zone": {
          "level": "municipality",
          "code": "75056",
          "name": "Paris",
          "country": "FR"
        },
        "sample_size": null,
        "reliability": "high",
        "range": null,
        "definition": "fr_teom_rate",
        "source": "dgfip_rei"
      },
      "secondary_residence_surcharge": null,
      "estimate": null,
      "missing": {
        "secondary_residence_surcharge": "not_applicable",
        "estimate": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_UNGUWAKTPNNLHV",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:06Z",
    "sources": [
      {
        "id": "dgfip_rei",
        "share_alike": false,
        "name": "Recensement des éléments d'imposition (REI)",
        "publisher": "DGFiP",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, REI",
        "url": "https://data.economie.gouv.fr/",
        "imported_at": "2026-10-09T15:35:59Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "taxation": {
      "status": "ok",
      "property_tax": {
        "year": 2026,
        "basis": "assessed_value",
        "total_rate": {
          "value": 0.4631,
          "unit": "CAD/100CAD",
          "period": {
            "start": "2026-01-01",
            "end": "2026-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "66023",
            "name": "Montréal",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "qc_residential_property_tax_rate",
          "source": "quebec_municipal_taxes"
        },
        "components": {
          "residential": 0.4631,
          "special_residential": null,
          "non_residential": 2.4951,
          "industrial": null,
          "agricultural": 0.4631,
          "single_rate": false
        }
      },
      "waste_collection_rate": null,
      "estimate": {
        "roll_number": "984227435870000000",
        "total_value": 1041400,
        "municipal_property_tax": 4823,
        "unit": "CAD",
        "excludes": [
          "agglomeration_taxes",
          "municipal_fees",
          "school_tax"
        ]
      },
      "missing": {
        "waste_collection_rate": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_EMN0CBLRHHXVOS",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "quebec_municipal_taxes",
        "share_alike": false,
        "name": "Taux de taxe foncière des municipalités",
        "publisher": "MAMH",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rapports financiers des organismes municipaux",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-11T03:15:56Z",
        "fresh": true
      },
      {
        "id": "quebec_assessment_roll",
        "share_alike": false,
        "name": "Rôles d'évaluation foncière du Québec",
        "publisher": "Ministère des Affaires municipales et de l'Habitation (MAMH)",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rôles d'évaluation foncière",
        "url": "https://www.donneesquebec.ca/recherche/dataset/roles-d-evaluation-fonciere-du-quebec",
        "imported_at": "2026-10-11T04:26:40Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Risques

Zones de risques naturels qui couvrent le point, sites et sols pollués autour, et historique des catastrophes naturelles de la commune.
Endpoint
GET https://app.open-connect.io/api/v1/risks
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
radius entier Rayon des sites pollués, en mètres, de 100 à 2000 ; 500 par défaut
locale chaîne fr ou en
Réponse : data.risks
Champ Type FR BE QC Description
hazards[] liste ✓ ✓ ✓ Aléas qui concernent le point : type, level, label, source, published_on
hazards[].type chaîne ✓ ✓ ✓ flood, landslide, coastal_erosion, clay_shrink_swell, radon, seismic, wildfire_clearing
hazards[].level chaîne ✓ ✓ ✓ high, medium, low ou present quand la source ne gradue pas. Chaque source a sa propre échelle : source_level la garde telle quelle (flood_0_100, retrogressive, potentiel radon de catégorie 3…)
polluted_sites.counts objet ✓ ◐ ✓ Nombre de sites par type dans le rayon
polluted_sites.items[] liste ✓ ◐ ✓ Sites les plus proches : type (former_industrial_site, soil_information_sector, classified_installation, contaminated_land, soil_inventory), name, status, address, distance_m, url, updated_on
municipal.risks[] liste ✓ — — Risques recensés pour la commune (Géorisques) : code, label
municipal.natural_disasters objet ✓ — — Reconnaissances de l'état de catastrophe naturelle de la commune : total, latest[] (type, started_on, ended_on, decree_on)
municipal.prevention_plans[] liste ✓ — — Plans de prévention des risques : type, status, approved_on
municipal.flood_atlas booléen ✓ — — Commune couverte par un atlas des zones inondables
En Belgique, les sols pollués ne sont servis que pour la Région de Bruxelles-Capitale : l'inventaire wallon est réservé aux services publics.
{
  "data": {
    "risks": {
      "status": "ok",
      "hazards": [
        {
          "type": "radon",
          "level": "low",
          "source_level": "Faible",
          "label": "Potentiel radon",
          "source": "bdnb",
          "published_on": null
        },
        {
          "type": "seismic",
          "level": "low",
          "source_level": "Très faible",
          "label": "Zone de sismicité",
          "source": "bdnb",
          "published_on": null
        }
      ],
      "polluted_sites": {
        "counts": {
          "former_industrial_site": 222,
          "classified_installation": 2,
          "soil_information_sector": 1,
          "soil_investigation": 1
        },
        "items": [
          {
            "type": "former_industrial_site",
            "name": "imprimerie, lithographie, typographie",
            "status": "Indéterminé",
            "address": "5 bis Place Voltaire",
            "distance_m": 126,
            "url": "https://fiches-risques.brgm.fr/georisques/casias/SSP3871042",
            "updated_on": "2014-12-04",
            "source": "georisques_ssp"
          },
          {
            "type": "former_industrial_site",
            "name": null,
            "status": "Indéterminé",
            "address": "23 rue PETION",
            "distance_m": 133,
            "url": "https://fiches-risques.brgm.fr/georisques/casias/SSP3867906",
            "updated_on": "2014-12-04",
            "source": "georisques_ssp"
          }
        ]
      },
      "municipal": {
        "risks": [
          {
            "code": "11",
            "label": "Inondation"
          },
          {
            "code": "24",
            "label": "Transport de marchandises dangereuses"
          }
        ],
        "natural_disasters": {
          "total": 20,
          "latest": [
            {
              "type": "Inondations et/ou Coulées de Boue",
              "started_on": "2018-07-27",
              "ended_on": "2018-07-27",
              "decree_on": "2018-11-26"
            },
            {
              "type": "Inondations et/ou Coulées de Boue",
              "started_on": "2018-01-15",
              "ended_on": "2018-02-05",
              "decree_on": "2018-02-14"
            }
          ]
        },
        "prevention_plans": [
          {
            "type": "PPRi de Paris",
            "status": "Caduque",
            "approved_on": null
          },
          {
            "type": "PPRi de Paris - Révision",
            "status": "Opposable",
            "approved_on": null
          }
        ],
        "flood_atlas": true
      },
      "missing": {}
    }
  },
  "meta": {
    "request_id": "req_DRERHFDB6H77QO",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:07Z",
    "sources": [
      {
        "id": "bdnb",
        "share_alike": false,
        "name": "Base de données nationale des bâtiments (BDNB)",
        "publisher": "CSTB",
        "license": "etalab-2.0",
        "attribution": "Source : CSTB, BDNB",
        "url": "https://bdnb.io/",
        "imported_at": "2026-10-10T17:28:04Z",
        "fresh": true
      },
      {
        "id": "georisques_ssp",
        "share_alike": false,
        "name": "Sites et sols pollués (CASIAS, SIS)",
        "publisher": "BRGM et ministère de la Transition écologique",
        "license": "etalab-2.0",
        "attribution": "Source : Géorisques, CASIAS et SIS",
        "url": "https://www.georisques.gouv.fr/",
        "imported_at": "2026-10-09T19:20:29Z",
        "fresh": true
      },
      {
        "id": "georisques_icpe",
        "share_alike": false,
        "name": "Installations classées",
        "publisher": "Ministère de la Transition écologique",
        "license": "etalab-2.0",
        "attribution": "Source : Géorisques, installations classées",
        "url": "https://www.georisques.gouv.fr/",
        "imported_at": "2026-10-10T14:12:10Z",
        "fresh": true
      },
      {
        "id": "georisques_gaspar",
        "share_alike": false,
        "name": "Base GASPAR (risques et catastrophes naturelles des communes)",
        "publisher": "Ministère de la Transition écologique, Géorisques",
        "license": "etalab-2.0",
        "attribution": "Source : Géorisques, GASPAR",
        "url": "https://www.georisques.gouv.fr/",
        "imported_at": "2026-10-09T19:21:38Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "risks": {
      "status": "ok",
      "hazards": [],
      "polluted_sites": {
        "counts": {
          "contaminated_land": 18
        },
        "items": [
          {
            "type": "contaminated_land",
            "name": null,
            "status": "Sol et eau souterraine — réhabilitation terminée en 2024",
            "address": null,
            "distance_m": 129,
            "url": null,
            "updated_on": "2025-12-02",
            "source": "quebec_contaminated_sites"
          },
          {
            "type": "contaminated_land",
            "name": null,
            "status": "Sol et eau souterraine — réhabilitation terminée en 2010",
            "address": "908 à 1200, boulevard Montmorency, Québec (Québec), G1J 3V9",
            "distance_m": 131,
            "url": null,
            "updated_on": "2011-04-07",
            "source": "quebec_contaminated_sites"
          }
        ]
      },
      "municipal": null,
      "missing": {
        "municipal": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_VPB1EVRUVUZQZV",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:11Z",
    "sources": [
      {
        "id": "quebec_flood_zones",
        "share_alike": false,
        "name": "Base de données des zones inondables (BDZI)",
        "publisher": "Gouvernement du Québec",
        "license": "cc-by-4.0",
        "attribution": "Source : gouvernement du Québec, BDZI",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-10T05:07:47Z",
        "fresh": true
      },
      {
        "id": "quebec_landslides",
        "share_alike": false,
        "name": "Zones de contraintes relatives aux glissements de terrain",
        "publisher": "Ministère des Transports et de la Mobilité durable du Québec",
        "license": "cc-by-4.0",
        "attribution": "Source : MTMD",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-10T14:09:31Z",
        "fresh": true
      },
      {
        "id": "quebec_contaminated_sites",
        "share_alike": false,
        "name": "Répertoire des terrains contaminés (GTC)",
        "publisher": "Ministère de l'Environnement du Québec",
        "license": "cc-by-4.0",
        "attribution": "Source : ministère de l'Environnement du Québec",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-10T04:09:30Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Urbanisme

Ce que la réglementation permet de construire au point, la parcelle, et ce qui se construit autour.
Endpoint
GET https://app.open-connect.io/api/v1/urbanism
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
radius entier Rayon des autorisations d'urbanisme, en mètres, de 100 à 2000 ; 300 par défaut
geometry booléen true : sert le contour des zones et de la parcelle en GeoJSON. Par défaut false
locale chaîne fr ou en
Réponse : data.urbanism
Champ Type FR BE QC Description
zoning.document objet \ null ✓ — —
zoning.zones[] liste ✓ ◐ ◐ Zones qui couvrent le point : code, label, type, regulation_url. France : zones du PLU ; Flandre : plans d'exécution spatiale ; Montréal et Québec : grandes affectations et zonage
zoning.prescriptions[] liste ✓ — — Prescriptions du PLU qui s'appliquent au point : label, url
zoning.easements[] liste ✓ — — Servitudes d'utilité publique : code, label, url
zoning.agricultural_zone booléen \ null — — ✓
parcel objet \ null ✓ ✓ ◐
permits.total entier ✓ ◐ ◐ Autorisations d'urbanisme dans le rayon
permits.dwellings_created entier ✓ ◐ ◐ Logements créés par ces autorisations
permits.items[] liste ✓ ◐ ◐ Les plus proches : id, nature, status, destination, dwellings_created, dwellings_demolished, surface_created, filed_year, authorized_on, started_on, completed_on, distance_m, source
Au Québec, le zonage et les permis sont servis pour Montréal et la Ville de Québec, et la zone agricole pour tout le territoire ; en Belgique, le zonage et les permis pour la Flandre. Le nom du demandeur d'un permis n'est jamais servi.
{
  "data": {
    "urbanism": {
      "status": "ok",
      "zoning": {
        "document": {
          "type": "PLU",
          "approved_on": "2026-06-16",
          "url": "https://www.geoportail-urbanisme.gouv.fr/document/by-id/ab895285a1be6ca045127a6bb628cfaa"
        },
        "zones": [
          {
            "code": "UG",
            "label": "Zone urbaine générale",
            "type": "U",
            "regulation_url": "https://data.geopf.fr/annexes/gpu/documents/DU_75056/ab895285a1be6ca045127a6bb628cfaa/75056_reglement_20260616.pdf"
          }
        ],
        "prescriptions": [
          {
            "label": "Sous-secteur de maintien des constinuités écologiques",
            "url": null
          },
          {
            "label": "Secteur d'encadrement de l'hébergement touristique",
            "url": null
          },
          {
            "label": "Zone de déficit en logement social",
            "url": null
          }
        ],
        "easements": [
          {
            "code": "AC1",
            "label": "Maison",
            "url": "https://data.geopf.fr/annexes/gpu/documents/172014607_SUP_75_AC1/3dd5849b2362f41df4e0609d04839231/AC1_Maison-IDAK3T_19281019_act.pdf"
          },
          {
            "code": "AC2",
            "label": "Ensemble urbain à Paris",
            "url": "https://data.geopf.fr/annexes/gpu/documents/130029325_SUP_R11_AC2/801f162c9a125482aafc0fe502fa5378/AC2_SI7497_19750806_act.pdf"
          },
          {
            "code": "AC1",
            "label": "Fontaine de la Roquette",
            "url": "https://data.geopf.fr/annexes/gpu/documents/172014607_SUP_75_AC1/3dd5849b2362f41df4e0609d04839231/AC1_Fontaine-de-la-Roquette-IGGKA4_19921102_act.pdf"
          }
        ],
        "agricultural_zone": null
      },
      "parcel": {
        "id": "75111000BL0013",
        "area_m2": null,
        "section": "BL",
        "source": "dvf"
      },
      "permits": {
        "total": 215,
        "dwellings_created": 518,
        "items": [
          {
            "id": "DP07511125V0582",
            "nature": "renovation",
            "status": "authorized",
            "destination": "residential",
            "dwellings_created": 1,
            "dwellings_demolished": 0,
            "surface_created": 0.0,
            "filed_year": 2025,
            "authorized_on": "2025-12-22",
            "started_on": null,
            "completed_on": null,
            "distance_m": 373,
            "source": "bdnb",
            "nature_label": "transformation sans extension ni diminution de surface (inclut les changements de destination, réhabilitations, scissions/regroupements de logements ...)"
          },
          {
            "id": "DP07511125V0480",
            "nature": "renovation",
            "status": "authorized",
            "destination": "residential",
            "dwellings_created": null,
            "dwellings_demolished": null,
            "surface_created": 0.0,
            "filed_year": 2025,
            "authorized_on": "2025-10-22",
            "started_on": null,
            "completed_on": null,
            "distance_m": 442,
            "source": "bdnb",
            "nature_label": "transformation sans extension ni diminution de surface (inclut les changements de destination, réhabilitations, scissions/regroupements de logements ...)"
          }
        ]
      },
      "missing": {
        "zoning.agricultural_zone": "not_covered",
        "parcel.area_m2": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_2LQKTK8JWGO80G",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:07Z",
    "sources": [
      {
        "id": "ign_gpu",
        "share_alike": false,
        "name": "Géoportail de l'urbanisme",
        "publisher": "IGN",
        "license": "etalab-2.0",
        "attribution": "Source : IGN, Géoportail de l'urbanisme",
        "url": "https://www.geoportail-urbanisme.gouv.fr/",
        "imported_at": null,
        "fresh": true
      },
      {
        "id": "bdnb",
        "share_alike": false,
        "name": "Base de données nationale des bâtiments (BDNB)",
        "publisher": "CSTB",
        "license": "etalab-2.0",
        "attribution": "Source : CSTB, BDNB",
        "url": "https://bdnb.io/",
        "imported_at": "2026-10-10T17:28:04Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "urbanism": {
      "status": "ok",
      "zoning": {
        "document": null,
        "zones": [
          {
            "code": null,
            "label": "Intermédiaire · densité minimale 165 log./ha",
            "type": "land_use_plan",
            "category": "Mixte",
            "regulation_url": null
          }
        ],
        "prescriptions": [],
        "easements": [],
        "agricultural_zone": false
      },
      "parcel": {
        "id": null,
        "lots": [
          "1443981"
        ],
        "source": "quebec_assessment_roll"
      },
      "permits": {
        "total": 276,
        "dwellings_created": 395,
        "items": [
          {
            "id": "3003667730",
            "nature": "transformation",
            "status": "authorized",
            "destination": "residential",
            "dwellings_created": null,
            "dwellings_demolished": 1,
            "surface_created": null,
            "filed_year": 2026,
            "authorized_on": "2026-08-10",
            "started_on": null,
            "completed_on": null,
            "distance_m": 167,
            "source": "canada_building_permits"
          },
          {
            "id": "3003670878",
            "nature": "transformation",
            "status": "authorized",
            "destination": "commerce",
            "dwellings_created": 2,
            "dwellings_demolished": null,
            "surface_created": null,
            "filed_year": 2026,
            "authorized_on": "2026-08-07",
            "started_on": null,
            "completed_on": null,
            "distance_m": 415,
            "source": "canada_building_permits"
          }
        ]
      },
      "missing": {
        "zoning.document": "not_covered",
        "parcel.id": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_DJZ4WOXHXJIRCQ",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "canada_municipal_zoning",
        "share_alike": false,
        "name": "Zonage et grandes affectations (Montréal, Québec) et zone agricole (CPTAQ)",
        "publisher": "Ville de Montréal, Ville de Québec, CPTAQ",
        "license": "cc-by-4.0",
        "attribution": "Sources : Ville de Montréal, Ville de Québec, CPTAQ",
        "url": "https://www.donneesquebec.ca/",
        "imported_at": "2026-10-11T03:25:48Z",
        "fresh": true
      },
      {
        "id": "canada_building_permits",
        "share_alike": false,
        "name": "Permis de construction (Montréal, Québec)",
        "publisher": "Ville de Montréal, Ville de Québec",
        "license": "cc-by-4.0",
        "attribution": "Sources : Ville de Montréal, Ville de Québec",
        "url": "https://donnees.montreal.ca/",
        "imported_at": "2026-10-11T03:25:34Z",
        "fresh": true
      },
      {
        "id": "quebec_assessment_roll",
        "share_alike": false,
        "name": "Rôles d'évaluation foncière du Québec",
        "publisher": "Ministère des Affaires municipales et de l'Habitation (MAMH)",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rôles d'évaluation foncière",
        "url": "https://www.donneesquebec.ca/recherche/dataset/roles-d-evaluation-fonciere-du-quebec",
        "imported_at": "2026-10-11T04:26:40Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Population

Qui vit autour : revenus, ménages, parc de logements, vacance et logement social. Les valeurs viennent de la zone statistique la plus fine publiée (IRIS, secteur statistique, région de tri d'acheminement), puis de la commune.
Endpoint
GET https://app.open-connect.io/api/v1/population
Réponse : data.population
Champ Type FR BE QC Description
income.median Mesure ✓ ✓ — Revenu médian : disponible par unité de consommation (France, Filosofi) ; net imposable par déclaration (Belgique, Statbel). definition les distingue
income.average Mesure — ✓ ✓ Revenu moyen par déclaration : net imposable (Belgique, commune) ; total avant impôt (Canada, RTA)
income.poverty_rate Mesure ✓ — — Taux de pauvreté au seuil de 60 %, en %
income.interdecile_ratio Mesure ✓ ✓ — Rapport entre le 9e et le 1er décile (France), coefficient interquartile (Belgique) : la dispersion des revenus
income.brackets Répartition — — ✓ Déclarations par tranche de revenu
income.tax_returns Mesure — ✓ ✓ Nombre de déclarations derrière ces valeurs
housing.dwellings Mesure ✓ ✓ — Logements
housing.households Mesure ✓ ✓ — Ménages
housing.houses_share Mesure ✓ ✓ — Part des maisons, en %
housing.owners_share Mesure ✓ ✓ — Part des ménages propriétaires de leur résidence principale, en %
housing.tenants_share Mesure ✓ ✓ — Part des ménages locataires, en %
housing.social_tenants_share Mesure ✓ — — Part des ménages locataires d'un logement social, en %
housing.vacant_share Mesure ✓ ✓ — Part des logements vacants au recensement, en %
housing.recent_movers_share Mesure ✓ ✓ — Part des ménages installés depuis moins de deux ans, en %
housing.private_vacancy_rate Mesure ✓ — — Logements du parc privé vacants depuis plus de deux ans, en % (LOVAC)
housing.public_housing_share Mesure — ◐ — Part des ménages logés dans un logement public (Wallonie), en %
housing.social_housing_nearby Mesure ✓ — — Logements sociaux à moins de 500 m (répertoire RPLS)
business_failures Mesure — ✓ — Faillites d'entreprises de la commune sur la dernière année complète, avec change sur un an
{
  "data": {
    "population": {
      "status": "ok",
      "income": {
        "median": {
          "value": 22704,
          "unit": "EUR",
          "period": {
            "start": "2023-01-01",
            "end": "2023-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "21009A101",
            "name": "21009A101",
            "country": "BE"
          },
          "sample_size": 1066,
          "reliability": "high",
          "range": null,
          "definition": "be_net_taxable_income_median_per_return",
          "source": "statbel_income"
        },
        "average": {
          "value": 38201,
          "unit": "EUR",
          "period": {
            "start": "2023-01-01",
            "end": "2023-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "21009",
            "name": "Ixelles",
            "country": "BE"
          },
          "sample_size": 50930,
          "reliability": "high",
          "range": null,
          "definition": "be_net_taxable_income_average_per_return",
          "source": "statbel_income"
        },
        "poverty_rate": null,
        "interdecile_ratio": {
          "value": 98,
          "unit": "%",
          "period": {
            "start": "2023-01-01",
            "end": "2023-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "21009A101",
            "name": "21009A101",
            "country": "BE"
          },
          "sample_size": null,
          "reliability": null,
          "range": null,
          "definition": "be_interquartile_coefficient",
          "source": "statbel_income"
        },
        "brackets": null,
        "tax_returns": {
          "value": 1066,
          "unit": "count",
          "period": {
            "start": "2023-01-01",
            "end": "2023-12-31"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "21009A101",
            "name": "21009A101",
            "country": "BE"
          },
          "sample_size": null,
          "reliability": null,
          "range": null,
          "definition": null,
          "source": "statbel_income"
        }
      },
      "housing": {
        "dwellings": {
          "value": 1083,
          "unit": "count",
          "period": {
            "start": "2021-01-01",
            "end": "2021-01-01"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "21009A101",
            "name": "21009A101",
            "country": "BE"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "statbel_census_2021_dwellings",
          "source": "statbel_census_housing"
        },
        "households": null,
        "houses_share": {
          "value": 4.8,
          "unit": "%",
          "period": {
            "start": "2021-01-01",
            "end": "2021-01-01"
          },
          "zone": {
            "level": "neighbourhood",
            "code": "21009A101",
            "name": "21009A101",
            "country": "BE"
          },
          "sample_size": null,
          "reliability": "high",
          "range": null,
          "definition": "statbel_census_2021_part_maisons_pct",
          "source": "statbel_census_housing"
        },
        "owners_share": null,
        "tenants_share": null,
        "social_tenants_share": null,
        "vacant_share": null,
        "recent_movers_share": null,
        "private_vacancy_rate": null,
        "public_housing_share": null,
        "social_housing_nearby": null
      },
      "business_failures": {
        "value": 187,
        "unit": "count",
        "period": {
          "start": "2024-01-01",
          "end": "2024-12-31"
        },
        "zone": {
          "level": "municipality",
          "code": "21009",
          "name": "Ixelles",
          "country": "BE"
        },
        "sample_size": null,
        "reliability": null,
        "range": null,
        "definition": "statbel_bankruptcies_year",
        "source": "statbel_bankruptcies"
      },
      "missing": {
        "income.poverty_rate": "not_covered",
        "income.brackets": "not_covered",
        "housing.households": "not_found",
        "housing.owners_share": "not_found",
        "housing.tenants_share": "not_found",
        "housing.social_tenants_share": "not_covered",
        "housing.vacant_share": "not_found",
        "housing.recent_movers_share": "not_found",
        "housing.private_vacancy_rate": "not_covered",
        "housing.public_housing_share": "not_found",
        "housing.social_housing_nearby": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_HWZZJ9G6WLWRAD",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "statbel_income",
        "share_alike": false,
        "name": "Revenus fiscaux",
        "publisher": "Statbel",
        "license": "cc-by-4.0",
        "attribution": "Source : Statbel",
        "url": "https://statbel.fgov.be/",
        "imported_at": "2026-10-10T04:09:41Z",
        "fresh": true
      },
      {
        "id": "statbel_census_housing",
        "share_alike": false,
        "name": "Recensement 2021, logement",
        "publisher": "Statbel",
        "license": "cc-by-4.0",
        "attribution": "Source : Statbel",
        "url": "https://statbel.fgov.be/",
        "imported_at": "2026-10-11T03:25:51Z",
        "fresh": true
      },
      {
        "id": "statbel_bankruptcies",
        "share_alike": false,
        "name": "Faillites d'entreprises",
        "publisher": "Statbel",
        "license": "cc-by-4.0",
        "attribution": "Source : Statbel",
        "url": "https://statbel.fgov.be/",
        "imported_at": "2026-10-11T03:26:11Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
{
  "data": {
    "population": {
      "status": "partial",
      "income": {
        "median": null,
        "average": {
          "value": 69874,
          "unit": "CAD",
          "period": {
            "start": "2021-01-01",
            "end": "2021-12-31"
          },
          "zone": {
            "level": "postal_area",
            "code": "H2J",
            "name": "H2J",
            "country": "CA"
          },
          "sample_size": 20820,
          "reliability": "high",
          "range": null,
          "definition": "cra_total_income_average_per_return",
          "source": "cra_income"
        },
        "poverty_rate": null,
        "interdecile_ratio": null,
        "brackets": {
          "unit": "count",
          "total": 20820,
          "buckets": [
            {
              "code": "moins_5000",
              "count": 1310
            },
            {
              "code": "5000_10000",
              "count": 800
            },
            {
              "code": "10000_15000",
              "count": 960
            },
            {
              "code": "15000_20000",
              "count": 1260
            },
            {
              "code": "20000_25000",
              "count": 1270
            },
            {
              "code": "25000_30000",
              "count": 1040
            },
            {
              "code": "…",
              "count": null
            }
          ],
          "source": "cra_income"
        },
        "tax_returns": {
          "value": 20820,
          "unit": "count",
          "period": {
            "start": "2021-01-01",
            "end": "2021-12-31"
          },
          "zone": {
            "level": "postal_area",
            "code": "H2J",
            "name": "H2J",
            "country": "CA"
          },
          "sample_size": null,
          "reliability": null,
          "range": null,
          "definition": null,
          "source": "cra_income"
        }
      },
      "housing": {
        "dwellings": null,
        "households": null,
        "houses_share": null,
        "owners_share": null,
        "tenants_share": null,
        "social_tenants_share": null,
        "vacant_share": null,
        "recent_movers_share": null,
        "private_vacancy_rate": null,
        "public_housing_share": null,
        "social_housing_nearby": null
      },
      "business_failures": null,
      "missing": {
        "income.median": "not_covered",
        "income.poverty_rate": "not_covered",
        "income.interdecile_ratio": "not_covered",
        "housing.dwellings": "not_covered",
        "housing.households": "not_covered",
        "housing.houses_share": "not_covered",
        "housing.owners_share": "not_covered",
        "housing.tenants_share": "not_covered",
        "housing.social_tenants_share": "not_covered",
        "housing.vacant_share": "not_covered",
        "housing.recent_movers_share": "not_covered",
        "housing.private_vacancy_rate": "not_covered",
        "housing.public_housing_share": "not_covered",
        "housing.social_housing_nearby": "not_covered",
        "business_failures": "not_covered"
      }
    }
  },
  "meta": {
    "request_id": "req_F0RQ2QWTHMFWKZ",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:12:41Z",
    "sources": [
      {
        "id": "cra_income",
        "share_alike": false,
        "name": "Statistiques sur le revenu par région de tri d'acheminement",
        "publisher": "Agence du revenu du Canada",
        "license": "ogl-canada-2.0",
        "attribution": "Source : Agence du revenu du Canada",
        "url": "https://www.canada.ca/",
        "imported_at": "2026-10-11T03:16:12Z",
        "fresh": true
      }
    ],
    "warnings": [
      {
        "domain": "population",
        "code": "not_published",
        "message": "Le recensement par aire de diffusion de Statistique Canada n'est pas encore servi : les champs de logement valent null au Québec."
      }
    ],
    "sandbox": false
  }
}

Services

Les lieux du quotidien autour du point, rangés dans une taxonomie commune aux trois pays.
Endpoint
GET https://app.open-connect.io/api/v1/amenities
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
categories chaîne Groupes ou catégories, séparés par des virgules : school,health.pharmacy. Par défaut, tous
radius entier Rayon en mètres, de 100 à 5000 ; 1000 par défaut
per_category entier Lieux servis par catégorie, les plus proches d'abord, de 1 à 50 ; 5 par défaut
locale chaîne fr ou en
Réponse : data.amenities
Champ Type Description
counts objet Nombre de lieux dans le rayon, par catégorie : {"school.primary": 4, "health.pharmacy": 7}
items[] liste de Lieux Les lieux, les plus proches d'abord, dans la limite de per_category par catégorie
items[].label chaîne Libellé de la catégorie dans la langue demandée
La taxonomie est commune aux trois pays, pas sa couverture : la France s'appuie sur les registres officiels (Éducation nationale, FINESS, Base permanente des équipements), le Québec surtout sur OpenStreetMap, et la Belgique n'a encore que ses écoles et ses établissements de santé. GET /catalog/coverage donne la couverture par pays et par catégorie.
En Belgique, seuls les écoles et les établissements de santé sont servis : les commerces et services viennent d'OpenStreetMap et de la Base permanente des équipements, que nous n'importons pas encore pour la Belgique.
Un même établissement publié par plusieurs sources (annuaire de l'Éducation nationale, Base permanente des équipements, OpenStreetMap) n'est servi qu'une fois, depuis la source la plus fiable de sa catégorie.
{
  "data": {
    "amenities": {
      "status": "ok",
      "counts": {
        "outing.restaurant": 1086,
        "health.paramedical": 375,
        "outing.bar": 364,
        "health.physiotherapist": 250,
        "health.specialist": 233,
        "service.real_estate": 204,
        "beauty.hairdresser": 189,
        "beauty.beauty_salon": 140,
        "…": "71 catégories de plus"
      },
      "items": [
        {
          "id": "place_8f2d6915542b46d4e88c",
          "category": "school.kindergarten",
          "label": "École maternelle",
          "name": "École maternelle publique Parmentier V",
          "address": "11 B Av Parmentier   75011 Paris 11 E Arrondissement",
          "latitude": 48.85966,
          "longitude": 2.37884,
          "distance_m": 68,
          "source": "education_france"
        },
        {
          "id": "place_ca9130243610d19efb7f",
          "category": "school.primary",
          "label": "École élémentaire",
          "name": "École élémentaire publique Parmentier",
          "address": "11 B Av Parmentier   75011 Paris 11 E Arrondissement",
          "latitude": 48.85966,
          "longitude": 2.37884,
          "distance_m": 68,
          "source": "education_france"
        },
        {
          "id": "place_58bfc2e8cfd627db2709",
          "category": "food.convenience",
          "label": "Épicerie",
          "name": "Alimentation Generale Paris 11eme",
          "address": "95 Rue Sedaine   75011 Paris 11 E Arrondissement",
          "latitude": 48.85907,
          "longitude": 2.37915,
          "distance_m": 1,
          "source": "insee_bpe"
        },
        {
          "id": "place_4e5989a0b57e30a35d5d",
          "category": "service.real_estate",
          "label": "Agence immobilière",
          "name": "Century 21 Agence de la Mairie",
          "address": "3 Av Parmentier   75011 Paris 11 E Arrondissement",
          "latitude": 48.85919,
          "longitude": 2.37922,
          "distance_m": 12,
          "source": "insee_bpe"
        },
        {
          "id": "place_3912b1ae1ea58bcb6af2",
          "category": "service.driving_school",
          "label": "Auto-école",
          "name": "Auto Ecole Voltaire",
          "address": "93 Rue Sedaine   75011 Paris 11 E Arrondissement",
          "latitude": 48.85901,
          "longitude": 2.37901,
          "distance_m": 13,
          "source": "insee_bpe"
        }
      ],
      "missing": {}
    }
  },
  "meta": {
    "request_id": "req_LS5SHSMMA8FF4H",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:08Z",
    "sources": [
      {
        "id": "education_france",
        "share_alike": false,
        "name": "Annuaire de l'Éducation nationale",
        "publisher": "Ministère de l'Éducation nationale",
        "license": "etalab-2.0",
        "attribution": "Source : ministère de l'Éducation nationale",
        "url": "https://data.education.gouv.fr/",
        "imported_at": "2026-10-02T13:09:54Z",
        "fresh": true
      },
      {
        "id": "insee_bpe",
        "share_alike": false,
        "name": "Base permanente des équipements",
        "publisher": "Insee",
        "license": "etalab-2.0",
        "attribution": "Source : Insee, BPE",
        "url": "https://www.insee.fr/",
        "imported_at": "2026-10-07T02:37:35Z",
        "fresh": true
      },
      {
        "id": "openstreetmap",
        "share_alike": true,
        "name": "OpenStreetMap",
        "publisher": "Contributeurs d'OpenStreetMap",
        "license": "odbl-1.0",
        "attribution": "© les contributeurs d'OpenStreetMap",
        "url": "https://www.openstreetmap.org/copyright",
        "imported_at": "2026-10-02T18:38:09Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Transports

Arrêts et lignes de transport en commun à proximité, gares, aéroports et accès routiers.
Endpoint
GET https://app.open-connect.io/api/v1/transport
Query Parameters
Parameter Type Description
lat, lng, address, country Voir Localiser
radius entier Rayon des arrêts, en mètres, de 100 à 2000 ; 500 par défaut
locale chaîne fr ou en
Réponse : data.transport
Champ Type FR BE QC Description
stops[] liste ✓ ✓ ✓ Arrêts dans le rayon, les plus proches d'abord : id, name, modes (subway, tram, bus, rail, ferry, other), lines[] (short_name, long_name, mode, color), wheelchair_accessible, latitude, longitude, distance_m
stops_by_mode objet ✓ ✓ ✓ Nombre d'arrêts dans le rayon par mode
nearest.train_station Lieu ✓ — ✓ Gare la plus proche (jusqu'à 20 km)
nearest.airport Lieu ✓ — ✓ Aéroport le plus proche (jusqu'à 50 km)
nearest.road_access Lieu ◐ — ◐ Accès à une autoroute ou voie rapide le plus proche (jusqu'à 10 km)
nearest.charging_station Lieu ✓ — ✓ Borne de recharge la plus proche (jusqu'à 5 km)
Les réseaux viennent des flux GTFS publiés par les autorités organisatrices (catalogue Mobility Database) : un réseau qui ne publie pas son flux n'est pas servi. Chaque flux a sa propre licence, et certains flux français sont sous ODbL : meta.sources cite chaque flux utilisé séparément, avec sa licence. Un arrêt publié par plusieurs flux (réseau local et agrégat régional) n'est servi qu'une fois.
{
  "data": {
    "transport": {
      "status": "ok",
      "stops": [
        {
          "id": "IDFM:23655",
          "name": "Voltaire - Léon Blum",
          "modes": [
            "bus"
          ],
          "lines": [
            {
              "short_name": "56",
              "long_name": "56",
              "mode": "bus",
              "color": "#A0006E"
            }
          ],
          "wheelchair_accessible": true,
          "latitude": 48.85852,
          "longitude": 2.37877,
          "distance_m": 68,
          "source": "mobility_database"
        },
        {
          "id": "IDFM:494360",
          "name": "Voltaire - Léon Blum",
          "modes": [
            "bus"
          ],
          "lines": [
            {
              "short_name": "46",
              "long_name": "46",
              "mode": "bus",
              "color": "#D2D200"
            },
            {
              "short_name": "56",
              "long_name": "56",
              "mode": "bus",
              "color": "#A0006E"
            },
            {
              "short_name": "61",
              "long_name": "61",
              "mode": "bus",
              "color": "#00643C"
            },
            {
              "short_name": "69",
              "long_name": "69",
              "mode": "bus",
              "color": "#82C8E6"
            }
          ],
          "wheelchair_accessible": null,
          "latitude": 48.85826,
          "longitude": 2.38002,
          "distance_m": 110,
          "source": "mobility_database"
        },
        {
          "id": "IDFM:494361",
          "name": "Chemin Vert",
          "modes": [
            "bus"
          ],
          "lines": [
            {
              "short_name": "46",
              "long_name": "46",
              "mode": "bus",
              "color": "#D2D200"
            }
          ],
          "wheelchair_accessible": null,
          "latitude": 48.8601,
          "longitude": 2.37868,
          "distance_m": 118,
          "source": "mobility_database"
        }
      ],
      "stops_by_mode": {
        "bus": 17,
        "subway": 2
      },
      "nearest": {
        "train_station": {
          "id": "place_1dd7e787b4530b344f16",
          "category": "transport.train_station",
          "name": "Paris Gare de Lyon",
          "address": "Pl Louis Armand   75012 Paris 12 E Arrondissement",
          "latitude": 48.84455,
          "longitude": 2.3741,
          "distance_m": 1658,
          "source": "insee_bpe"
        },
        "airport": {
          "id": "place_6d28a68577508a17ca0e",
          "category": "transport.airport",
          "name": "Paris-Le Bourget",
          "address": "180 Esp De L Air Et De L Espace   93350 Dugny",
          "latitude": 48.94968,
          "longitude": 2.43236,
          "distance_m": 10799,
          "source": "insee_bpe"
        },
        "road_access": null,
        "charging_station": {
          "id": "place_194baf49498505ae80e1",
          "category": "transport.charging_station",
          "name": "Belib'",
          "address": "4 Av Parmentier   75011 Paris 11 E Arrondissement",
          "latitude": 48.85895,
          "longitude": 2.37987,
          "distance_m": 54,
          "source": "insee_bpe"
        }
      },
      "missing": {
        "nearest.road_access": "not_found"
      }
    }
  },
  "meta": {
    "request_id": "req_BXJOHF0TOG2TN4",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:10Z",
    "sources": [
      {
        "id": "mobility_database",
        "share_alike": null,
        "name": "Flux GTFS des réseaux de transport (Mobility Database)",
        "publisher": "Autorités organisatrices de la mobilité",
        "license": "per_feed",
        "attribution": "Sources : autorités organisatrices des réseaux de transport, licence propre à chaque flux (certains sous ODbL)",
        "url": "https://mobilitydatabase.org/",
        "imported_at": "2026-10-10T21:40:56Z",
        "fresh": true
      },
      {
        "id": "insee_bpe",
        "share_alike": false,
        "name": "Base permanente des équipements",
        "publisher": "Insee",
        "license": "etalab-2.0",
        "attribution": "Source : Insee, BPE",
        "url": "https://www.insee.fr/",
        "imported_at": "2026-10-07T02:37:35Z",
        "fresh": true
      },
      {
        "id": "openstreetmap",
        "share_alike": true,
        "name": "OpenStreetMap",
        "publisher": "Contributeurs d'OpenStreetMap",
        "license": "odbl-1.0",
        "attribution": "© les contributeurs d'OpenStreetMap",
        "url": "https://www.openstreetmap.org/copyright",
        "imported_at": "2026-10-02T18:38:09Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}

Zones

Les indicateurs d'une zone, sans position : le marché d'une commune, les loyers d'un arrondissement, les revenus d'un IRIS.
Endpoint
GET https://app.open-connect.io/api/v1/zones/{country}/{level}/{code}
Paramètre de chemin Description
country FR, BE ou CA
level Un niveau de zone
code Le code de la zone, tel que le sert data.location.zones
Query Parameters
Parameter Type Description
include chaîne Domaines d'indicateurs : prices, rents, taxation, population, energy. Par défaut, tous
geometry booléen true : sert le contour de la zone en GeoJSON, simplifié
locale chaîne fr ou en
La réponse porte la zone, ses zones parentes et les indicateurs publiés pour elle, avec la même forme que les domaines. Seuls les indicateurs publiés pour ce niveau sont servis : une zone ne reçoit pas la valeur d'une zone plus large.
{
  "data": {
    "zone": {
      "level": "district",
      "code": "75111",
      "name": "Paris 11e Arrondissement",
      "country": "FR",
      "parents": [
        {
          "level": "subregion",
          "code": "75",
          "name": "Paris",
          "country": "FR"
        },
        {
          "level": "municipality",
          "code": "75056",
          "name": "Paris",
          "country": "FR"
        }
      ]
    },
    "prices": {
      "status": "ok",
      "sale_price_per_m2": {
        "all": {
          "value": 9861,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "district",
            "code": "75111",
            "name": "Paris 11e Arrondissement",
            "country": "FR"
          },
          "sample_size": 4455,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        },
        "apartment": {
          "value": 9860,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "district",
            "code": "75111",
            "name": "Paris 11e Arrondissement",
            "country": "FR"
          },
          "sample_size": 4454,
          "reliability": "high",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        },
        "house": {
          "value": 20000,
          "unit": "EUR/m2",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "district",
            "code": "75111",
            "name": "Paris 11e Arrondissement",
            "country": "FR"
          },
          "sample_size": 1,
          "reliability": "low",
          "range": null,
          "definition": "dvf_median_price_per_m2",
          "source": "area_prices"
        }
      },
      "missing": {}
    },
    "rents": {
      "status": "ok",
      "market_rent_per_m2": {
        "apartment": {
          "value": 31.72,
          "unit": "EUR/m2/month",
          "period": {
            "start": "2025-01-01",
            "end": "2025-12-31"
          },
          "zone": {
            "level": "municipality",
            "code": "75056",
            "name": "Paris",
            "country": "FR"
          },
          "sample_size": 17411,
          "reliability": "high",
          "range": {
            "low": 25.17,
            "high": 39.98
          },
          "definition": "anil_predicted_rent_per_m2_incl_charges",
          "source": "anil_rents"
        }
      },
      "missing": {}
    }
  },
  "meta": {
    "request_id": "req_T6Y9QEKSOKYUU1",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:11Z",
    "sources": [
      {
        "id": "area_prices",
        "share_alike": false,
        "name": "Prix médians par zone, calculés depuis DVF",
        "publisher": "immosquare, d'après la DGFiP",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, DVF ; calcul immosquare",
        "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
        "imported_at": "2026-10-10T20:32:59Z",
        "fresh": true
      },
      {
        "id": "anil_rents",
        "share_alike": false,
        "name": "Carte des loyers",
        "publisher": "Ministère du Logement et ANIL",
        "license": "etalab-2.0",
        "attribution": "Source : Carte des loyers, ministère du Logement / ANIL",
        "url": "https://www.data.gouv.fr/datasets/carte-des-loyers-indicateurs-de-loyers-dannonce-par-commune-en-2025/",
        "imported_at": "2026-10-09T15:35:40Z",
        "fresh": true
      }
    ],
    "warnings": [],
    "sandbox": false
  }
}
Les zones enfants d'une zone (les IRIS d'une commune, les municipalités d'une MRC) :
GET https://app.open-connect.io/api/v1/zones/{country}/{level}/{code}/children

Catalogue

Ce que l'API sait servir, d'où viennent les données et à quelle date. Ces routes ne consomment pas d'unité.

Liste des domaines

Les domaines, leurs champs et leur couverture par pays.
GET https://app.open-connect.io/api/v1/catalog/domains
{
  "data": {
    "domains": [
      {
        "id": "prices",
        "label": "Prix",
        "route": "/api/v1/prices",
        "fields": [
          {
            "path": "sale_price_per_m2",
            "type": "measures",
            "countries": {
              "FR": "available",
              "BE": "none",
              "CA": "none"
            }
          },
          {
            "path": "sale_price",
            "type": "measures",
            "countries": {
              "FR": "none",
              "BE": "available",
              "CA": "none"
            }
          },
          {
            "path": "transactions.count",
            "type": "measure",
            "countries": {
              "FR": "available",
              "BE": "available",
              "CA": "partial"
            },
            "notes": {
              "CA": "Québec seulement, par région administrative"
            }
          },
          {
            "path": "assessed_values.roll_factor",
            "type": "measure",
            "countries": {
              "FR": "none",
              "BE": "none",
              "CA": "partial"
            },
            "notes": {
              "CA": "Québec seulement"
            }
          }
        ]
      },
      {
        "id": "rents",
        "label": "Loyers",
        "route": "/api/v1/rents",
        "fields": [
          {
            "path": "market_rent_per_m2",
            "type": "measures",
            "countries": {
              "FR": "available",
              "BE": "none",
              "CA": "none"
            }
          },
          {
            "path": "rent_control",
            "type": "object",
            "countries": {
              "FR": "partial",
              "BE": "none",
              "CA": "none"
            },
            "notes": {
              "FR": "Paris, Lyon, Villeurbanne"
            }
          },
          {
            "path": "average_rent",
            "type": "measures",
            "countries": {
              "FR": "none",
              "BE": "none",
              "CA": "partial"
            },
            "notes": {
              "CA": "13 régions métropolitaines et agglomérations du Québec"
            }
          }
        ]
      }
    ]
  },
  "meta": {
    "request_id": "req_01JA2QA3M7R2PN",
    "api_version": "1.0",
    "generated_at": "2026-10-11T08:12:44Z"
  }
}

Définitions des indicateurs

La définition de chaque mesure : ce qu'elle mesure, son unité, sa méthode, les pays où elle existe et si elle se compare d'un pays à l'autre.
GET https://app.open-connect.io/api/v1/catalog/indicators
{
  "data": {
    "indicators": [
      {
        "definition": "dvf_median_price_per_m2",
        "domain": "prices",
        "field": "sale_price_per_m2",
        "label": "Prix médian au m²",
        "description": "Médiane des prix au m² de surface habitable des ventes de gré à gré d'un seul logement, sur les 12 derniers mois publiés par DVF. Servie pour la zone la plus fine qui compte au moins 10 ventes.",
        "unit": "EUR/m2",
        "countries": [
          "FR"
        ],
        "comparable_across_countries": false,
        "levels": [
          "neighbourhood",
          "district",
          "municipality",
          "subregion",
          "region"
        ],
        "sources": [
          "dvf",
          "area_prices"
        ],
        "update_frequency": "semiannual"
      },
      {
        "definition": "be_net_taxable_income_median_per_return",
        "domain": "population",
        "field": "income.median",
        "label": "Revenu net imposable médian par déclaration",
        "description": "Médiane du revenu net imposable des déclarations fiscales du secteur statistique (Statbel). Une déclaration commune d'un couple compte pour une.",
        "unit": "EUR",
        "countries": [
          "BE"
        ],
        "comparable_across_countries": false,
        "levels": [
          "neighbourhood",
          "municipality"
        ],
        "sources": [
          "statbel_income"
        ],
        "update_frequency": "yearly"
      },
      {
        "definition": "cmhc_rms_average_rent",
        "domain": "rents",
        "field": "average_rent",
        "label": "Loyer moyen (enquête SCHL)",
        "description": "Loyer mensuel moyen des appartements des immeubles locatifs d'au moins trois logements, relevé en octobre par l'Enquête sur les logements locatifs de la SCHL. La cote de fiabilité de la SCHL donne `reliability` : a et b → high, c → medium, d → low ; les valeurs supprimées par la SCHL valent null.",
        "unit": "CAD/month",
        "countries": [
          "CA"
        ],
        "comparable_across_countries": false,
        "levels": [
          "neighbourhood",
          "municipality"
        ],
        "sources": [
          "cmhc_rental_market"
        ],
        "update_frequency": "yearly"
      }
    ]
  },
  "meta": {
    "request_id": "req_01JA2QB9X1T4LD",
    "api_version": "1.0",
    "generated_at": "2026-10-11T08:12:44Z"
  }
}

Sources et licences

Chaque source : producteur, licence, texte d'attribution, dernière publication et dernier import.
GET https://app.open-connect.io/api/v1/catalog/sources
{
  "data": {
    "sources": [
      {
        "id": "dvf",
        "share_alike": false,
        "name": "Demandes de valeurs foncières géolocalisées",
        "publisher": "DGFiP, préparé par Etalab",
        "license": "etalab-2.0",
        "attribution": "Source : DGFiP, DVF géolocalisées (Etalab) ; traitement immosquare",
        "url": "https://www.data.gouv.fr/datasets/demandes-de-valeurs-foncieres-geolocalisees/",
        "countries": [
          "FR"
        ],
        "domains": [
          "prices",
          "sales"
        ],
        "update_frequency": "semiannual",
        "imported_at": "2026-10-09T03:20:30Z",
        "fresh": true
      },
      {
        "id": "rent_control",
        "share_alike": true,
        "name": "Encadrement des loyers",
        "publisher": "Ville de Paris ; Métropole de Lyon",
        "license": "odbl-1.0",
        "attribution": "Source : Ville de Paris (ODbL) ; Métropole de Lyon",
        "url": "https://www.data.gouv.fr/datasets/logement-encadrement-des-loyers",
        "countries": [
          "FR"
        ],
        "domains": [
          "rents"
        ],
        "update_frequency": "yearly",
        "imported_at": "2026-10-11T03:15:52Z",
        "fresh": true
      },
      {
        "id": "quebec_assessment_roll",
        "share_alike": false,
        "name": "Rôles d'évaluation foncière du Québec",
        "publisher": "Ministère des Affaires municipales et de l'Habitation (MAMH)",
        "license": "cc-by-4.0",
        "attribution": "Source : MAMH, rôles d'évaluation foncière",
        "url": "https://www.donneesquebec.ca/recherche/dataset/roles-d-evaluation-fonciere-du-quebec",
        "countries": [
          "CA"
        ],
        "domains": [
          "property",
          "taxation"
        ],
        "update_frequency": "yearly",
        "imported_at": "2026-10-11T04:26:40Z",
        "fresh": true
      }
    ]
  },
  "meta": {
    "request_id": "req_SVHMB5EBXEK3FJ",
    "api_version": "1.0",
    "generated_at": "2026-10-11T05:15:11Z",
    "warnings": [],
    "sandbox": false
  }
}

Couverture par pays

Pour chaque pays et chaque champ, available, partial (avec les territoires couverts) ou none.
GET https://app.open-connect.io/api/v1/catalog/coverage?country=BE

Catégories de lieux

La taxonomie des lieux : groupes, catégories et libellés.
GET https://app.open-connect.io/api/v1/catalog/categories?locale=fr

Licences et attribution

Les données servies sont des données publiques, réutilisables commercialement sous leur licence. open-connect facture le service (collecte, contrôle, mise en forme, disponibilité), pas la donnée elle-même : vous restez tenu des obligations de chaque licence.
  • Attribution : la plupart des licences (Licence Ouverte, CC-BY, licence du gouvernement ouvert du Canada et du Québec) demandent de citer la source. Reproduisez le texte attribution de chaque source de meta.sources, à proximité de la donnée affichée.
  • ODbL : OpenStreetMap, l'encadrement des loyers de Paris et une partie des flux de transport sont sous licence ODbL. Une base de données que vous constitueriez à partir de ces valeurs et que vous rendriez publique devrait être partagée sous la même licence ; un affichage dans une application ne l'impose pas. Ces sources sont signalées par "share_alike": true.
  • Ventes (DVF) : leur réutilisation ne doit pas permettre d'identifier les personnes, et ne doit pas être indexée par des moteurs de recherche externes.
  • Données personnelles : open-connect ne sert aucune donnée qui désigne un particulier : ni nom de propriétaire, ni demandeur d'autorisation d'urbanisme, ni entrepreneur individuel, ni praticien de santé libéral (servi par sa catégorie et son adresse, sans son nom), ni coordonnées personnelles. Les entreprises sont servies sous leur dénomination sociale.

Fraîcheur

Chaque source a son rythme de publication : quotidien pour certaines, annuel pour la plupart des statistiques. open-connect vérifie chaque source au moins à ce rythme et importe une nouvelle publication dans les jours qui suivent.
  • meta.sources[].published_at : date de la publication servie, quand la source la donne.
  • meta.sources[].imported_at : date de notre dernier import réussi.
  • meta.sources[].fresh : false quand la source n'a pas été vérifiée depuis plus longtemps que son rythme le prévoit ; les valeurs restent servies, mais il est prudent de le signaler.
  • period de chaque mesure : la période réellement décrite. Une statistique publiée en 2026 peut décrire 2023.