INSEE Sirene logo

Leads & companies · Live on Apify

SIRET lookup and French company search with Sirene data

Check French companies by SIREN, SIRET or VAT number. Or search by name with area and NAF filters. You get legal form, activity, head office and a clear status.

About $7.20 for 1,000 companies$0.0072 per company + $0.002 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

recordTypecompany
matchedBysiren_exact
siren552100554

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: 552081317 in SIREN / SIRET / VAT numbers. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

France Company & SIRET Search looks up French companies in the official Sirene directory. Add SIREN, SIRET or French VAT numbers, or search by company name with department, postal code, NAF code and status filters. You get one clean row per company, with legal form, NAF activity, size, dates, head office and a clear status: active, ceased or not found.

  • Identifier lookup. Each SIREN, SIRET or VAT number is an exact match. A SIRET also returns that establishment. A wrong or unknown number returns a not_found row, so no input is lost.
  • Name search. A full-text search on company names, brands and addresses, with filters. Results are ranked by the source. Check siren and name before you use a search result as a verified match.

Good for

  • Check that a supplier or customer exists and is still active (KYB, onboarding).
  • Fill CRM records with the official name, legal form, NAF code, VAT number and head office.
  • Build a list of companies in a department or with a NAF code.
  • Find the open and closed establishments of a company.

Not a good fit

  • Directors, shareholders, phone numbers or emails. The Actor does not output them. Note: a sole trader (entrepreneur individuel) is registered under a person's name, and Sirene shows that name as the company name, unless the person hid it.
  • Companies that asked to hide their data (non-diffusible). The public API does not serve them.
  • A full copy of the Sirene database. Use the official Sirene files for bulk downloads.
  • Legal certificates such as a Kbis extract.

Who uses it

KYB and onboarding teams

Check that a French client exists and is still active.

CRM owners

Fill records with the official name, NAF code and VAT number.

Prospecting teams

List companies in a department or with one NAF code.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.002Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Company record$0.0072One found French company (complete or partial row) saved to the Dataset.
Not-found lookup$0.001One valid SIREN/SIRET/VAT lookup that is not in the public Sirene index, saved as a not_found row.
Establishment record$0.0003One establishment (SIRET) row saved to the Dataset when establishments are requested or a SIRET is looked up.

Examples

  • One company: about $0.0092.
  • 1,000 companies: about $7.20.
  • Every day 100 companies, for 30 days: about $21.66 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 690 companies.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need an INSEE API key?

No. The source is open and free. You only need an Apify account.

Are company directors included?

No. They are personal data. The tool gives company data only.

Can I get a Kbis extract?

No. The tool gives public register data, not legal certificates.

Can I reuse the data commercially?

Yes. Sirene data is under Licence Ouverte 2.0, with attribution.

Do I need an API key or a French account?

No. The source is open and free. You only need your Apify account.

Is a search result a verified match?

No. Search is fuzzy. For verification, use the SIREN or SIRET. Exact lookups show matchedBy: "siren_exact" or "siret_exact".

How fresh is the data?

Each run reads the source live. Each row has fetchedAt (our read time) and sourceUpdatedAt (the source update time of that record).

Details

Step by step on Apify
  1. Open the Input tab. The form already has three SIREN numbers: EDF, TotalEnergies and LVMH.
  2. Click Start.
  3. Open the Companies view in the Output tab. Check name, administrativeStatus and headOfficeAddress.
  4. Replace the numbers with your own list (up to 100). Turn on Include establishments if you need SIRET rows.
Use cases
TaskInputYou getKey fields
Verify a company (KYB)identifierscompany rowstatus, administrativeStatus, closureDate, legalFormLabel
Clean CRM recordsidentifiers (SIREN, SIRET or VAT)company rowname, vatNumber, nafCode, headOfficeAddress
Map a company's sitesidentifiers + includeEstablishmentsestablishment rowssiret, address, administrativeStatus, isHeadOffice
Prospect list by area and activityquery + departments / nafCodescompany rowsname, employeeRangeLabel, companyCategory, searchRank
Tips for better results
  • Use SIREN or SIRET for checks. Name search is fuzzy.
  • A SIRET also returns that one establishment of the company.
  • Spaces, dots and dashes in numbers are fine. The tool removes them.
Limits and good to know
  • Up to 100 identifiers per run, or up to 100 companies per search
  • Up to 100 establishments per company. The source cannot list more. Check establishmentsComplete: in our test of 100 transport companies, 96 had their full list
  • In search mode, establishments are the ones that matched your search or filters, not all establishments of the company
  • The Actor sends at most about 3 requests per second. The source allows 7 per second per IP and shares a limit across cloud providers, so a busy moment can give RATE_LIMITED rows. Run them again later
  • Internal time budget is 240 seconds. 100 identifiers with establishments took 94 seconds in our test
  • naf2025Code is a temporary field of the source. The source says it may be removed after 2027-01-01

Troubleshooting

SymptomCheckAction
not_found for a real companychecksumValidfalse means a typo. If true, the company may be non-diffusible or very new.
A ceased companyadministrativeStatus, closureDateThis is correct data, not an error.
Address is nulldiffusionStatus, hiddenFieldsThe company hides some data by law.
RATE_LIMITED rowsRUN_SUMMARY.http.rateLimitedRun the failed identifiers again later.
Fewer establishments than establishmentsTotalestablishmentsComplete, maxEstablishmentsPerCompanyRaise the limit up to 100. Above 100, the source gives a subset.
INVALID_INPUTRUN_SUMMARY.messageCommon causes: identifiers and a search in one run; no valid SIREN/SIRET/VAT in the list; an unknown NAF code; a search query shorter than 3 characters without a filter.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "recordType": "company",
  "status": "complete",
  "input": "552100554",
  "matchedBy": "siren_exact",
  "siren": "552100554",
  "name": "PEUGEOT SA",
  "legalFormLabel": "SA à directoire (s.a.i.)",
  "nafCode": "70.10Z",
  "nafVersion": "NAFRev2",
  "naf2025Code": null,
  "administrativeStatus": "ceased",
  "creationDate": "1955-01-01",
  "closureDate": "2021-01-16",
  "vatNumber": null,
  "establishmentsTotal": 5,
  "establishmentsOpen": 0,
  "headOfficeSiret": "55210055400054",
  "headOfficeCity": "VELIZY-VILLACOUBLAY",
  "headOfficeStatus": "closed",
  "annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/552100554",
  "sourceUpdatedAt": "2026-10-08T09:06:03"
}

Use it from code

Actor ID: cliqtomedia/france-sirene-company-search. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/france-sirene-company-search").call(run_input={
    "identifiers": [
        "552081317",
        "542051180",
        "775670417"
    ],
    "companyStatus": "any"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~france-sirene-company-search/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"identifiers": ["552081317", "542051180", "775670417"], "companyStatus": "any"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/france-sirene-company-search")
result = tool.invoke({"run_input": {"identifiers": ["552081317", "542051180", "775670417"], "companyStatus": "any"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (40)
FieldTypeMeaning
recordTypestringRow type: company or establishment. Filter on it, or use the Companies / Establishments view.
statusstringRow result: complete, partial, not_found or error. See statusReason and errorCode.
statusReasonstringPlain-English reason for a partial, not_found or error row; null when complete.
errorCodestringMachine code for error rows, e.g. INVALID_IDENTIFIER, RATE_LIMITED, SOURCE_UNAVAILABLE; null otherwise.
inputstringYour input value as given (identifier), or null for search rows.
matchedBystringHow the row was found: siren_exact, siret_exact, search; for establishments also head_office, company_establishments, search_match.
sirenstring9-digit SIREN company number.
siretstring14-digit SIRET establishment number (establishment rows).
companyNamestringName of the parent company (establishment rows).
isHeadOfficebooleantrue if this establishment is the current head office (siège).
wasHeadOfficebooleantrue if this establishment was a head office in the past.
administrativeStatusstringCompany: active or ceased. Establishment: active or closed.
administrativeStatusCodestringINSEE code: A (active), C (ceased company) or F (closed establishment).
creationDatestringCreation date, YYYY-MM-DD.
activityStartDatestringStart date of the establishment activity, YYYY-MM-DD.
closureDatestringClosure date, YYYY-MM-DD; null if active.
addressstringFull establishment address as one line; null if hidden.
postalCodestring5-digit postal code of the establishment.
citystringCity of the establishment.
communeCodestringINSEE commune code of the establishment.
departmentstringDepartment code of the establishment, e.g. 75, 2A, 971.
regionstringINSEE region code of the establishment.
latitudenumberLatitude (WGS84) of the establishment; null if unknown or hidden.
longitudenumberLongitude (WGS84) of the establishment; null if unknown or hidden.
nafCodestringMain activity, NAF rev. 2 code, e.g. 62.01Z.
nafVersionstringNAF nomenclature of nafCode, e.g. NAFRev2.
nafLabelstringFrench label of nafCode.
naf2025CodestringMain activity in the new NAF 2025 nomenclature; temporary source field, can be null.
employeeRangeCodestringINSEE headcount band code (tranche d'effectif).
employeeRangeLabelstringHeadcount band label, e.g. 10 000 salariés et plus.
employeeRangeYearnumberYear of the headcount band.
isEmployerbooleanEmployer flag from the source; often null at company level.
tradeNamesarrayTrade names (enseignes) of the establishment.
commercialNamestringCommercial name (dénomination usuelle) of the establishment.
diffusionStatusstringpublic, or partial when some data is hidden by law (non-diffusible fields).
hiddenFieldsarrayFields hidden by the source for privacy; they are null in this row.
annuaireUrlstringPublic page on annuaire-entreprises.data.gouv.fr.
sourcestringData source name and licence.
sourceUrlstringSource API URL used for this row.
fetchedAtstringWhen the Actor read the source, ISO 8601 UTC.
Input settings (9)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
SIREN / SIRET / VAT numbersidentifiersarray["552081317", "542051180", "775670417"]
Search by name or addressquerystring
Departmentsdepartmentsarray
Postal codespostalCodesarray
NAF / APE activity codesnafCodesarray
Company statuscompanyStatusstring"any"
Max companies (search)maxResultsinteger25
Include establishments (SIRET rows)includeEstablishmentsbooleanfalse
Max establishments per companymaxEstablishmentsPerCompanyinteger20

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure