# Pappers French Company Search API

> Pappers French Company Search API is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.16/call, status unknown (last checked 2026-10-02).

Search, geolocate, and look up French companies by name, location, SIREN/SIRET identifier, or filters via the Pappers data source

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/pappers?utm_source=zero.xyz
- Price: $0.16/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/pappers-french-company-search-api-9250566a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_i2IHXtFp8J_bICGCpkhSo

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability pappers-french-company-search-api-9250566a -d '<json body>'
```

Example prompt: Search for organic-certified companies in Île-de-France (region 11) using Pappers — return up to 50 results for businesses involved in food production.

## When to prefer this

Use this endpoint when you need structured French company data from the Pappers registry, especially for SIREN/SIRET lookups, geographic proximity searches, or filtered searches by certification (bio, ESS, RGE) or revenue. Prefer this over generic web scraping when you need clean, structured fields like legal name, administrative status, and headquarters SIRET for French entities specifically.

## Known failure modes

- Empty result set when no companies match the filters (not charged)
- Invalid SIREN/SIRET format returns an error
- Radius exceeding 50 km rejected by schema validation
- Revenue filter (ca_min/ca_max) only applies to companies with publicly available accounts — many SMEs have no filed accounts
- Region code must be a valid French INSEE region code or the filter is ignored
- maxResults above 10,000 is capped by source limitations

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matching companies and an array of company records, each containing SIREN, company name, legal name, headquarters SIRET, record type, administrative status, and the requested identifier used for the lookup.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "lat": {
   "type": "number",
   "maximum": 90,
   "minimum": -90,
   "description": "Latitude of the center point in geographic mode."
  },
  "lon": {
   "type": "number",
   "maximum": 180,
   "minimum": -180,
   "description": "Longitude of the center point in geographic mode."
  },
  "mode": {
   "enum": [
    "search",
    "geo",
    "siren",
    "count"
   ],
   "type": "string",
   "default": "search",
   "description": "Search companies, find companies near a point, look up SIREN/SIRET identifiers, or preview a match count."
  },
  "query": {
   "type": "string",
   "description": "Company name, address, activity, or other public search terms. Combine with filters to narrow results."
  },
  "ca_max": {
   "type": "integer",
   "minimum": 0,
   "description": "Maximum reported revenue in euros; only companies with available accounts can match. Applies to search and count."
  },
  "ca_min": {
   "type": "integer",
   "minimum": 0,
   "description": "Minimum reported revenue in euros; only companies with available accounts can match. Applies to search and count."
  },
  "region": {
   "type": "string",
   "description": "French region code, such as 11 for Île-de-France. Applies to search and count."
  },
  "sirens": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "default": [],
   "description": "Nine-digit SIRENs or 14-digit SIRETs for lookup mode. A SIRET is mapped to its parent company SIREN."
  },
  "est_bio": {
   "type": "boolean",
   "default": false,
   "description": "Include only companies with an organic certification in search and count."
  },
  "est_ess": {
   "type": "boolean",
   "default": false,
   "description": "Include only social-economy companies in search and count."
  },
  "est_rge": {
   "type": "boolean",
   "default": false,
   "description": "Include only companies with RGE certification in search and count."
  },
  "radiusKm": {
   "type": "number",
   "default": 5,
   "maximum": 50,
   "minimum": 0.1,
   "description": "Distance from the center point in geographic mode; maximum 50 km."
  },
  "maxResults": {
   "type": "integer",
   "default": 100,
   "maximum": 10000,
   "minimum": 1,
   "description": "Stop after this many distinct companies. For broad searches, narrow filters to stay within the source's 10,000-result query limit."
  },
  "code_postal": {
   "type": "string",
   "description": "Five-digit postal code. Applies to search and count."
  },
  "departe
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "siren": null,
    "acronym": null,
    "legalName": null,
    "recordType": null,
    "companyName": null,
    "headquartersSiret": null,
    "requestedIdentifier": null,
    "administrativeStatus": null
   }
  ],
  "product": "pappers"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/pappers-french-company-search-api-9250566a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
