# French company registry

Source: https://veriport.io/docs/fr-company (published 2026-10-24)

Looks the identifier up (spaces and dots removed; a French VAT number is accepted and its SIREN used), checks its Luhn key, then asks the open Recherche d'entreprises API (INSEE Sirene + INPI RNE data, 7 requests a second shared by everyone) and, when the operator has configured an INSEE key, the INSEE Sirene API for the unité légale. Answers are cached 7 days (served marked `stale` up to 30 days when the registries are down) and normalised: legal form, NAF code and section, status, address, headcount band, company category, establishments, the computed VAT number, officers where the open RNE data gives them. Every answer carries `source` (which APIs answered, cache hit and age) and `fetchedOn`. A SIRET answers the company with that establishment under `establishment`.

## GET https://veriport.io/api/v1/fr/company/{id}

Looks the identifier up (spaces and dots removed; a French VAT number is accepted and its SIREN used), checks its Luhn key, then asks the open Recherche d'entreprises API (INSEE Sirene + INPI RNE data, 7 requests a second shared by everyone) and, when the operator has configured an INSEE key, the INSEE Sirene API for the unité légale. Answers are cached 7 days (served marked `stale` up to 30 days when the registries are down) and normalised: legal form, NAF code and section, status, address, headcount band, company category, establishments, the computed VAT number, officers where the open RNE data gives them. Every answer carries `source` (which APIs answered, cache hit and age) and `fetchedOn`. A SIRET answers the company with that establishment under `establishment`.

Tiers: anonymous, free, credits, plan. Cost: 1 call (cached or live); 0 on 404 or 503.

- `id` (path, required): SIREN (9 digits), SIRET (14 digits) or a French VAT number; spaces and dots allowed.

Example 200:

```json
{
  "siren": "356000000",
  "name": "LA POSTE",
  "legalName": "LA POSTE",
  "acronym": null,
  "legalForm": {
    "code": "5510",
    "label": "SA nationale à conseil d’administration"
  },
  "naf": {
    "code": "53.10Z",
    "section": "H",
    "sectionLabel": "Transportation and storage"
  },
  "status": "active",
  "createdOn": "1991-01-01",
  "ceasedOn": null,
  "headcountBand": {
    "code": "53",
    "label": "10,000 employees or more",
    "year": "2023"
  },
  "companyCategory": {
    "code": "GE",
    "label": "Large enterprise (GE)",
    "year": "2023"
  },
  "employer": true,
  "diffusion": "O",
  "address": {
    "street": "9 RUE DU COLONEL PIERRE AVIA",
    "postalCode": "75015",
    "city": "PARIS",
    "cityCode": "75115",
    "country": "FR",
    "full": "9 RUE DU COLONEL PIERRE AVIA 75015 PARIS"
  },
  "headquarters": {
    "siret": "35600000000048",
    "isHeadquarters": true,
    "status": "active",
    "naf": "53.10Z",
    "address": {
      "street": "9 RUE DU COLONEL PIERRE AVIA",
      "postalCode": "75015",
      "city": "PARIS",
      "cityCode": "75115",
      "country": "FR",
      "full": "9 RUE DU COLONEL PIERRE AVIA 75015 PARIS"
    },
    "createdOn": "2014-01-01",
    "closedOn": null,
    "tradeName": null,
    "headcountBand": null
  },
  "establishment": null,
  "establishments": {
    "total": 12345,
    "open": 9876
  },
  "vatNumber": {
    "computed": "FR39356000000",
    "activeNumbers": [
      "FR39356000000"
    ],
    "note": "computed from the SIREN; validate it with GET /vat/validate before relying on it."
  },
  "officers": [
    {
      "type": "person",
      "name": "EXEMPLE",
      "firstNames": "PRÉNOM",
      "role": "Président du conseil d’administration",
      "birthYear": null,
      "nationality": "Française",
      "siren": null
    }
  ],
  "updatedOn": {
    "registry": "2026-10-20",
    "insee": "2026-10-19",
    "rne": "2026-10-18"
  },
  "source": {
    "primary": "recherche_entreprises",
    "insee": false,
    "openData": [
      "recherche_entreprises",
      "inpi_rne"
    ],
    "fetchedOn": "2026-10-24T09:14:03Z",
    "cache": {
      "hit": false,
      "ageSeconds": 0,
      "stale": false
    }
  }
}
```

## POST https://veriport.io/api/v1/fr/company/bulk

Monthly plan only. Each identifier is answered as `GET /fr/company/{id}` would, in order; the upstream calls are paced inside the shared 7 requests a second of the open API (and 30 a minute for INSEE when configured), with cached answers served first. Each answered item counts one call; refused items are problem documents in place and cost nothing.

Tiers: plan. Cost: 1 call per answered item.

## Read next

- [Product page: the SIREN / SIRET API](https://veriport.io/siren-siret-api)
