Pappers APIpappers.fr ↗
Access French company registrations, director profiles, trademark filings, and BODACC legal publications via the Pappers.fr API. 6 endpoints.
What is the Pappers API?
The Pappers.fr API provides structured access to French business registry data across 6 endpoints, covering company profiles, director networks, trademark records, and official BODACC publications. The get_company_details endpoint returns SIREN, share capital, legal form, headquarters address, and director lists for any registered French company. Director cartography maps professional connections between individuals and companies across the French registry.
curl -X GET 'https://api.parse.bot/scraper/678ff973-7c58-403f-8277-fa323b3629b9/search_companies?page=1&limit=20&query=Total&siren=542051180' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pappers-fr-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Pappers.fr French Company Data API - Usage Example
Get your API key from: https://parse.bot/settings
"""
from parse_apis.pappers_fr_french_company_data_api import Pappers, Company, Director, Trademark, Publication, NetworkGraph
pappers = Pappers()
# Search for companies by name
for company in pappers.companies.search(query="TotalEnergies", limit=3):
print(company.siren, company.nom_entreprise, company.forme_juridique, company.capital)
# Get detailed company profile by SIREN
total = pappers.companies.get(siren="542051180")
print(total.nom_entreprise, total.forme_juridique, total.capital)
print(total.siege.ville, total.siege.code_postal)
# Search directors by name
for director in pappers.directors.search(query="Dupont", limit=5):
print(director.nom_complet, director.nationalite, director.nb_entreprises_total)
for ent in director.entreprises:
print(" ->", ent.siren, ent.nom_entreprise)
# Get director's network cartography
graph = pappers.directors.cartography(name="Dupont", first_name="Sebastien", birth_date="04/1974")
for person in graph.personnes:
print(person.nom, person.prenom, person.date_naissance, person.niveau)
for ent in graph.entreprises:
print(ent.siren, ent.nom_entreprise)
# Search trademarks
for tm in pappers.trademarks.search(query="Apple", limit=3):
print(tm.numero, tm.texte, tm.statut, tm.base)
for cls in tm.classes:
print(" Class:", cls.code)
# Search BODACC publications
for pub in pappers.publications.search(query="Total", limit=3):
print(pub.date, pub.type, pub.siren)
Search for French companies by name, SIREN, or keyword. Returns a paginated list of companies with identifiers, legal form, status, location, directors, and publications. At least one of query or siren should be provided for meaningful results.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Results per page (max 20). |
| query | string | Search keyword or company name. |
| siren | string | 9-digit SIREN number to search for. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"total": "integer, total number of matching results",
"resultats": "array of company objects with siren, nom_entreprise, forme_juridique, siege, dirigeants, publications, and more"
},
"sample": {
"data": {
"page": 1,
"total": 9972,
"resultats": [
{
"siege": {
"ville": "LIVRY-GARGAN",
"code_postal": "93190",
"adresse_ligne_1": "76 BOULEVARD ROBERT SCHUMAN"
},
"siren": "429378870",
"capital": 80000,
"dirigeants": [
{
"nom": "Total",
"prenom": "Jean-marie, Georges",
"qualite": "Gérant"
}
],
"date_creation": "2000-01-01",
"nom_entreprise": "TOTAL 1",
"forme_juridique": "SCI, société civile immobilière",
"statut_consolide": "actif"
}
]
},
"status": "success"
}
}About the Pappers API
Company Search and Profiles
The search_companies endpoint accepts a free-text query, a 9-digit siren, or both, and returns paginated results with fields including nom_entreprise, forme_juridique, siege (headquarters location), and a dirigeants array. Use page and limit to step through large result sets. For a complete company record, pass the SIREN to get_company_details, which adds capital (share capital in euros) and a fuller director list to the same core fields.
Director Search and Network Cartography
search_directors queries the registry by director name and returns objects containing nom, prenom, qualite (role title), and an entreprises array listing each company the person is associated with. get_director_cartography goes further: given first_name, name, and an optional birth_date (MM/YYYY format) or director_id for disambiguation, it returns a graph structure with personnes nodes, entreprises nodes, and two link arrays — liens_entreprises_personnes and liens_entreprises_entreprises — that describe the full professional network around that individual.
Trademarks and Legal Publications
search_trademarks covers both French INPI and European EUIPO trademark registrations. Results include numero, texte (trademark text), statut, classes (Nice classification), deposants (applicants), and evenements (filing events). search_publications queries the BODACC official gazette and returns publication records with date, type, contenu, SIREN, and associated company details — useful for monitoring insolvency proceedings, mergers, and other legally mandated announcements.
The Pappers API is a managed, monitored endpoint for pappers.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pappers.fr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pappers.fr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Enrich a CRM with French company legal form, share capital, and registered address using
get_company_details. - Build a director due-diligence tool by mapping professional networks with
get_director_cartographylink arrays. - Monitor competitor trademark activity by polling
search_trademarksfor INPI and EUIPO filings. - Detect insolvency or restructuring events early by scanning BODACC publications via
search_publications. - Verify company status and registered office address before signing a contract using
search_companieswith a SIREN. - Identify all companies linked to a specific individual using
search_directorsfollowed by cartography lookups. - Aggregate director role history across multiple companies using the
entreprisesfield insearch_directorsresults.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pappers.fr have an official developer API?+
What does `get_director_cartography` return, and how do I disambiguate directors who share the same name?+
personnes (person nodes with id, prenom, nom, and date_naissance), entreprises (company nodes with siren and nom_entreprise), and two link arrays (liens_entreprises_personnes and liens_entreprises_entreprises) that describe connections. To disambiguate, pass birth_date in MM/YYYY format or supply the director_id returned by search_directors.Does the API return financial statements or annual accounts for French companies?+
How does pagination work across endpoints?+
page (integer) and limit (results per page) parameters. Each response includes a total field with the overall match count and a page field confirming the current page, so you can calculate the number of pages needed to exhaust a result set.