L’API publique Blacklayer donne accès aux données immobilières et territoriales (parcelles, bâtiments, prix, transactions, loyers, entreprises, etc.) via REST ou MCP pour les agents IA.
Recherche d’adresse par texte libre. Retourne une liste de candidats avec coordonnées et score de pertinence. Utilisez les coordonnées du résultat pour appeler ensuite la parcelle la plus proche.
Paramètres d'URL (query)
Nom
Type
Requis
Description
q
string
Requis
Texte de l’adresse à géocoder.
limit
number
Optionnel
Nombre max de résultats (1 à 20, défaut 5).
lat
number
Optionnel
Latitude WGS84 pour prioriser les résultats proches du point.
lng
number
Optionnel
Longitude WGS84 pour prioriser les résultats proches du point.
Réponses
200Liste de candidats avec adresse, score et coordonnées.
Retourne la parcelle cadastrale la plus proche d’un point GPS. La géométrie est incluse en GeoJSON. C’est le point d’entrée principal : l’IDU renvoyé sert de clé pour tous les autres endpoints.
Paramètres d'URL (query)
Nom
Type
Requis
Description
lng
number
Requis
Longitude WGS84 (EPSG:4326), entre -180 et 180.
lat
number
Requis
Latitude WGS84 (EPSG:4326), entre -90 et 90.
Réponses
200Parcelle trouvée avec identifiant (IDU), surface, commune et géométrie.
Fiche des bâtiments d’une parcelle : année de construction, nombre de logements, hauteur, étages, surface au sol, usages, matériaux et adresses rattachées.
Indicateurs démographiques INSEE autour d’une parcelle : population, tranches d’âge, CSP, revenus. Données ventilées par quartier (IRIS), commune, département et région.
Paramètres de chemin
Nom
Type
Requis
Description
idu
string
Requis
IDU cadastral (ex. 69386000BL0063).
Réponses
200Indicateurs démographiques par niveau géographique.
Diagnostics de performance énergétique (DPE) des logements situés sur une parcelle. Étiquettes énergie et GES (A à G), surface, type de chauffage, consommations.
Paramètres de chemin
Nom
Type
Requis
Description
idu
string
Requis
IDU cadastral (ex. 69386000BL0063).
Réponses
200Liste des DPE avec étiquettes, surface et consommations.
Copropriétés immatriculées (RNIC) rattachées à une parcelle. Inclut le nom, l’adresse, le nombre de lots, le syndic et ses coordonnées. Liste vide si aucune copropriété n’est enregistrée.
Paramètres de chemin
Nom
Type
Requis
Description
idu
string
Requis
IDU cadastral (ex. 69386000BL0063).
Réponses
200Liste des copropriétés avec nom, adresse, lots et syndic.
Entreprises actives implantées sur une parcelle (SIREN, activité, forme juridique, effectifs, dirigeants). Seuls les établissements en activité sont retournés. Liste vide si aucune entreprise n’est présente.
Paramètres de chemin
Nom
Type
Requis
Description
idu
string
Requis
IDU cadastral (ex. 69386000AM0109).
Réponses
200Liste des entreprises présentes avec identité, activité et dirigeants.
Fiche complète d’une entreprise à partir de son SIREN : identité, siège social, établissements actifs, dirigeants, chiffre d’affaires et compléments (RGE, Qualiopi, etc.).
Propriétaires personnes morales d’une parcelle (SCI, SAS, etc.). Inclut le nom, le SIREN, le nombre de locaux détenus et le statut bailleur. Chaque propriétaire identifié est enrichi avec ses informations entreprise.
Paramètres de chemin
Nom
Type
Requis
Description
idu
string
Requis
IDU cadastral (ex. 69386000AM0109).
Réponses
200Liste des propriétaires avec nom, SIREN, nombre de locaux et statut bailleur.
Historique des ventes immobilières (DVF) sur une parcelle, de 2014 à 2025. Chaque mutation inclut la date, le prix, la surface, le type de bien et l’adresse.
Endpoint canonique multi-modes : un body avec mode ∈ {bbox, radius, zone, geometry}, les paramètres spatiaux du mode choisi, et un objet filters avec les filtres communs (prix, période, trimestre, type, surface, pièces, multilots). Pour la majorité des cas, préférer les endpoints dédiés GET /by-bbox, GET /by-radius, GET /by-zone, POST /by-geometry. Réponse plafonnée à 50 transactions.
En-têtes
Nom
Type
Requis
Description
Content-Type
string
Requis
application/json
Corps de la requête (JSON)
Nom
Type
Requis
Description
mode
string
Requis
bbox | radius | zone | geometry
bbox
object
Optionnel
Si mode=bbox : { minLng, minLat, maxLng, maxLat } en WGS84
radius
object
Optionnel
Si mode=radius : { lng, lat, radiusMeters } (rayon ≤ 5000 m)
zone
object
Optionnel
Si mode=zone : { level: 'iris'|'commune', code } ou { q: 'Écully' }
geometry
object (GeoJSON)
Optionnel
Si mode=geometry : Polygon ou MultiPolygon WGS84
limit
number
Optionnel
1..50, défaut 50
filters
object
Optionnel
Filtres communs (cf. lignes ci-dessous, à passer sous filters.*)
priceMin
number
Optionnel
Prix minimum (€)
priceMax
number
Optionnel
Prix maximum (€)
year
number
Optionnel
Année (2021..2025)
quarter
string
Optionnel
T1 | T2 | T3 | T4
localTypes
string[]
Optionnel
Ex: Appartement, Maison, Local industriel...
surfaceMin
number
Optionnel
Surface bâtie min (m²)
surfaceMax
number
Optionnel
Surface bâtie max (m²)
roomsMin
number
Optionnel
Pièces min (T2 → roomsMin=2)
roomsMax
number
Optionnel
Pièces max (T2 → roomsMax=2)
includeMultiLot
boolean
Optionnel
Inclure les ventes multilots (défaut true)
mutationType
string
Optionnel
Ex: Vente, VEFA
Réponses
200Enveloppe { data } avec transactions groupées par mutation.
Retourne les transactions DVF (2021–2025) dont la parcelle intersecte la bbox WGS84 fournie. Tous les filtres communs sont supportés en query string (priceMin, priceMax, year, quarter, localTypes, surfaceMin/Max, roomsMin/Max, includeMultiLot, mutationType).
Paramètres d'URL (query)
Nom
Type
Requis
Description
minLng
number
Requis
Longitude min WGS84
minLat
number
Requis
Latitude min WGS84
maxLng
number
Requis
Longitude max WGS84
maxLat
number
Requis
Latitude max WGS84
limit
number
Optionnel
1..50, défaut 50
priceMin
number
Optionnel
Prix minimum (€)
priceMax
number
Optionnel
Prix maximum (€)
year
number
Optionnel
Année (2021..2025)
quarter
string
Optionnel
T1 | T2 | T3 | T4
localTypes
string[]
Optionnel
Ex: Appartement, Maison, Local industriel...
surfaceMin
number
Optionnel
Surface bâtie min (m²)
surfaceMax
number
Optionnel
Surface bâtie max (m²)
roomsMin
number
Optionnel
Pièces min (T2 → roomsMin=2)
roomsMax
number
Optionnel
Pièces max (T2 → roomsMax=2)
includeMultiLot
boolean
Optionnel
Inclure les ventes multilots (défaut true)
mutationType
string
Optionnel
Ex: Vente, VEFA
Réponses
200Enveloppe { data } avec transactions groupées par mutation.
Transactions DVF par zone IRIS ou commune (max 50)
Retourne les transactions DVF (2021–2025) dans une zone administrative. Deux modes mutuellement exclusifs : q libellé naturel (« Écully », « Lyon 6e ») résolu automatiquement OU level+code officiel.
Paramètres d'URL (query)
Nom
Type
Requis
Description
q
string
Optionnel
Libellé de zone (ex: Écully, Lyon 6e). Mutuellement exclusif avec level+code.
Transactions DVF dans un polygone GeoJSON (max 50)
Retourne les transactions DVF (2021–2025) dont la parcelle intersecte la géométrie GeoJSON fournie (Polygon ou MultiPolygon, WGS84). Les filtres communs (prix, période, trimestre, type, surface, pièces, multilots) se passent dans filters.
En-têtes
Nom
Type
Requis
Description
Content-Type
string
Requis
application/json
Corps de la requête (JSON)
Nom
Type
Requis
Description
geometry
object (GeoJSON)
Requis
Polygon ou MultiPolygon WGS84
limit
number
Optionnel
1..50, défaut 50
filters
object
Optionnel
Filtres communs (cf. lignes ci-dessous, à passer sous filters.*)
Prix médian au m² autour d’une parcelle, ventilé par quartier, commune, département et région. Séries annuelles de 2021 à 2025 pour les appartements et maisons.
Paramètres de chemin
Nom
Type
Requis
Description
idu
string
Requis
Identifiant unique cadastral (IDU), identique à data.id renvoyé par GET /v1/parcels/nearest (ex. 750560000D0073).
Réponses
200Séries annuelles de prix médian au m² par niveau géographique.
À partir d’une longitude et latitude WGS84, identifie la parcelle cadastrale au point, résout la voie DVF la plus représentée sur cette parcelle, puis retourne les séries annuelles (2021–2025, maisons et appartements) depuis dvf.transaction_stats_rue, le territoire (IRIS, commune, etc.) et un classement des rues les plus actives dans la commune.
Paramètres d'URL (query)
Nom
Type
Requis
Description
lng
number
Requis
Longitude WGS84 (EPSG:4326).
lat
number
Requis
Latitude WGS84 (EPSG:4326).
Réponses
200Rue résolue, séries annuelles rue, territoire et comparaisons intra-commune.
400lng ou lat manquant ou invalide.
404Aucune rue ou statistiques rue pour ce point (parcelle hors cadastre, pas de voie DVF, ou volume insuffisant).
Résout une zone par libellé (q, recherche dans communes, départements, régions, IRIS) ou par couple level + code (IRIS 9 caractères, commune INSEE 5, département, région, etc.). Retourne les séries annuelles DVF (2021–2025, maisons et appartements) aux niveaux pertinents : depuis l’IRIS jusqu’aux échelons supérieurs selon la zone résolue (pour une région, seules les stats région sont renvoyées).
Paramètres d'URL (query)
Nom
Type
Requis
Description
q
string
Optionnel
Libellé à rechercher (ex. Écully, Rhône, Île-de-France). Mutuellement exclusif avec level + code.
level
string
Optionnel
Niveau : quartier, commune, arrondissement, ville, departement, region — à utiliser avec code.
code
string
Optionnel
Code officiel associé à level : code IRIS (9), code INSEE commune (5), département, région.
Réponses
200Zone résolue (resolvedZone), enveloppe territoriale et yearlyStats par niveau disponible.
400Combinaison de paramètres invalide (ex. q avec level/code, ou codes incohérents).
Loyers OLL par commune (séries annuelles 2014–2025)
Statistiques annuelles de loyers du parc locatif privé pour une commune identifiée par son code INSEE (Observatoires Locaux des Loyers). Loyer médian/moyen au m², quartiles, loyer mensuel, surface moyenne, nombre d'observations et logements. Seules ~3 200 communes couvertes par un observatoire sont disponibles.
Paramètres de chemin
Nom
Type
Requis
Description
codeInsee
string
Requis
Code INSEE de la commune (5 caractères), ex. 34172 (Montpellier).
Réponses
200Séries annuelles de loyers avec médiane, moyenne, quartiles et volumes.
401Clé API invalide ou révoquée.
404Commune non couverte par un observatoire OLL ou code INSEE introuvable.
Loyers OLL pour une commune et une année (avec ventilation)
Loyers OLL pour une commune et une année spécifique, avec ventilation détaillée par type d'habitat (Appartement / Maison), nombre de pièces et époque de construction.
Paramètres de chemin
Nom
Type
Requis
Description
codeInsee
string
Requis
Code INSEE de la commune (ex. 34172).
annee
number
Requis
Année d'enquête OLL (2014–2025).
Réponses
200Statistiques annuelles + ventilations par type, pièces et époque.
À partir de la longitude et latitude WGS84, résout la commune cadastrale contenant le point, puis retourne les séries annuelles de loyers OLL. Pratique pour les agents IA et les intégrations carte.
Paramètres d'URL (query)
Nom
Type
Requis
Description
lng
number
Requis
Longitude WGS84 (EPSG:4326).
lat
number
Requis
Latitude WGS84 (EPSG:4326).
Réponses
200Séries annuelles de loyers pour la commune résolue.
400lng ou lat invalide.
404Commune introuvable ou non couverte par un observatoire OLL.
Endpoint Streamable HTTP du protocole MCP. Envoyez une requête JSON-RPC initialize pour créer une session, puis invoquez les outils ci-dessous. DELETE /mcp ferme la session. Avec un client MCP (Cursor, Claude, etc.), c’est le client qui gère la session automatiquement. Authorization optionnel : sans Bearer, quotas IP ; avec clé blk_live_, quotas par clé.
En-têtes
Nom
Type
Requis
Description
Authorization
string
Optionnel
Optionnel. Bearer blk_live_… pour quotas par clé ; omis = quotas anonymes (IP).
Accept
string
Requis
application/json, text/event-stream
Content-Type
string
Requis
application/json
mcp-session-id
string
Optionnel
Identifiant de session renvoyé après initialize (requêtes suivantes).
Outils disponibles
Outil
Paramètre
Route REST équivalente
search_address
q
GET /v1/addresses/search
get_nearest_parcel
lng, lat
GET /v1/parcels/nearest
get_parcel_buildings
idu
GET /v1/buildings/by-parcel/{idu}
get_parcel_demographics
idu
GET /v1/demographie/by-parcel/{idu}
get_parcel_dpe_residential
idu
GET /v1/dpe-residential/by-parcel/{idu}
get_parcel_dpe_tertiary
idu
GET /v1/dpe-tertiary/by-parcel/{idu}
get_parcel_copropriete
idu
GET /v1/copropriete/by-parcel/{idu}
get_parcel_occupants
idu
GET /v1/occupants/by-parcel/{idu}
get_entreprise_by_siren
siren
GET /v1/entreprises/{siren}
get_parcel_proprietaires
idu
GET /v1/proprietaires/by-parcel/{idu}
get_parcel_transactions
idu
GET /v1/transactions/by-parcel/{idu}
transactions_by_bbox
minLng, minLat, maxLng, maxLat, filters?
GET /v1/transactions/by-bbox
transactions_by_radius
lng, lat, radiusMeters, filters?
GET /v1/transactions/by-radius
transactions_by_zone
q | level+code, filters?
GET /v1/transactions/by-zone
transactions_by_geometry
geometry, filters?
POST /v1/transactions/by-geometry
search_transactions
mode + filtres
POST /v1/transactions/search
get_parcel_price_stats
idu
GET /v1/prices/by-parcel/{idu}
get_street_price_stats
lng, lat
GET /v1/prices/by-rue
get_rent_stats_by_commune
codeInsee
GET /v1/loyers/by-commune/{codeInsee}
get_rent_stats_by_commune_year
codeInsee, annee
GET /v1/loyers/by-commune/{codeInsee}/{annee}
get_rent_stats_by_coordinates
lng, lat
GET /v1/loyers/by-coordinates
Réponses
200Réponse JSON-RPC ou flux selon l’étape (initialize, tools/call, etc.).
400Requête MCP invalide ou session manquante.
401Bearer fourni mais clé invalide ou révoquée.
406Accept incomplet (doit inclure application/json et text/event-stream).