Pappers Scraper | French Companies, Directors & Financials avatar

Pappers Scraper | French Companies, Directors & Financials

Pricing

from $5.10 / 1,000 companies

Go to Apify Store
Pappers Scraper | French Companies, Directors & Financials

Pappers Scraper | French Companies, Directors & Financials

Pappers scraper for French company data: search by keyword, pappers.fr link or SIREN/SIRET and get legal form, NAF code, directors, shareholders, revenue, net income, risk scores, phone, email and head office. 20 companies in 24 seconds, 66 fields each. No Pappers account or API key needed.

Pricing

from $5.10 / 1,000 companies

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pappers Scraper | French Company Data, Directors and Financials (2026)

Pappers companies, 66 fields each, from any search.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for “jd scraper” in Apify Store search), with 750,000+ combined lifetime runs.

Every French company on Pappers as one clean row: who runs it, what it does, what it earns, and how to reach it. Our default test run searched boulangerie in Paris, found the 581 matching companies Pappers lists as active there, and saved the first 20 in 25 seconds, each with its SIREN, SIRET, VAT number, legal form, NAF code, collective agreement, manager, headcount band, risk scores, accounts when they are published, and its head office with GPS coordinates. No Pappers account, no API key.

Why choose this actor?

Opening Pappers company pages one by one to copy a manager's name? Building a prospect list by NAF code and département by hand? Refreshing a CRM full of SIREN numbers that went stale months ago?

  • 64 filled fields per company, not 43. On our default run (20 bakeries in Paris), 64 data fields were filled on at least half of the rows: identity numbers, legal form and situation, trade register details, NAF and NACE codes, activity domain, corporate purpose, collective agreement, headcount band, share capital, manager and legal representatives, officer and beneficial owner counts, risk scores, head office address with coordinates, and counts of establishments, legal notices, documents, court cases and trademarks. On 15 software companies with published accounts, 82 fields were filled. The example output of the most used Pappers scraper shows 43 keys.
  • The accounts and the people are on the row. Each row carries the full company page, not the search snippet: the latest revenue, net income, operating profit, EBITDA, equity and cash, the year-by-year accounts, every legal representative with their current role, and the declared shareholders. On our search link run (software companies around Lyon with 1 M€ or more in revenue), 15 of 15 rows came with their accounts history, 14 with their manager, 12 with a phone number, 11 with an email and 10 with their shareholders.
  • Three ways in: keywords, pappers.fr links or company numbers. Type an activity or a name (boulangerie, Doctolib), paste a search you built on pappers.fr with all its filters, or give SIREN, SIRET or VAT numbers. In our tests, 5 companies given by SIREN, VAT number and company link came back in 5 seconds with 85 fields filled, and a pappers.fr search link kept its activity, département and revenue filters. The most used Pappers scraper takes no pappers.fr link.

Try Pappers Scraper

Try your first 20 companies

Paste this input in the JSON tab of the Input page and press Start. It reads the first 20 active bakeries of Paris.

{
"searches": ["boulangerie"],
"department": "75",
"maxItems": 20
}

It runs on the Apify Free plan. Each company becomes one row of your dataset: open the Output tab to see the table, switch to the "Financials and risk" view for revenue, net income, EBITDA, equity and risk level, or to the "Managers and contacts" view for the manager, phone, email, website and head office. Export the rows as JSON, CSV or Excel.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:

You have access to the Pappers Scraper on Apify: silentflow/pappers-scraper
It reads French company profiles from Pappers (pappers.fr), without an account or API key, and
returns one row per company with the content of its Pappers page.
Input schema (no field is required):
- searches (array of strings): what you would type in the Pappers search box: an activity
("boulangerie", "plombier") or a company name ("Doctolib"). One search each. To find the companies
of a director, paste a search link with bases=dirigeants in startUrls.
- startUrls (array of {url}): pappers.fr links: company searches with their filters
(https://www.pappers.fr/recherche?q=plombier&departement=69&en_activite=true) or company pages
(https://www.pappers.fr/entreprise/doctolib-794598813). A search link keeps its own filters.
- companyIds (array of strings): SIREN (9 digits), SIRET (14 digits) or French VAT numbers.
- maxItems (integer, default 100): companies saved in total.
- department (string): French département code or name ("75", "Paris", "2A", "974"), or several
separated by commas. Matches the head office or a branch.
- postalCode (string): 5-digit postal codes, comma separated.
- nafCode (string): NAF/APE activity codes, with or without the dot ("62.01Z", "1071C").
- onlyActive (boolean, default true): keep only companies still trading and on the trade register.
The filters apply to the keywords. With filters and no keyword, the filters alone are searched.
Output per company (87 data fields plus searchQuery and scrapedAt, null when Pappers has no value):
- id (SIREN), url, name, siren, siret (head office), tradeNames, acronym, vatNumber, euid, lei
- legalForm, legalFormCode, status, isActive, legalSituation, legalSituationDate, creationDate,
cessationDate, rcsStatus (registered | removed), rcsRegistrationDate, rcsCity, registryNumber,
entityCategory (PME | ETI | GE), isMicroEnterprise, businessActivityType, fiscalYearEnd
- nafCode, nafLabel, naceCode, activityDomain, purpose, collectiveAgreement, collectiveAgreementIdcc
- workforceCode, workforceRange, workforceMin, workforceMax, workforceYear, shareCapital, currency (EUR)
- revenue, netIncome, operatingProfit, ebitda, equity, cash, revenueGrowthRate, netMargin,
financialYear, financialAccounts (company | consolidated),
financialHistory (array of {year, accounts, revenue, netIncome, operatingProfit, equity, workforce})
- financialScore, financialRisk, nonFinancialScore, nonFinancialRisk
- ceoName, ceoRole, ceoBirthYear, legalRepresentatives (array of {name, role, since, birthDate (YYYY-MM),
nationality, isCompany, siren}), officersCount, shareholders (array of {name, isCompany, siren,
sharesPercent}), beneficialOwnersCount
- email, phone, website, linkedinUrl, facebookUrl
- address, street, postalCode, city, departmentCode, department, region, country, countryCode,
latitude, longitude
- establishmentsCount, activeEstablishmentsCount, publicationsCount, documentsCount, legalCasesCount,
brandsCount, tendersWonCount, publicAidsCount, labels (array)
- searchQuery, scrapedAt (RFC 3339 UTC). Source dates are YYYY-MM-DD.
Use apify-client for Python or JavaScript: client.actor("silentflow/pappers-scraper").call(run_input=...).

How to scrape Pappers company data

Three inputs, from the simplest to the most complete. Each one runs as is.

Get the bakeries of Paris with their manager and accounts

{
"searches": ["boulangerie"],
"department": "75",
"maxItems": 50
}

One keyword, one département. Every row is the full Pappers page of one bakery: manager, headcount band, collective agreement, risk level and the accounts it publishes.

Refresh the companies already in your CRM

{
"companyIds": ["443061841", "662042449", "FR14794598813", "652014051", "855 200 887"],
"maxItems": 100
}

SIREN, SIRET and VAT numbers mix freely, with or without spaces. Each number gives one row with the company's current status, manager, head office and latest accounts. In our test, these five numbers (Google France, BNP Paribas, Doctolib, Carrefour, Michelin) came back in 5 seconds.

{
"startUrls": [
{ "url": "https://www.pappers.fr/recherche?activite=62.01Z&departement=69&en_activite=true&chiffre_affaires_min=1000000" }
],
"maxItems": 100
}

Build the search on pappers.fr with any of its filters (activity, département, revenue, headcount, creation date, director's age, legal form), copy the address and paste it. Our test of this exact link found 373 matching companies and saved 15 in 18 seconds, every one with its revenue above 1 M€.

Input parameters

ParameterTypeDefaultWhat it does
searchesarray of strings["boulangerie"] prefilledKeywords as typed in the Pappers search box: an activity or a company name. One search per keyword, narrowed by the filters.
startUrlsarray of URLsemptypappers.fr company searches (/recherche?...) with their filters, or company pages (/entreprise/...). A search link keeps its own filters.
companyIdsarray of stringsemptySIREN, SIRET or French VAT numbers. One row per company.
maxItemsinteger100Companies saved in total, across every keyword, link and number.
departmentstring75 prefilledOne or several départements, by code or name. Matches the head office or a branch.
postalCodestringemptyOne or several 5-digit postal codes, separated by commas. Matches the head office or a branch.
nafCodestringemptyOne or several NAF/APE codes, with or without the dot.
onlyActivebooleantrueKeep only companies still trading and on the trade register.
debugModebooleanfalseExtra details in the run log, for support.

Accepted formats.

  • Company numbers: 794598813, 794 598 813, 79459881300077 (SIRET, its first 9 digits are the SIREN), FR14794598813 (VAT number), or a company link https://www.pappers.fr/entreprise/doctolib-794598813. A number typed in the keywords field is read as a company number too.
  • Départements: 75, Paris, bouches du rhone, 2A, 974, or several at once: 75, 92, 93.
  • NAF codes: 62.01Z or 6201Z, several separated by commas.
  • Search links: the address of any company search on pappers.fr. The filters of the current site (activite, departement, en_activite, chiffre_affaires_min, effectifs_min, date_creation_min...) and those of its older addresses (code_naf, code_postal, entreprise_cessee, tranche_effectif_min...) are both read.

Field names used by other Pappers scrapers (query, queries, sirens, searchUrls, maxResults, departement) are read too, so an input written for them runs here unchanged.

What data can you extract from Pappers?

One row per company, 87 data fields in seven groups, the same columns on every row. A value Pappers does not show is null, never an empty text or a made-up 0.

GroupFields
Identityid, url, name, siren, siret, tradeNames, acronym, vatNumber, euid, lei
Legal statuslegalForm, legalFormCode, status, isActive, legalSituation, legalSituationDate, creationDate, cessationDate, rcsStatus, rcsRegistrationDate, rcsCity, registryNumber, entityCategory, isMicroEnterprise, businessActivityType, fiscalYearEnd
ActivitynafCode, nafLabel, naceCode, activityDomain, purpose, collectiveAgreement, collectiveAgreementIdcc
Size and financesworkforceCode, workforceRange, workforceMin, workforceMax, workforceYear, shareCapital, currency, revenue, netIncome, operatingProfit, ebitda, equity, cash, revenueGrowthRate, netMargin, financialYear, financialAccounts, financialHistory
RiskfinancialScore, financialRisk, nonFinancialScore, nonFinancialRisk
People and contactsceoName, ceoRole, ceoBirthYear, legalRepresentatives, officersCount, shareholders, beneficialOwnersCount, email, phone, website, linkedinUrl, facebookUrl
Head office and countsaddress, street, postalCode, city, departmentCode, department, region, country, countryCode, latitude, longitude, establishmentsCount, activeEstablishmentsCount, publicationsCount, documentsCount, legalCasesCount, brandsCount, tendersWonCount, publicAidsCount, labels

Good to know about the data.

  • id and siren are the company's SIREN, stable for its whole life. url is its permanent Pappers page.
  • The headline figures (revenue, netIncome, ebitda, equity, cash) come from the latest year whose revenue is published, the company's own accounts first; financialAccounts says whether they are the company's or its group's. financialHistory lists every year with a figure.
  • Many small French companies file their accounts as confidential: on our Paris bakery run, 10 of 20 rows had an accounts history and 6 a published revenue. On software companies with 1 M€ or more in revenue, 15 of 15 had both.
  • workforceRange is INSEE's headcount band (6-9, 1000-1999). When INSEE reports no band, the four workforce fields are null.
  • ceoName is the legal representative who runs the company (Président, Gérant, Directeur général first), legalRepresentatives lists them all with their current role. Birth dates are kept to the month and year, as Pappers shows them.
  • Phones, emails and websites appear when Pappers shows them on the company page: most large companies have them, many small ones do not.
  • Dates from the registers are YYYY-MM-DD; scrapedAt is RFC 3339 UTC.

Output example

A real row from our test run (Doctolib, looked up by its VAT number), with the lists shortened to their first entries:

{
"id": "794598813",
"url": "https://www.pappers.fr/entreprise/doctolib-794598813",
"name": "DOCTOLIB",
"siren": "794598813",
"siret": "79459881300077",
"tradeNames": ["Doctolib"],
"acronym": null,
"vatNumber": "FR14794598813",
"euid": "FR9201.794598813",
"lei": "969500BPSLCSC039UV67",
"legalForm": "SAS, société par actions simplifiée",
"legalFormCode": "5710",
"status": "active",
"isActive": true,
"legalSituation": "Situation normale",
"legalSituationDate": "2020-02-06",
"creationDate": "2013-07-15",
"cessationDate": null,
"rcsStatus": "registered",
"rcsRegistrationDate": "2020-02-06",
"rcsCity": "NANTERRE",
"registryNumber": "794 598 813 R.C.S. Nanterre",
"entityCategory": "ETI",
"isMicroEnterprise": false,
"businessActivityType": "Commerciale",
"fiscalYearEnd": "12-31",
"nafCode": "62.01Z",
"nafLabel": "Programmation informatique",
"naceCode": "62.01",
"activityDomain": "Santé humaine et activités d'action sociale",
"purpose": "création, conception, réalisation, exploitation, développement, achat et vente de logiciels, Progiciels, bases de données et sites internet.",
"collectiveAgreement": "Convention collective nationale des bureaux d'études techniques, des cabinets d'ingénieurs-conseils et des sociétés de conseils",
"collectiveAgreementIdcc": "1486",
"workforceCode": "42",
"workforceRange": "1000-1999",
"workforceMin": 1000,
"workforceMax": 1999,
"workforceYear": 2023,
"shareCapital": 202555.69,
"currency": "EUR",
"revenue": 253437000,
"netIncome": -122327000,
"operatingProfit": -79692000,
"ebitda": -62935000,
"equity": 146224000,
"cash": 28566000,
"revenueGrowthRate": 17.2,
"netMargin": -48.3,
"financialYear": 2024,
"financialAccounts": "company",
"financialHistory": [
{ "year": 2024, "accounts": "consolidated", "revenue": 311448000, "netIncome": -127499000, "operatingProfit": -124469000, "equity": 163614000, "workforce": null },
{ "year": 2024, "accounts": "company", "revenue": 253437000, "netIncome": -122327000, "operatingProfit": -79692000, "equity": 146224000, "workforce": 1722 }
],
"financialScore": 14,
"financialRisk": "low",
"nonFinancialScore": 16,
"nonFinancialRisk": "low",
"ceoName": "Stanislas NIOX-CHATEAU",
"ceoRole": "Président du conseil de surveillance",
"ceoBirthYear": 1987,
"legalRepresentatives": [
{ "name": "Stanislas NIOX-CHATEAU", "role": "Président du conseil de surveillance", "since": "2013-10-18", "birthDate": "1987-01", "nationality": "Française", "isCompany": false, "siren": null }
],
"officersCount": 15,
"shareholders": [
{ "name": "CUBITUS", "isCompany": true, "siren": "518100276", "sharesPercent": 50 }
],
"beneficialOwnersCount": 0,
"email": "Contact.dataprivacy@doctolib.com",
"phone": "0183355358",
"website": null,
"linkedinUrl": null,
"facebookUrl": "https://www.facebook.com/doctolibpro",
"address": "54 QUAI CHARLES PASQUA, 92300 LEVALLOIS-PERRET",
"street": "54 QUAI CHARLES PASQUA",
"postalCode": "92300",
"city": "LEVALLOIS-PERRET",
"departmentCode": "92",
"department": "Hauts-de-Seine",
"region": "Ile-de-France",
"country": "France",
"countryCode": "FR",
"latitude": 48.900828999801824,
"longitude": 2.2846720000029657,
"establishmentsCount": 9,
"activeEstablishmentsCount": 3,
"publicationsCount": 71,
"documentsCount": 105,
"legalCasesCount": 37,
"brandsCount": 18,
"tendersWonCount": 6,
"publicAidsCount": 4,
"labels": ["Alim'Confiance", "Gender equality index"],
"searchQuery": "FR14794598813",
"scrapedAt": "2026-10-28T00:36:30Z"
}

Advanced usage

Build a prospect list from filters alone

{
"nafCode": "43.22A",
"postalCode": "69003",
"maxItems": 200
}

No keyword needed: the filters are searched on their own. Here, the plumbing and heating companies of Lyon 3e. Our test saved 10 of them in 21 seconds and left out 4 that had ceased or were struck off the register.

Cover a whole region in one run

{
"searches": ["agence immobilière"],
"department": "75, 92, 93, 94",
"maxItems": 1000
}

Several départements in one field, separated by commas, codes or names. Our test of this input found 141 active real estate agencies across Paris and its three neighbouring départements. A search serves up to 400 companies: when a keyword with no département matches more, the run reads it again département by département to go further, and never saves the same company twice.

Screen suppliers or clients before you sign

{
"companyIds": ["552 032 534", "FR14794598813", "88245853200018"],
"maxItems": 50
}

A SIREN, a VAT number and a SIRET: Danone, Doctolib and a Paris bakery, back in 3 seconds in our test. Each row tells you whether the company is still active (isActive, status, rcsStatus), its legal situation (receivership, liquidation or normal), its financial and non-financial risk levels, its latest accounts, who runs it and who owns it. A company asked for by its number always comes back, active or not.

Track the new companies of your sector every week

{
"startUrls": [
{ "url": "https://www.pappers.fr/recherche?activite=56.10A&departement=33&en_activite=true&date_creation_min=01-10-2026" }
],
"maxItems": 500
}

Restaurants of Gironde created since 1 October 2026: our test of this link found 4 of them. Save the input as a task, schedule it weekly, and send each run to Google Sheets, HubSpot or a webhook from the task's Integrations tab. Join runs on siren to spot the new ones.

Find every company a director runs or ran

{
"startUrls": [
{ "url": "https://www.pappers.fr/recherche?q=Stanislas%20Niox-Chateau&bases=dirigeants" }
],
"maxItems": 20
}

On pappers.fr, tick the Dirigeants option of the search (bases=dirigeants in the address) and the search matches the names of directors instead of companies. Our test of this link returned the 4 companies where Doctolib's founder is or was a director, the two that ceased included, in 4 seconds. Read legalRepresentatives and shareholders on each row to see the role each person holds.

FAQ

What is Pappers? Pappers (pappers.fr) is a French website that gathers the official company registers (INSEE Sirene, the national company register, the legal notices of BODACC) into one free page per company: identity, managers, accounts, shareholders, legal events. This actor turns those pages into rows.

What does one row contain? One French company, with 87 data fields: identity numbers, legal form and situation, activity, size, latest accounts and their history, risk scores, manager and legal representatives, shareholders, contacts when Pappers shows them, and head office with GPS coordinates. See the field table above.

Do I need a Pappers account or API key? No. The actor reads the public company pages. No login, no API key, no credits to buy.

Which inputs can I give? Keywords as you would type them on Pappers, pappers.fr links (company searches with their filters, director searches, or company pages), and SIREN, SIRET or VAT numbers. You can mix all three in one run; numbers are read first, then links, then keywords.

How many companies can I get? There is no fixed limit: set maxItems to what you need. One search serves up to 400 companies. A keyword with no département that matches more is then read département by département. A search you already narrowed to a département or a postal code returns its first 400; split it into several postal codes to reach the rest.

Why is revenue empty for some companies? Many small French companies file their accounts as confidential, and Pappers then has no figure to show. A missing figure is null, never 0. If you need figures on every row, add a revenue filter to a pappers.fr search link, as in the Lyon example above (chiffre_affaires_min=1000000): all 15 rows of our test had their revenue.

Why does "active companies only" return fewer rows than Pappers' own count? Pappers' active filter keeps some companies that were struck off the trade register years ago. With onlyActive on, this actor leaves those out, along with companies that have a cessation date, and says how many in the run log.

Do the département and postal code filters match head offices only? No. Like the Pappers search, they match companies whose head office or one of whose branches is in the place. Read departmentCode and postalCode on each row, which are the head office's, to keep head offices only.

How fresh is the data? Each run reads Pappers live, at run time, with no cache on our side. Pappers updates its pages from the official registers continuously.

Can I get emails and phone numbers? When Pappers shows them on the company page, yes: email, phone, website, linkedinUrl, facebookUrl. On our run of software companies around Lyon, 12 of 15 rows had a phone and 11 an email; on Paris bakeries, 3 of 20 had a phone.

Is it legal to scrape Pappers? The data comes from public French company registers and is shown free on Pappers. You remain responsible for how you use it, in particular GDPR when you process the names of directors who are individuals, and the French rules on B2B prospecting.

More SilentFlow scrapers

🛒 E-commerce

💼 Jobs

🏠 Real estate

📣 Social media

🏢 Business data

✈️ Travel

🎯 Lead generation

🔎 SEO

📈 Marketing

🎬 Video

📰 News

🧰 More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available company data from Pappers (pappers.fr), which republishes the official French company registers. It does not bypass any login, paywall or CAPTCHA, and never uses a Pappers account. Users are responsible for complying with Pappers' terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Rows carry the names, roles, month and year of birth and nationality of company directors and shareholders who are individuals: this is personal data. Handle it accordingly, keep only what you need, respect the French rules on prospecting and honor objection and removal requests. The data returned is informational; verify accuracy for regulated use cases such as KYC or credit decisions.

Pappers Scraper by SilentFlow: French companies from a keyword, a pappers.fr link or a SIREN, ready for your CRM.