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) ouoc_test_(bac à sable, mêmes données, quotas réduits, réponses marquées"sandbox": truedansmeta). - 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
403avec le codedomain_not_allowed, et un rapport complet l'omet en le signalant dansmeta.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,lngen paramètres ;latitude,longitudeen 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
nullquand 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) ouen, par le paramètrelocaleou l'en-têteAccept-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
attributionde chaque source demeta.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:falsequand 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. -
periodde chaque mesure : la période réellement décrite. Une statistique publiée en 2026 peut décrire 2023.