curl --request GET \
--url https://api.gabin.ai/v1/permits \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gabin.ai/v1/permits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gabin.ai/v1/permits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"number": "PC0692662400031",
"parcel_id": "69266000AB0012",
"types": [
"housing"
],
"status": "Commencé",
"filed_year": 2024,
"authorized_on": "2024-07-09",
"works_started_on": "2025-03-03",
"completed_on": null,
"project_nature": "Nouvelle construction",
"main_use": "Logements",
"housing_type": "Collectif",
"residence_type": "Résidence principale",
"annex_type": null,
"housing_created": 38,
"housing_demolished": 0,
"living_area_created_m2": 2450,
"premises_area_created_m2": null,
"land_area_m2": 1830,
"applicant": {
"siren": "999100074",
"name": "Foncière Gratte-Ciel",
"naf_code": "43.29A",
"naf_label": "Travaux d'isolation",
"sector": "renovation-energetique",
"created_on": "2014-03-12",
"active": true,
"partial_diffusion": false,
"gabin_url": "https://gabin.ai/entreprise/atelier-thermique-du-rhone-999100017",
"legal_form": "SAS, société par actions simplifiée",
"headcount_range": "11",
"headquarters": {
"address": "12 rue Émile Zola",
"postal_code": "69100",
"city": "Villeurbanne",
"siret": "99910001700011",
"insee": "69266",
"location": [
4.8795,
45.7665
],
"building_id": "bdnb-bg-CJ69-HW8G-PTTG"
},
"latest_revenue": null,
"latest_revenue_year_end": null
},
"location": [
4.8801,
45.7671
],
"building_id": "bdnb-bg-CJ69-HW8G-PTTG",
"gabin_url": "https://gabin.ai/batiment/bdnb-bg-CJ69-HW8G-PTTG"
}
],
"meta": {
"page": {
"next_cursor": null,
"limit": 20
},
"total": 1,
"total_kind": "exact"
}
}List building permits in an area
Building permits (Sitadel) of one area, ordered by permit number: a bounding box (bbox, at most 4 km²), a circle (lat, lon, radius up to 1,000 m), a city or arrondissement (insee) or a department (department). Filters: status, type, filed_after / filed_before (default: the last 5 years of filing), started_after.
Construction sites in progress: status=started. Each permit has the fields of GET /v1/buildings//permits plus location (a point in its cadastral parcel, WGS84) and the building on that parcel; only permits matched to a parcel are listed. The applicant is given when it is a legal entity, never an individual.
format=geojson returns a GeoJSON FeatureCollection of points in data, ready for a map source; pagination stays in meta. The total is counted on the first page (up to 10,000) and carried by the cursor. Weight: 2 per page. For a map at zoom 15-16, GET /v1/tiles/permits///.pbf is lighter.
curl --request GET \
--url https://api.gabin.ai/v1/permits \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gabin.ai/v1/permits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gabin.ai/v1/permits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"number": "PC0692662400031",
"parcel_id": "69266000AB0012",
"types": [
"housing"
],
"status": "Commencé",
"filed_year": 2024,
"authorized_on": "2024-07-09",
"works_started_on": "2025-03-03",
"completed_on": null,
"project_nature": "Nouvelle construction",
"main_use": "Logements",
"housing_type": "Collectif",
"residence_type": "Résidence principale",
"annex_type": null,
"housing_created": 38,
"housing_demolished": 0,
"living_area_created_m2": 2450,
"premises_area_created_m2": null,
"land_area_m2": 1830,
"applicant": {
"siren": "999100074",
"name": "Foncière Gratte-Ciel",
"naf_code": "43.29A",
"naf_label": "Travaux d'isolation",
"sector": "renovation-energetique",
"created_on": "2014-03-12",
"active": true,
"partial_diffusion": false,
"gabin_url": "https://gabin.ai/entreprise/atelier-thermique-du-rhone-999100017",
"legal_form": "SAS, société par actions simplifiée",
"headcount_range": "11",
"headquarters": {
"address": "12 rue Émile Zola",
"postal_code": "69100",
"city": "Villeurbanne",
"siret": "99910001700011",
"insee": "69266",
"location": [
4.8795,
45.7665
],
"building_id": "bdnb-bg-CJ69-HW8G-PTTG"
},
"latest_revenue": null,
"latest_revenue_year_end": null
},
"location": [
4.8801,
45.7671
],
"building_id": "bdnb-bg-CJ69-HW8G-PTTG",
"gabin_url": "https://gabin.ai/batiment/bdnb-bg-CJ69-HW8G-PTTG"
}
],
"meta": {
"page": {
"next_cursor": null,
"limit": 20
},
"total": 1,
"total_kind": "exact"
}
}Authorizations
API key gab_live_… or OAuth access token gat_….
Query Parameters
Cursor returned in meta.page.next_cursor by the previous page. Keep the same filters; the page size is the one of the first page.
300Results per page, 1 to 100. Default 20.
1 <= x <= 100Bounding box "minLon,minLat,maxLon,maxLat" (WGS84), at most 4 km² (2 km × 2 km). Example: "4.876,45.765,4.886,45.771".
120Latitude of the center of a circle search (WGS84), with lon and radius.
-90 <= x <= 90Longitude of the center of a circle search (WGS84), with lat and radius.
-180 <= x <= 180Radius of the circle search, in meters, 1 to 1,000. Example: 300.
1 <= x <= 1000INSEE code of a city or arrondissement. Example: "69266".
^(\d{5}|2[AaBb]\d{3})$Department code. Example: "69".
^(\d{2}|2[AaBb]|97\d)$Statuses, comma-separated: authorized (« Autorisé »), started (« Commencé »: the works-start declaration was filed; these are the construction sites in progress), completed (« Terminé »: the completion declaration was filed). Completion is often never declared, so an old started permit may be finished. Example: "started".
40Permit types, comma-separated (any of them): housing (creates dwellings), premises (creates non-residential floor area), demolition, development (permis d'aménager). Example: "housing".
60Filed in or after this year. Default: 5 years before the current year. Example: 2022.
1990 <= x <= 2100Filed in or before this year. Default: the current year. Example: 2025.
1990 <= x <= 2100Works started on or after this date (YYYY-MM-DD). Example: "2025-01-01".
^\d{4}-\d{2}-\d{2}$json (default): a list of objects in data. geojson: data is a GeoJSON FeatureCollection (same pagination in meta).
json, geojson