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

# INSEE Sirene

> Connect INSEE Sirene to your Atako agents — 6 read and 0 write actions.

Let your agents query the official French business register (Sirene, INSEE): legal units by SIREN, establishments by SIRET, multi-criteria search of companies and establishments, and the register update dates.

## Connection

* **Authentication**: API key (API Sirene key).

<Note>
  On portail-api.insee.fr, sign in with "Connexion pour les externes" and create an account (free). Create an application (name and description, creation mode "simple", leave the client ID and "souscription" fields empty). Then go to Catalogue → Applicatif → API Sirene → Souscrire, choose the "Public" plan, select your application and confirm. The key is shown in your application, "Souscriptions" tab → API Sirene subscription. Usage limits: see the portal.

  See [INSEE Sirene's documentation](https://portail-api.insee.fr/).
</Note>

## Read actions (6)

| Action | Description |
| - | - |
| `get_establishment` | Get an establishment from the Sirene register by its SIRET: address, headquarters flag, activity, administrative state, history of periods, and the current values of its legal unit. A 404 means the SIRET is unknown; a 403 means the establishment is under partial diffusion. Arguments: siret (string, 14 digits, required), date (string YYYY-MM-DD, optional — only the period covering that date is returned), champs (string, optional — comma-separated list of the fields to return, e.g. "siren,denominationUniteLegale"), masquerValeursNulles (boolean, optional — true hides empty fields). |
| `get_legal_unit` | Get a legal unit (company, association, sole proprietor…) from the Sirene register by its SIREN, with its history of periods (periodesUniteLegale: name, legal category, main activity, administrative state…). A 404 means the SIREN is unknown; a 403 means the unit is under partial diffusion. Arguments: siren (string, 9 digits, required), date (string YYYY-MM-DD, optional — only the period covering that date is returned), champs (string, optional — comma-separated list of the fields to return, e.g. "siren,denominationUniteLegale"), masquerValeursNulles (boolean, optional — true hides empty fields). |
| `get_service_info` | Get the state of the API Sirene service: etatService (UP/DOWN), state of each collection (legal units, establishments, succession links), API version and the last update dates of the data. No arguments. Counts against the key quota like any call. |
| `list_establishments` | List the establishments of one legal unit (a search q=siren:… on /siret). A 404 means the SIREN has no establishment in the register. Arguments: siren (string, 9 digits, required), activeOnly (boolean, optional — true keeps only the establishments currently open), champs (string, optional — comma-separated fields to return), nombre (integer 0–1000, optional, default 20), debut (integer 0–1000, optional, default 0), curseur (string, optional — "\*" then header.curseurSuivant). |
| `search_establishments` | Multi-criteria search of establishments (etablissements, with header.total). q syntax: variable:value, variable names are case-sensitive and exactly those of the API response; historised variables (those under periodes…) must be wrapped in periode(…); combine with AND / OR and parentheses; exclude with a leading "-"; ranges variable:\[A TO B]; wildcard *. raisonSociale:TEXT searches every company name field at once. A 404 means no unit matches the query, not a wrong call. On establishments the legal-unit variables are current values (no periode), while the establishment state, activity and signs are historised: examples "denominationUniteLegale:ATAKO", "codePostalEtablissement:75001 AND periode(etatAdministratifEtablissement:A)" (without date, periode(…) matches any past period: pass date = today to keep only the establishments open now), "codeCommuneEtablissement:92046 AND periode(activitePrincipaleEtablissement:56.10A)", "siren:552032534 AND etablissementSiege:true". Arguments: q (string, optional — the query; all establishments when omitted), date (string YYYY-MM-DD, optional — the criteria on historised variables must hold at that date; today or a future date = current values only), champs (string, optional — comma-separated fields to return), masquerValeursNulles (boolean, optional), tri (string, optional — comma-separated sort fields, default siren), nombre (integer 0–1000, optional, default 20 — results per page; 0 returns only header.total), debut (integer 0–1000, optional, default 0 — rank of the first result; combine with tri), curseur (string, optional — "*" on the first call, then header.curseurSuivant to walk past 1000 results; finished when curseur equals curseurSuivant). |
| `search_legal_units` | Multi-criteria search of legal units (unitesLegales, with header.total). q syntax: variable:value, variable names are case-sensitive and exactly those of the API response; historised variables (those under periodes…) must be wrapped in periode(…); combine with AND / OR and parentheses; exclude with a leading "-"; ranges variable:\[A TO B]; wildcard *. raisonSociale:TEXT searches every company name field at once. A 404 means no unit matches the query, not a wrong call. On legal units the name, legal category, main activity and administrative state are historised: examples "raisonSociale:ATAKO", "periode(denominationUniteLegale:ATAKO)", "periode(etatAdministratifUniteLegale:A) AND categorieEntreprise:PME", "dateCreationUniteLegale:\[2020 TO 2024]". Arguments: q (string, optional — the query; all units when omitted), date (string YYYY-MM-DD, optional — the criteria on historised variables must hold at that date; today or a future date = current values only), champs (string, optional — comma-separated fields to return), masquerValeursNulles (boolean, optional), tri (string, optional — comma-separated sort fields, default siren), nombre (integer 0–1000, optional, default 20 — results per page; 0 returns only header.total), debut (integer 0–1000, optional, default 0 — rank of the first result; combine with tri), curseur (string, optional — "*" on the first call, then header.curseurSuivant to walk past 1000 results; finished when curseur equals curseurSuivant). |

## Write actions (0)

This connector is read-only — it exposes no write actions.

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](/integrations/permissions) for the grant model and [Security](/integrations/security) for how credentials are protected.

***

*Last reviewed against the provider API: September 2026.*


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