Company data
Pappers Scraper: Export French Company Data by SIREN and NAF
Export French company data from Pappers.fr in bulk: SIREN, NAF code, directors, revenue, establishments and BODACC publications. Inputs, output and API code.
Company data
Export French company data from Pappers.fr in bulk: SIREN, NAF code, directors, revenue, establishments and BODACC publications. Inputs, output and API code.
Pappers.fr is the easiest place to look up a French company. It combines INSEE’s SIRENE register, the RCS (Registre du Commerce et des Sociétés), BODACC legal announcements and filed accounts into one profile per SIREN. Looking up one company is free and fast. Exporting 3,000 companies matching a department and NAF code is not, unless you script it.
The Pappers Scraper does that export. You build a search on pappers.fr/recherche, paste the URL, and get back one full company profile per result: identifiers, legal form, NAF code, head office, every establishment, directors, beneficial owners, headcount range, revenue and profit when published, and BODACC publications.
Each dataset row is a company profile. The most useful fields:
| Category | Fields |
|---|---|
| Identifiers | siren, siren_formate, siege.siret, diffusable |
| Names | nom_entreprise, denomination, plus nom / prenom for sole traders |
| Legal status | forme_juridique, categorie_juridique, statut_rcs, statut_consolide, date_creation, date_cessation |
| Activity | code_naf, libelle_code_naf, domaine_activite, conventions_collectives |
| Size and finances | capital, effectif, effectif_min, effectif_max, chiffre_affaires, resultat, annee_finances |
| Locations | siege (address, postcode, city, coordinates), etablissements, villes |
| People | dirigeants (role, name, start date, current or past), beneficiaires |
| Filings | publications (BODACC), documents, nb_publications_total, nb_documents_total |
| Traceability | source (the search URL) or query (the keyword) that found the company |
maxResults). Use 50 for a test, 0 for everything.This is the recommended mode because Pappers’ own filter UI does the hard part. Every URL parameter (departement, commune, code_naf, etat, and so on) is passed straight through to the search. Here: software publishing and IT consulting companies (NAF 62.01Z) in Paris (département 75).
{
"searchUrls": [
"https://www.pappers.fr/recherche?departement=75&code_naf=62.01Z"
],
"maxResults": 500
}
queries runs a free-text search across the bases you choose. bases is a comma-separated string of entreprises, dirigeants and publications. precision is either standard (broader matches) or strict (exact matches only).
{
"queries": ["boulangerie lyon", "torréfaction café"],
"bases": "entreprises",
"precision": "strict",
"maxResults": 200
}
You can combine both modes in one run. URLs are processed first, then queries, and everything lands in one dataset. maxResults applies per URL or query, not to the run as a whole. precision and bases only affect keyword queries, because a URL carries its own parameters.
The actor picks a pagination strategy from maxResults: from 1 to 400 it uses faster page-based pagination; 0 (unlimited) or anything above 400 switches to cursor-based pagination with no hard cap.
Trimmed record:
{
"source": "https://www.pappers.fr/recherche?departement=75&code_naf=62.01Z",
"siren": "503826968",
"siren_formate": "503 826 968",
"nom_entreprise": "AMD RENTAL",
"denomination": "AMD RENTAL",
"personne_morale": true,
"forme_juridique": "SARL, société à responsabilité limitée",
"statut_rcs": "Inscrit",
"statut_consolide": "actif",
"date_creation": "2008-01-15",
"code_naf": "62.01Z",
"libelle_code_naf": "Programmation informatique",
"capital": 10000,
"effectif": "Entre 10 et 19 salariés",
"chiffre_affaires": 1842300,
"resultat": 96400,
"annee_finances": 2024,
"siege": {
"siret": "50382696800015",
"adresse_ligne_1": "12 RUE DE LA PAIX",
"code_postal": "75002",
"ville": "PARIS"
},
"dirigeants": [
{
"qualite": "Gérant",
"nom_complet": "Jean DUPONT",
"actuel": true,
"personne_morale": false
}
],
"publications": [
{
"date": "2012-01-17",
"type": "Modification",
"contenu": "Modification Bodacc B n°20120011"
}
],
"nb_publications_total": 7
}
Financial fields are filled when the company published its accounts and did not opt for confidentiality, so expect chiffre_affaires and resultat to be empty for many small companies.
Trigger the actor from your own code with the Apify API. Keep your token in APIFY_TOKEN.
cURL:
curl -X POST \
"https://api.apify.com/v2/acts/epicscrapers~pappers-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchUrls": ["https://www.pappers.fr/recherche?departement=69&code_naf=56.10A"], "maxResults": 100}'
JavaScript (npm install apify-client):
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('epicscrapers/pappers-scraper').call({
searchUrls: ['https://www.pappers.fr/recherche?departement=33&code_naf=43.22A'],
maxResults: 0,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const leads = items
.filter((c) => c.statut_consolide === 'actif' && (c.effectif_min ?? 0) >= 10)
.map((c) => ({ siren: c.siren, name: c.nom_entreprise, city: c.siege?.ville, ca: c.chiffre_affaires }));
console.log(leads);
French B2B lead lists. Filter by NAF code and département on Pappers, export everything, then segment on effectif_min and chiffre_affaires. The dirigeants array gives you the gérant or président to address, and siege gives a clean address for mailing or territory mapping.
Supplier and client due diligence. Check statut_consolide, date_cessation, the latest publications (BODACC procedures, transfers, dissolutions) and beneficiaires before signing. Schedule a weekly run on a list of SIRENs to catch status changes.
M&A and investor screening. Find companies in a niche with stable revenue and a long history (date_creation), then look at director tenure (date_prise_de_poste) to spot founder-led businesses that may face succession.
Market mapping. Count active companies per NAF code per city using villes and etablissements, or track new creations in a sector month over month.
Competitor monitoring. Search by competitor name with "precision": "strict" and watch for new establishments, capital changes, or BODACC announcements.
Working on other countries? See our guides to the Brazilian CNPJ register and the German Bundesanzeiger.
Yes. Pappers sells direct API access with its own token and paid plans. The Pappers Scraper is a no-code alternative: you don’t need a Pappers API token in the input, you can reuse search URLs from the website, and results go straight into an Apify dataset you can export or schedule.
The actor collects publicly diffusable company information that originates from French official registers (INSEE, RCS, BODACC). Companies marked non-diffusable are not exposed. Director and beneficial-owner data is personal data under GDPR, so only process it with a legitimate purpose and respect Pappers’ terms of service. This is not legal advice.
Yes. Set those filters on pappers.fr/recherche, copy the URL into searchUrls, and every filter is preserved.
SIREN is the 9-digit identifier of the company. SIRET is 14 digits: the SIREN plus a 5-digit NIC identifying one establishment. You get the SIREN on every record and a SIRET for the head office (siege.siret) and each entry in etablissements.
Yes. Sole traders are returned too, with personne_morale: false and their nom and prenom.
Build one filtered search on Pappers, paste the URL, set maxResults to 50 and run it. Open the Pappers Scraper on Apify or see the actor page for details.