France SIRENE Company Scraper
Pricing
Pay per event
France SIRENE Company Scraper
Extract French company registry leads from the official SIRENE API with SIREN, SIRET, addresses, activity codes, status, and establishment counts.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Extract French company registry data from the official SIRENE search API. This Apify Actor turns company names, activities, SIREN numbers, SIRET numbers, departments, regions, postal codes, and NAF/APE activity codes into clean dataset records for lead generation, KYC, CRM enrichment, and market mapping.
It does not scrape Pappers web pages. It uses the public French government company search endpoint so runs stay fast, low-cost, and browser-free.
What does France SIRENE Company Scraper do?
France SIRENE Company Scraper searches the official French company register and exports normalized company records.
You can use it to:
- π«π· Find active French businesses by keyword or activity.
- π§Ύ Enrich known SIREN and SIRET identifiers.
- π Build local lead lists by department, region, city, or postal code.
- π’ Collect headquarters addresses and establishment counts.
- π§© Prepare official registry data for CRM, KYC, vendor onboarding, or compliance workflows.
Who is it for?
This actor is useful for teams that repeatedly need official French company data:
- Sales teams building French B2B prospect lists.
- RevOps teams cleaning CRM records with SIREN/SIRET identifiers.
- KYC and compliance teams validating vendor identity and status.
- Market researchers mapping French companies by activity code and region.
- Data teams that need API-friendly registry exports without writing custom pagination code.
Why use this actor?
The official API is public, but production workflows still need pagination, retry handling, de-duplication, schema-stable output, and Apify integrations.
This actor adds:
- A simple Apify input form.
- Typed dataset records.
- Bounded pagination and max item controls.
- Optional nested executives and establishments.
- PPE pricing tied to records saved.
- API, schedule, webhook, and MCP compatibility through Apify.
Data source
The actor queries:
https://recherche-entreprises.api.gouv.fr/search
This is the French government company search API. The output reflects fields returned by that source at run time.
What data can you extract?
| Field | Description |
|---|---|
siren | French company SIREN identifier |
siret | Headquarters or matched establishment SIRET |
companyName | Legal company name |
fullName | Full display name returned by the API |
tradeName | Commercial/trade name when available |
legalFormCode | Legal form code |
companyCategory | Company category such as PME when available |
employeeSizeCode | Employee size band code |
activityCode | NAF/APE activity code |
status | Administrative status |
isActive | Boolean active flag derived from status |
headquartersAddress | Headquarters address |
headquartersCity | Headquarters city |
headquartersDepartment | Department code |
headquartersRegion | Region code |
latitude, longitude | Coordinates when returned by the source |
openEstablishments | Number of open establishments |
totalEstablishments | Total establishment count |
executives | Optional executives/officers array |
matchingEstablishments | Optional matched establishments array |
How much does it cost to scrape French SIRENE company data?
The actor uses pay-per-event pricing:
- A $0.005 start fee is charged once per run.
- The BRONZE per-company price is $0.000032031.
- Volume tiers reduce the per-company price down to $0.00001 on DIAMOND.
You can control spend with maxItems. A 1,000-company BRONZE run is roughly $0.037 before any platform-side limits or tier differences.
Input options
The most important inputs are:
queryβ company name, activity, keyword, SIREN, or SIRET.identifiersβ optional SIREN/SIRET list for enrichment.maxItemsβ maximum companies to save.activeOnlyβ request active records by default.activityCodeβ optional NAF/APE filter such as56.10A.departmentβ optional department code such as75.regionβ optional region code such as11.cityCodeβ optional INSEE commune code.postalCodeβ optional postal code.includeExecutivesβ include directors/officers when available.includeMatchingEstablishmentsβ include matched establishment details.
Example input: Paris restaurant leads
{"query": "restaurant paris","department": "75","activeOnly": true,"maxItems": 100,"resultsPerPage": 25}
Example input: enrich SIREN identifiers
{"query": "830998175","identifiers": ["830998175", "552100554"],"activeOnly": true,"maxItems": 10,"includeMatchingEstablishments": true}
Example output
{"siren": "830998175","siret": "83099817500012","companyName": "SARL RESTAURANT LES PEUPLIERS","tradeName": "RESTAURANT LES PEUPLIERS","activityCode": "56.10A","status": "A","isActive": true,"headquartersCity": "SELTZ","headquartersPostalCode": "67470","headquartersDepartment": "67","openEstablishments": 1,"sourceUrl": "https://recherche-entreprises.api.gouv.fr/search?...","scrapedAt": "2026-06-29T00:00:00.000Z"}
How to run it on Apify
- Open the actor on Apify.
- Enter a company/activity query or SIREN/SIRET identifiers.
- Add optional location or activity filters.
- Set
maxItemsto your desired export size. - Run the actor.
- Download the dataset as JSON, CSV, Excel, XML, or RSS.
Tips for better results
- Use French business terms for activity searches.
- Combine
querywithdepartmentorregionfor local lead lists. - Use
identifierswhen enriching existing CRM records. - Keep
includeExecutivesdisabled unless you need officer data. - Use
includeMatchingEstablishmentswhen you care about SIRET-level matching.
Integrations
Common integration patterns include:
- CRM enrichment: send SIREN/SIRET lists from HubSpot, Salesforce, or Airtable and load the dataset back.
- Vendor onboarding: validate legal name, status, and headquarters before approval.
- Lead generation: schedule regional searches and export new official registry records.
- Data warehouse loading: run via API and ingest JSONL/CSV into BigQuery, Snowflake, or Postgres.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/france-sirene-company-scraper').call({query: 'restaurant paris',department: '75',maxItems: 100});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/france-sirene-company-scraper').call(run_input={'query': 'conseil informatique','region': '11','maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items[0])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~france-sirene-company-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"query":"restaurant paris","department":"75","maxItems":100}'
MCP usage
Use the actor from MCP-compatible tools through Apify MCP:
$npx -y @apify/actors-mcp-server --actors automation-lab/france-sirene-company-scraper
MCP endpoint format:
https://mcp.apify.com/?tools=automation-lab/france-sirene-company-scraper
JSON config block for Claude Desktop or compatible MCP clients:
{"mcpServers": {"apify-france-sirene": {"command": "npx","args": ["-y", "@apify/actors-mcp-server", "--actors", "automation-lab/france-sirene-company-scraper"],"env": {"APIFY_TOKEN": "YOUR_APIFY_TOKEN"}}}}
Example prompts:
- "Find 100 active restaurant companies in Paris and return SIREN, SIRET, address, and activity code."
- "Enrich these French SIREN identifiers and flag inactive companies."
- "Build an Γle-de-France list of IT consulting companies by NAF code."
Legality
The actor uses a public official API and extracts business registry data returned by that API. You are responsible for using the data lawfully, respecting privacy and compliance rules, and following the source terms for your jurisdiction and use case.
FAQ
Is it legal to scrape SIRENE company data?
The actor queries a public official API. You still need to make sure your storage, outreach, enrichment, and retention workflows comply with applicable laws and source terms.
Why did I get zero results?
Try a broader French-language query, remove strict location filters, or verify that your SIREN/SIRET identifiers are valid.
Why are fewer unique companies saved than maxItems?
The actor de-duplicates by SIREN, so duplicate identifiers or overlapping searches may produce fewer unique company rows than requested.
Troubleshooting
If you get zero results, try a broader French-language query, remove strict location filters, or verify that your SIREN/SIRET identifiers are valid.
If a run stops early, check maxItems and the input filters. The actor de-duplicates by SIREN, so duplicate identifiers or overlapping searches may produce fewer unique rows than requested.
Related Apify actors
You may also need:
https://apify.com/automation-lab/google-maps-lead-finderfor place/contact lead discovery.https://apify.com/automation-lab/company-domain-to-twitter-x-url-resolverfor enrichment workflows.https://apify.com/automation-lab/website-contact-finderfor website contact extraction.
Limitations
- The actor returns fields provided by the official API, not paid Pappers-only data.
- Filter behavior depends on the source API parameters.
- Some optional nested arrays can be large, so keep them disabled unless needed.
Changelog
0.1β Initial implementation using the official French company search API.
Support
Open an Apify issue if you need a missing field, a new filter, or help shaping a French company enrichment workflow.