How to look up French companies by SIREN or SIRET and build a B2B list from Sirene
Updated 2026-10-28 · Tool used: France Company Search - SIREN, SIRET & B2B Lists (Sirene) on Apify · Price: $0.0015 per company ($1.50 per 1,000); invalid numbers, no-match searches and duplicates are free
Checking a French supplier, enriching a CRM export of SIREN numbers or sizing a market ("how many software companies with 10 to 50 staff are there in Lyon?") all need the same data: the official company register. The public directory site shows one company at a time, the raw Sirene files are several gigabytes, and paid French company databases charge a subscription.
This guide shows how to use the French government's free company search API (API Recherche d'entreprises, the service behind annuaire-entreprises.data.gouv.fr, built on INSEE Sirene and the national business register) to get one clean row per company: name, SIREN and head-office SIRET, NAF code and label, legal form, size category, employee band, address with coordinates, intra-EU VAT number, latest published revenue and net income, and optionally directors. No API key or login is needed.
Open France Company Search on Apify →Steps
- For lookups, paste SIREN (9 digits), SIRET (14 digits), French VAT numbers (
FR+ 11 digits) or company names intocompanies, one per line. Check digits are validated first, so typos come back as free rows instead of wrong companies. - For a B2B list, leave
companiesempty and set filters instead:nafCodes(e.g.62.01Zsoftware),departments(e.g.69),postalCodes,employeeRangesorcompanyCategories, plus optional free text insearchQueryand amaxResultscap. - Keep
activeOnlyon to skip ceased companies, and turnincludeDirectorson if you need officers (name and role only, no birth dates). - Run it and export the dataset as CSV or Excel. Each row also links to the company's public Annuaire des Entreprises page. Add a Schedule to refresh the list monthly.
Example input
{
"companies": [
"552032534",
"Michelin"
],
"maxResultsPerName": 1,
"preferLargest": true,
"includeDirectors": false
}
Example output (one item, shortened)
{
"query": " activite_principale=56.10A departement=75",
"queryType": "search",
"found": true,
"siren": "318906443",
"siretHeadOffice": "31890644302868",
"name": "BUFFALO GRILL",
"legalName": "BUFFALO GRILL",
"acronym": null,
"tradeNames": [],
"active": true,
"status": "active",
"creationDate": "1993-09-21",
"closureDate": null,
"nafCode": "56.10A",
"nafLabel": "Restauration traditionnelle",
"nafSection": "I",
"legalFormCode": "5710",
"legalForm": "SAS, société par actions simplifiée",
"companyCategory": "ETI",
"companyCategoryLabel": "Mid-size (ETI)",
"employeeRangeCode": "51",
"employeeRange": "2,000-4,999",
"employeeRangeLabelFr": "2 000 à 4 999 salariés",
"employeeRangeYear": 2024,
"establishments": 326,
"openEstablishments": 213,
"address": "9 BOULEVARD DU GENERAL DE GAULLE 92120 MONTROUGE",
"postalCode": "92120",
"city": "MONTROUGE",
"department": "92",
"region": "11",
"communeCode": "92049",
"latitude": 48.8163905794333,
"longitude": 2.32720669340181,
"vatNumber": null,
"financialYear": 2025,
"revenueEur": 305303715,
"netIncomeEur": -5964809,
"labels": [
"alim_confiance",
"organisme_formation",
"qualiopi"
],
"isAssociation": false,
"associationId": null,
"isSoleTrader": false,
"collectiveAgreements": [
"1979"
],
"lastUpdated": "2026-10-23T08:36:49",
"annuaireUrl": "https://annuaire-entreprises.data.gouv.fr/entreprise/318906443",
"directorsCount": 5,
"matchTotal": 10000,
"localEstablishment": {
"siret": "31890644302298",
"address": "114 AVENUE DU GENERAL LECLERC 75014 PARIS",
"postalCode": "75014",
"city": "PARIS",
"active": true,
"headOffice": false
},
"error": null
}
Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.
Run it from code
Python
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"companies": [
"552032534",
"Michelin"
],
"maxResultsPerName": 1,
"preferLargest": true,
"includeDirectors": false
}
run = client.actor("tinyrex/france-company-search").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)JavaScript / Node.js
import { ApifyClient } from 'apify-client'; // npm i apify-client
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/france-company-search').call({
"companies": [
"552032534",
"Michelin"
],
"maxResultsPerName": 1,
"preferLargest": true,
"includeDirectors": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);curl (no SDK)
# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~france-company-search/run-sync-get-dataset-items?format=csv" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["552032534", "Michelin"], "maxResultsPerName": 1, "preferLargest": true, "includeDirectors": false}' > results.csv
Get your API token in Apify Console → Settings → API & Integrations. The free Apify plan includes monthly credit that is enough to try this.
Use it from an AI agent (MCP)
The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=tinyrex/france-company-search",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}
Then ask in plain language, e.g. "Siren lookup api for this list and give me a table".
Pricing
Pay per result: $0.0015 per company ($1.50 per 1,000); invalid numbers, no-match searches and duplicates are free. You can cap the cost of every run in the run options.
FAQ
Is there a free API for SIREN and SIRET lookups?
Yes. The French government (DINUM) runs API Recherche d'entreprises, which needs no key and combines INSEE Sirene with the national business register (RNE). This actor calls it for you, validates the numbers and returns flat rows ready for a spreadsheet.
How do I get a list of all companies in France with a given NAF code?
Put the NAF/APE code into nafCodes and narrow it with departments or postalCodes. The API serves at most 10,000 companies per search, so for a nationwide list run one department at a time.
Can I reuse the data commercially?
The data is open data under the Licence Ouverte / Open Licence 2.0, which allows commercial reuse with attribution ("Source: Annuaire des Entreprises / Sirene, INSEE"). Companies that opted out of public listing are not in the API. Director names are personal data, so check your GDPR legal basis before using them for outreach.
What does it cost?
$0.0015 per company returned ($1.50 per 1,000). Invalid SIREN/SIRET numbers, names with no match and duplicates are listed with the reason but not charged.
Try it on Apify →More guides
- Bulk tech stack lookup: a Wappalyzer / BuiltWith alternative for thousands of domains
- How to scrape Greenhouse, Lever and Ashby jobs (plus Personio, Teamtailor, Recruitee)
- How to export all products from any Shopify store to CSV or JSON
- How to scrape jobs from Workday career sites (myworkdayjobs.com)
- How to export products from any WooCommerce store to CSV or JSON
- How to export EU public tenders from TED (Tenders Electronic Daily) to CSV or JSON
- How to scrape remote jobs from Himalayas, Remote OK, We Work Remotely and more in one run
- How to export open EU funding calls (Horizon Europe, Digital Europe, cascade funding) to CSV or JSON
- How to turn any RSS or Atom feed into JSON or CSV (bulk, with monitoring)
- How to extract emails, phone numbers and social links from a list of company domains
- How to take bulk website screenshots from a URL list and save them to CSV or Google Drive
- How to export US federal (SAM.gov) and UK (Contracts Finder) tenders to CSV or JSON
- How to look up Norwegian companies by organisation number and build lead lists from Brreg
- How to download SEC filings (10-K, 10-Q, 8-K, Form 4) by ticker and search EDGAR full text
- How to validate NPI numbers in bulk and build US healthcare provider lists from NPPES
- How to look up hundreds of UK companies on Companies House at once (profile, officers, PSC)
- How to look up Finnish companies by Y-tunnus and build B2B lead lists from the YTJ register
- How to extract all URLs from a website's sitemap (and find broken links)
- How to transcribe hundreds of audio and video files to text and subtitles with Whisper
- How to extract text from hundreds of PDFs, including scanned ones, in one run
- How to clean an email list before a campaign: bulk MX, disposable and typo check
- How to get Dutch public tenders from TenderNed into a spreadsheet, with daily alerts
- How to audit titles, meta descriptions, H1s and canonicals for hundreds of pages at once
- How to find every broken link and redirect on a website, with the pages to fix
- How to validate LEI codes and find the LEI for a list of companies in bulk
- How to run Lighthouse on hundreds of URLs and get Core Web Vitals in one table