Skip to main content
Building permits come from Sitadel, the French register of planning permissions kept by the SDES (statistics office of the ministry of ecological transition), through the BDNB. Gabin serves permits for building (permis de construire), development (permis d’aménager) and demolition (permis de démolir), and prior declarations (déclarations préalables). The permit number starts with its kind: PC, PA, PD or DP. Each permit is placed on one of its cadastral parcels, with the building that stands on that parcel. Two endpoints serve them:

Status of a permit

Completion is often never declared, so an old started permit may be finished. Filter on filed_after or started_after to keep recent sites.

Permits of an area

GET /v1/permits lists the permits of one area, ordered by permit number. Give exactly one area: Without an area, or with more than one, the API returns 400 INVALID.

Filters

string
Statuses, comma-separated: authorized, started, completed. All by default.
string
Permit types, comma-separated (any of them): housing (creates dwellings), premises (creates non-residential floor area), demolition, development.
integer
Filed in or after this year. Default: 5 years before the current year.
integer
Filed in or before this year. Default: the current year.
string
Works started on or after this date (YYYY-MM-DD).
string
default:"json"
json returns a list of permits. geojson returns a GeoJSON FeatureCollection of points in data.
This request lists the housing construction sites in progress in Villeurbanne:
Each permit has the fields of the building section, plus:
  • location: a point inside its cadastral parcel, WGS84 [lon, lat]. No geocoding is needed.
  • building_id: the BDNB building on that parcel (the closest to the point), null for bare land. Open it with GET /v1/buildings/{id}.
  • gabin_url: the page of that building on gabin.ai.
The applicant (applicant, the maître d’ouvrage) is given when it is a legal entity; an individual is never named. Only permits that Sitadel matches to a cadastral parcel are listed. The total is counted on the first page (up to 10,000) and carried by the cursor. A page weighs 2 units. See limits.

Map of construction sites in progress

To map the construction sites of a department, ask for GeoJSON with status=started and follow the cursor: one call per page of 100 permits, not one call per company or per building. The positions are in the response.
1

Fetch every page

The Rhône (69) has about 2,600 started permits filed in the last five years: 27 pages, 54 units.
Keep the other parameters unchanged when you pass cursor: a cursor is refused with other filters.
2

Draw the points

Each feature is a Point whose properties is the permit and whose id is the permit number.
3

Open a site

On click, properties.building_id opens the building with GET /v1/buildings/{id}, and properties.gabin_url links to its page on gabin.ai.
For France as a whole, loop over the departments. To refresh the map, store the permits and fetch again with started_after set to your last run. At zoom 15 and 16, the permits tile layer draws the same permits as vector tiles (statut=commence for sites in progress).

Next steps

Buildings

Open the building of a permit: profile, companies, owners, sections.

Vector tiles

Draw permits and other layers at street level.