SIREN / SIRET API: French company data

A SIREN or SIRET API turns the nine- or fourteen-digit identifier a French supplier or customer gives you into the registry record behind it: who the company is, whether it is active, where it sits, what it does, how big it is, who runs it. Veriport normalises the identifier (SIREN, SIRET or French VAT number), reads the open Recherche d’entreprises API (INSEE Sirene and INPI RNE data) and, when the operator configured a key, the INSEE Sirene API, and returns one record with its source and the day it was fetched, cached 7 days and served marked stale when the registries are down.

The answer, field by field

La Poste by SIREN:

FieldWhat it says
siren, name, legalName, acronymThe identifier and the names the registry holds.
legalFormINSEE’s legal category code and its label (SAS, SARL, SA, EI…).
nafThe NAF rév. 2 activity code with its section and the section’s label.
status, createdOn, ceasedOnActive or ceased, with the dates.
headcountBand, companyCategory, employerINSEE’s headcount band and PME/ETI/GE category, with their reference year.
address, headquarters, establishmentThe registered address, the head office establishment (SIRET), and the establishment you asked for when you sent a SIRET.
officers[]Directors and representatives from the INPI register, where the open data gives them.
vatNumberThe French VAT number computed from the SIREN (and the active numbers the registry lists): validate it on /vat/validate before relying on it.
sourceprimary (which registry answered), insee (whether the INSEE API was used), openData[], fetchedOn, and cache (hit, ageSeconds, stale: a stale cache is served only during an outage).
updatedOnThe dates the registries last updated the record (Sirene, INSEE, RNE).
200 OK · GET /fr/company/356000000
{
  "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
    }
  }
}

When the registries are down: the degraded path

The open search API is free and shared by every caller at 7 requests a second; it has slow days. A company you asked for in the last 7 days is answered from the cache; between 7 and 30 days it is served marked stale: true only when the registries do not answer; beyond that, a 503 upstream_unavailable with retryAfter, never counted.

The same call in six languages

One GET, the key optional for the first 20 calls a day.

curl
curl "https://veriport.io/api/v1/fr/company/356000000"
# with a key, once you have one:
# curl -H "Authorization: Bearer vp_live_YOUR_KEY" "https://veriport.io/api/v1/fr/company/356000000"

Price per 1,000 calls, against the alternatives

Competitors’ figures are read from their public pricing pages on 2026-10-28 at full use of the included volume; a range means several tiers. Ours include the tax of your country, charged by Stripe as merchant of record.

The French data vendors (Pappers, Infogreffe, societe.com) sell documents and subscriptions rather than per-call lookups, so no per-1,000 figure is comparable; the honest comparison is with the free upstream.

OfferPriceIncludedPer 1,000Billing
API Recherche d’entreprises (DINUM)free7 requests/s shared$0No key, no cache, no SLA, raw records
INSEE Sirene APIfree30 requests/min$0Key, quotas, raw INSEE records
Veriport 2,000 pack$9 once2,000 calls, 12 months$4.50Prepaid, no renewal
Veriport 10,000 pack$29 once10,000 calls, 12 months$2.90Prepaid, no renewal
Veriport monthly plan$15 / month5,000 calls + bulk$3.00Subscription, cancel any time

Free before any of this: 100 calls a month with a key, 20 a day without one. A 4xx or 5xx is never counted.

What it is not

Not a Kbis extract and not affiliated with INSEE, INPI or DINUM: the record is the open data of the registries, normalised. Not a credit score, not beneficial-ownership data (the RBE is not open), not a monitoring service; re-validation on a schedule is on the roadmap.

Questions

Why pay when api.gouv.fr is free?
If one lookup now and then is all you need, do not pay: call the open API, the guide shows how. The paid tiers are for the system that checks every new French customer or supplier and wants a normalised record, a cache that bridges outages, a stable error contract and the same key that checks VAT numbers and IBANs.
Can I send a French VAT number?
Yes: FR + 2 characters + the SIREN. The API computes and checks the key, extracts the SIREN and answers the company; the VAT number is not validated on VIES by this endpoint (use /vat/validate for that).
What about companies that opted out of publication?
INSEE marks them non-diffusible; the registry then publishes a reduced record and the API returns what is published, with diffusion set accordingly. Nothing is reconstructed from other sources.

100 lookups a month, no card.

Get a free key

Sources