> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gabin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Company property portfolio

> List the parcels and premises a French company holds in the land files of legal entities: right held, cadastral parcel, address, building, with a summary by department, city and right.

`GET /v1/companies/{siren}/properties` lists what a company holds in the French land files: every parcel and every premise (flat, office, shop, outbuilding…) where it appears as owner, usufructuary, bare owner, lessee or manager.

## Source

The data comes from the **files of premises and parcels of legal entities** (*fichiers des locaux et des parcelles des personnes morales*), published as open data by the DGFiP (French tax administration) from its MAJIC land registry. Gabin serves the latest vintage (2025).

* These files only list **legal entities**: companies, associations, public bodies. No individual ever appears in them.
* A company under partial diffusion in SIRENE, or a sole proprietorship, gets an empty answer, as on every Gabin endpoint.
* Each line gives the **right** held. The same parcel can be listed for several companies: the owner, the bare owner and the usufructuary, or the owner and its manager.
* The building on each parcel and the parcel's position come from the **BDNB** (national building database), matched by cadastral parcel id.

## Difference with `/buildings`

| | `GET /v1/companies/{siren}/buildings` | `GET /v1/companies/{siren}/properties` |
| - | - | - |
| Unit | BDNB building | Land-file line: parcel or premise |
| Roles | Occupied (establishments) and owned | Held, with the exact right |
| Land without building | No | Yes (fields, railway land, plots) |
| Detail | Building summary | Address, floor, entrance, door, area, land use |
| Size | Up to 1,000 buildings per role | Every line, paginated (10,000 reachable per list) |

Use `/buildings` to see where a company works and which buildings it owns; use `/properties` for its full land portfolio.

## Request

```bash curl theme={null}
curl "https://api.gabin.ai/v1/companies/412280737/properties?limit=1" \
  -H "Authorization: Bearer $GABIN_API_KEY"
```

```javascript JavaScript theme={null}
const res = await fetch("https://api.gabin.ai/v1/companies/412280737/properties?limit=1", {
  headers: { Authorization: `Bearer ${process.env.GABIN_API_KEY}` },
});
const { data, meta } = await res.json();
```

```python Python theme={null}
import os
import requests

res = requests.get(
    "https://api.gabin.ai/v1/companies/412280737/properties",
    params={"limit": 1},
    headers={"Authorization": f"Bearer {os.environ['GABIN_API_KEY']}"},
)
body = res.json()
```

| Parameter | Description |
| - | - |
| `type` | `parcels` (default): parcel lines. `premises`: premises |
| `limit` | 1 to 100, default 20 |
| `cursor` | `meta.page.next_cursor` of the previous page, with the same `type` |

Each page costs **2 units** of your daily quota.

## Response

SNCF Réseau (`412280737`), first page with `limit=1` (lists and breakdowns shortened):

```json theme={null}
{
  "data": {
    "siren": "412280737",
    "summary": {
      "vintage": "2025",
      "parcel_records": 61646,
      "premises": 2608,
      "parcels": 59898,
      "land_area_m2": 213626047,
      "complete": true,
      "departments": [{ "code": "86", "parcels": 5677, "premises": 11 }, …],
      "cities": [{ "insee": "30155", "name": "MANDUEL", "parcels": 1057, "premises": 16 }, …],
      "rights": [
        { "right": { "code": "P", "type": "owner", "label_fr": "Propriétaire" }, "parcels": 58891, "premises": 2567 },
        { "right": { "code": "G", "type": "manager", "label_fr": "Gérant, mandataire, gestionnaire" }, "parcels": 613, "premises": 20 },
        …
      ]
    },
    "type": "parcels",
    "parcels": [
      {
        "parcel_id": "01004000BO0635",
        "city_insee": "01004",
        "city_name": "AMBERIEU-EN-BUGEY",
        "right": { "code": "P", "type": "owner", "label_fr": "Propriétaire" },
        "building_id": null,
        "location": [5.35534, 45.950991],
        "gabin_url": "https://gabin.ai/parcelle/01004000BO0635",
        "street_number": null,
        "repetition": null,
        "street": "A L ESCALIER",
        "section": "BO",
        "plan_number": "0635",
        "area_m2": 134,
        "subdivision": null,
        "subdivision_area_m2": 134,
        "land_use": "S - Sols"
      }
    ],
    "premises": []
  },
  "meta": {
    "page": { "next_cursor": "eyJ2Ijox…", "limit": 1 },
    "total": 61646,
    "total_kind": "exact"
  }
}
```

With `type=premises`, `premises` is filled instead of `parcels`:

```json theme={null}
{
  "parcel_id": "75108000BU0024",
  "city_insee": "75108",
  "city_name": "PARIS 08",
  "right": { "code": "P", "type": "owner", "label_fr": "Propriétaire" },
  "building_id": "bdnb-bg-U3PL-21SA-LKFK",
  "location": [2.325715, 48.875235],
  "gabin_url": "https://gabin.ai/parcelle/75108000BU0024",
  "street_number": "117",
  "repetition": null,
  "street": "RUE SAINT-LAZARE",
  "building_letter": "A",
  "entrance": "01",
  "level": "00",
  "door": "03001"
}
```

### Summary

The `summary` comes with the first page only (`null` once you pass a `cursor`).

| Field | Meaning |
| - | - |
| `parcel_records` | Parcel lines, exact. A parcel split into fiscal subdivisions (part built, part meadow) has one line per subdivision |
| `premises` | Premises held, exact |
| `parcels` | Distinct parcels. A parcel held under two rights counts twice |
| `land_area_m2` | Cadastral area of the distinct parcels, in m² |
| `departments`, `cities` | Top 10 by parcels + premises |
| `rights` | Breakdown by right held, most frequent first |
| `complete` | `false` when the portfolio is too large to aggregate in time: `parcels` and `land_area_m2` are `null` and the breakdowns empty; `parcel_records` and `premises` stay exact |

### Lines

| Field | Meaning |
| - | - |
| `parcel_id` | Cadastral id, 14 characters, the one of [`GET /v1/parcels/{id}`](https://docs.gabin.ai/guides/buildings#parcels) |
| `right` | `code` (MAJIC), `type` in English, `label_fr` as published by the DGFiP |
| `building_id` | BDNB building on the parcel, the first one when it carries several; `null` on bare land |
| `location` | A point inside the parcel, `[lon, lat]`; `null` outside the BDNB (overseas departments) |
| `street_number`, `repetition`, `street` | Address as written in the land files, upper case. A rural parcel often has a locality name (*lieu-dit*) as `street` |
| `area_m2`, `subdivision`, `subdivision_area_m2`, `land_use` | Parcels: area of the whole parcel, fiscal subdivision and its land use |
| `building_letter`, `entrance`, `level`, `door` | Premises: position in the building as coded by the land files. `level` `00` is the ground floor |

### Rights

| `type` | `code` | French label |
| - | - | - |
| `owner` | P | Propriétaire |
| `usufructuary` | U | Usufruitier |
| `bare_owner` | N | Nu-propriétaire |
| `manager` | G | Gérant, mandataire, gestionnaire |
| `condominium_manager` | S | Syndic de copropriété |
| `state_property_manager` | Z | Gestion d'un bien de l'État |
| `emphyteutic_lessee` | E | Emphytéote |
| `construction_lessee` / `construction_lessor` | R / B | Preneur / Bailleur à construction |
| `rehabilitation_lessee` / `rehabilitation_lessor` | W / V | Preneur / Bailleur d'un bail à réhabilitation |
| `temporary_occupant` | O | Autorisation d'occupation temporaire |
| `trustee` | C | Fiduciaire |
| `tenant_purchaser` | A | Locataire-attributaire |
| `partner_tax_transparent_company` | H | Associé dans une société en transparence fiscale |
| `antichresis_creditor` | K | Antichrésiste |
| `foncier`, `domanier`, `tenuyer` | F, D, T | Breton leases (*domaine congéable*, *convenant*) |

A code outside this list comes as `type: "other"` with its French label.

## Order and pagination

Lines come in the order of the land files, stable from one page to the next; they are not sorted by city. Use the summary to see where the portfolio lies, then page through the lines. At most 10,000 lines can be reached per list, as on every Gabin list.

An unknown SIREN returns `404 NOT_FOUND`. A company with no line in the land files returns zero counts and empty lists.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.