French Companies · Search & SIREN Enrichment avatar

French Companies · Search & SIREN Enrichment

Pricing

from $4.99 / 1,000 results

Go to Apify Store
French Companies · Search & SIREN Enrichment

French Companies · Search & SIREN Enrichment

Build B2B lead lists or CRM enrichment from France’s official company register. Search by pasted URL (Pappers or data.gouv) with NAF, region, and department filters—or paste SIRENs for full records. Returns identity, address, directors, headcount band, and more via recherche-entreprises.api.gouv.fr.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

26

Total users

8

Monthly active users

12 days ago

Last modified

Share

French Companies — Search & SIREN Enrichment (Official INSEE API)

Get export-ready French company data in minutes: build prospect lists from a search URL, or turn SIRENs into full profiles — names, locations, activities, directors, financials where published, legal form, VAT, and more. No API key. Data comes from France’s official register (recherche-entreprises.api.gouv.fr, INSEE-backed).

Built for: Sales & lead gen · CRM enrichment · Compliance & KYB · Market research by sector or region


What does this Actor do?

ModeInputBehavior
Search URLOne or more URLs from Pappers or recherche-entreprises.data.gouv.frQuery parameters are parsed into API filters. The Actor paginates through all matching companies (per URL). Multiple URLs are merged; rows are deduplicated by SIREN.
SIREN listNine-digit French company IDs (SIREN)Each SIREN is resolved to a full company record. Values shorter than nine digits are zero-padded. Duplicates are removed.

The Apify Input form lists two modes: searchUrl and sirens. Legacy keys search and enrich are still normalized in code for local input.json or older scripts.


What data does it extract?

CategoryFields (representative)
Identitysiren, nom_complet, nom_raison_sociale, date_creation, etat_administratif
Activityactivite_principale (NAF), libelle_activite_principale, categorie_entreprise
Addressadresse, code_postal, ville, departement, departement_nom, region, region_nom, latitude, longitude
Legal & taxforme_juridique, nature_juridique, tva_intracommunautaire, siret_siege
Scaleeffectif_salarie (band), caractere_employeur, nombre_etablissements, nombre_etablissements_ouverts
Governancedirigeants, dirigeant_1dirigeant_5, role_1role_5, birth year and nationality columns where available
Financialschiffre_affaires, resultat_net, annee_finances (when published in the source)
Flagsest_entrepreneur_individuel, est_organisme_formation, donnees_diffusibles, convention_collective
  • Auditors (commissaires aux comptes) are excluded from director columns by design.
  • Empty values are omitted from each row (no empty strings for missing fields).
  • donnees_diffusibles: false when the register marks data as non-public.
  • If a SIREN cannot be matched, the dataset row contains siren and _error with a short message.

Input examples

Search URL (larger extraction)

{
"mode": "searchUrl",
"searchUrls": [
"https://www.pappers.fr/recherche?ville=74160&en_activite=true",
"https://recherche-entreprises.data.gouv.fr/search?departement=75&activite_principale=62.01Z"
],
"maxResults": 500
}

SIREN enrichment

{
"mode": "sirens",
"sirens": ["732829320", "552032534", "380129866"]
}

All input parameters

ParameterTypeDefaultDescription
modestring"searchUrl"searchUrl or sirens. Aliases search / enrich are normalized when present in JSON (e.g. local input.json).
searchUrlsstring[](demo URL)[Search] One URL per line from Pappers or data.gouv.
sirensstring[](3 demo SIRENs)[Enrich] One SIREN per line (digits only; short values padded).
maxResultsinteger25[Search] Max companies per URL. 0 = all matches (long runs — increase run timeout if needed).

Developer note

Throughput and resilience (delays between requests, retries) are implemented in code — not in the Input form — so runs stay reliable against the official service without extra configuration.


Output example

{
"siren": "732829320",
"nom_complet": "Example SAS",
"nom_raison_sociale": "EXAMPLE",
"activite_principale": "62.01Z",
"libelle_activite_principale": "Computer programming activities",
"adresse": "1 rue Example",
"code_postal": "75001",
"ville": "Paris",
"forme_juridique": "SAS",
"tva_intracommunautaire": "FR12345678901",
"dirigeants": "…"
}

Download results as JSON, CSV, Excel, or HTML from the Dataset tab in the Apify Console.


How to use (Apify Console)

Search URL

  1. Open the Actor and select Search URL.
  2. Run a search on Pappers or data.gouv, then copy the full URL from the address bar.
  3. Paste one or more URLs into Search URLs (one per line).
  4. Optionally set Max results (higher for bigger extracts).
  5. Click Start.
  6. Open the Dataset tab when the run finishes and export your file format.

SIREN list

  1. Select SIREN list.
  2. Paste your nine-digit SIRENs (one per line).
  3. Click Start and export from the Dataset.

Local development

$npm install

Edit the single root file input.json (search mode by default, with a small maxResults for quick tests). To run SIREN enrichment locally, set "mode": "sirens" and edit the "sirens" array (searchUrls is ignored in that mode).

On a local run (not Apify Cloud), the Actor reads input.json at the project root first (src/main.js), then falls back to the default INPUT in the key-value store if the file is missing.

$apify run --purge-none

Optional: copy to the default store (mirrors how input is supplied on the platform):

$npm run run:local

Use apify run for parity with the cloud (avoid plain npm start alone).


Performance and cost

  • Compute: This Actor uses HTTP requests only (no browser). Cost is mainly Apify compute units and run duration.
  • Reliability: The service can slow down when busy. The Actor is built to wait and retry automatically so you do not adjust technical settings in the form.
  • Volume: Large searches (maxResults: 0) can run for a long time; raise the run timeout under Options if needed.
Scenario (indicative)Notes
A few SIRENsUsually completes in seconds to a few minutes
Single search URL, hundreds of rowsDepends on maxResults and API response time
Many URLs or thousands of SIRENsLonger wall time; ensure timeout is sufficient

See current Apify pricing for compute pricing.


Use cases

  • Lead lists: Filter by NAF code, department, or city (via URL filters), then export to your CRM.
  • Enrichment: Turn a spreadsheet of SIRENs into full legal and contact context from the register.
  • Compliance / KYB: Pull official status, form, and published financial bands where available.

  • Data is retrieved from the French administration’s public API; this Actor does not scrape private websites.
  • Rows may contain personal data (e.g. director names) where the register publishes them; use and retention must comply with GDPR and your lawful basis for processing.
  • For general context on web data and compliance, see Apify’s blog on legal scraping.

FAQ

Do I need an API key?
No. The government search API used here does not require a key for these calls.

Can I use Pappers-only filters?
Only parameters that map to the official API are applied (see README table). Unsupported Pappers-only filters are ignored.

Why do I see errors or retries in logs?
The official service sometimes throttles heavy traffic. The Actor waits and retries for you. If a run still fails, try again later or split very large jobs into smaller runs.

Is every field always filled?
No. Some companies have redacted or unpublished fields; optional columns may be missing from a row.


Support

For questions, custom automation, or integrations: corentin@outreacher.fr

You can also use the Issues tab on this Actor’s Apify page after publish.