# Count companies by combined criteria

The first call of an agent building a list: count before listing. The count is exact, on the same grammar as the list route, and each source is dated in the response: a ten-thousand-company list is narrowed down before it is paid for page by page.

## What the route returns

Catalogue description, exactly as agents read it:

**Count French companies matching free cross-criteria on a pre-joined table of the official registries: geography (departement, region, postal-code prefix), NAF activity, legal form, workforce, age, last filed accounts (revenue, net income, margins, ratios, trends, cash items) and public signals (RGE, equality index, ICPE/Seveso, public contracts, authorisations). Active legal persons by default. Returns the exact count and each source's date: size a market before listing it.**

## Extract from a genuinely paid response

Dated snapshot from 2026-10-03, truncated to one item per array. It is not live data. The full extract is served **free of charge** from [the samples surface](https://api.sirenic.eu/exemples/entreprises-requete-compter.json), and the schema from the OpenAPI document.

```
{
 "nombre_total": 23,
 "perimetre": "personnes morales diffusibles du stock Sirene, actives (identite.etat = A) sauf critère sur identite.etat ; entrepreneurs individuels et unités en diffusion partielle jamais comptés ni listés ; un critère ne retient jamais une valeur absente ; un critère sur identite.naf ne retient que les codes de la NAF rév. 2 / public legal persons of the Sirene stock, active (identite.etat = A) unless a criterion sets identite.etat; sole traders and partially public units never counted or listed; a criterion never retains a missing value; a criterion on identite.naf only retains NAF rev. 2 codes",
 "stock": {
  "construit_le": "2026-10-02",
  "age_jours": 1,
  "seuil_jours": 45,
  "flux": {
   "sirene-stock-unites-legales": {
    "dernier_mis_a_jour": "2026-10-01"
   }
  }
 },
 "source": "INSEE Sirene, INPI et Banque de France (comptes), Signaux Faibles (liasses), ADEME (RGE), ministère du Travail (égapro), Géorisques (ICPE), DECP, EBA, EIOPA et ARCEP (agréments), table pré-croisée par Sirenic ; licence de chaque source : GET /v1/provenance/registres",
 "disclaimer": "Compte exact ; chaque source datée dans stock.flux, table fermée au-delà de 45 jours ; géographie du siège ; finances du dernier exercice social qualifié. / Exact count; each source dated in stock.flux, table closed beyond 45 days; head-office geography; finances of the last qualified annual accounts."
}
```

## Price and billing

Price: **$0.002**. The authoritative amount is the one in the `402` quote returned by the route itself, not this text, which derives from the same grid but is still just a page.

An error response **cancels the payment**: a `400`, `404` or `503` is never billed. An upstream outage closes the route with a `503` rather than serving a degraded response.

## Calling the route

```
# 1. The quote, without paying anything: the route answers 402 with its amount
curl -i "https://api.sirenic.eu/v1/entreprises/requete/compter?criteres=%5B%7B%22champ%22%3A%22siege.departement%22,%22op%22%3A%22%3D%22,%22valeur%22%3A%2269%22%7D,%7B%22champ%22%3A%22finances.ca%22,%22op%22%3A%22%3E%22,%22valeur%22%3A1000000%7D%5D"

# 2. The paid call: the x402 client settles the quote and replays the request
npx x402-fetch "https://api.sirenic.eu/v1/entreprises/requete/compter?criteres=%5B%7B%22champ%22%3A%22siege.departement%22,%22op%22%3A%22%3D%22,%22valeur%22%3A%2269%22%7D,%7B%22champ%22%3A%22finances.ca%22,%22op%22%3A%22%3E%22,%22valeur%22%3A1000000%7D%5D"

# 3. Or over MCP, in Claude Code / Cursor / an agent
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
```

## What this route does not do

Active legal persons by default (a criterion on identite.etat also counts ceased companies), no officer and no person as a criterion: sole traders are never counted. A financial criterion only retains companies that file usable accounts.

## Neighbouring routes

- `/v1/entreprises/requete/lister`: $0.02
- `/v1/prospection`: $0.02
- `/v1/secteur/{code_naf}/benchmarks`: $0.05

## How you pay

Every route is paid **per call**, in USDC or EURC on the Base network, over the x402 protocol: no account to create, no API key, no subscription. The first call returns a `402` quote your client settles, then replays the call. A failed call is never billed.

Would you rather have a euro invoice and prepaid credits? That is **in preparation**, and we will not announce a date until it is open. Write to [contact@sirenic.eu](mailto:contact@sirenic.eu?subject=Euro%20credit%20packs) and we will let you know when it opens.

Paid responses are **Ed25519-signed**: you can later prove what was served to you, and when. The whole catalogue is free to read in the [OpenAPI document](https://api.sirenic.eu/openapi.json) and in [llms.txt](https://api.sirenic.eu/llms.txt).

**One call, end to end**

```
# x402 client (npm): the 402 quote is settled and the call replayed automatically
npx x402-fetch https://api.sirenic.eu/v1/entreprise/552032534

# Or over MCP, in Claude Code / Cursor
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
```

## Routes used and pricing

| Route | Price | Sample | What it returns |
| --- | --- | --- | --- |
| `/v1/entreprises/requete/compter` | $0.002 | [free sample](https://api.sirenic.eu/exemples/entreprises-requete-compter.json) | Count French companies matching free cross-criteria on a pre-joined table of the official registries: geography (departement, region, postal-code prefix), NAF activity, legal form, workforce, age, last filed accounts (revenue, net income, margins, ratios, trends, cash items) and public signals (RGE, equality index, ICPE/Seveso, public contracts, authorisations). Active legal persons by default. Returns the exact count and each source's date: size a market before listing it. |

## Frequently asked questions

### Which fields can I combine?

The catalogue's filterable fields: identite.siren, identite.personne_morale, identite.forme, identite.naf, identite.categorie_entreprise, identite.tranche_effectifs, identite.date_creation, identite.age, identite.etat, identite.ess, identite.societe_mission, siege.code_postal, siege.code_commune, siege.departement, siege.region, finances.date_cloture, finances.type_bilan, finances.fiabilite, finances.nb_exercices, finances.ca, finances.marge_brute, finances.ebe, finances.ebit, finances.resultat_net, finances.taux_endettement, finances.autonomie_financiere, finances.ratio_liquidite, finances.caf_sur_ca, finances.capacite_remboursement, finances.marge_ebe, finances.rcai_sur_ca, finances.couverture_interets, finances.bfr_sur_ca, tendances.variation_ca_1an, tendances.variation_ca_3ans, tendances.variation_rn_1an, tendances.variation_bfr_sur_ca_3ans, tresorerie.disponibilites, tresorerie.dettes_moins_1an, tresorerie.dettes_fiscales_sociales, tresorerie.dettes_total, signaux.rge_actif, signaux.egapro_note, signaux.egapro_annee, signaux.icpe_nb, signaux.icpe_seveso, signaux.marches_nb, signaux.marches_montant, signaux.marches_dernier, signaux.agrements. Up to 20 conditions combined with AND; OR goes through the in operator. GET /v1/lecture (free) gives each one's type, operators, unit, source and meaning.

## Take it further

- [See a real response (free)](https://api.sirenic.eu/exemples/entreprises-requete-compter.json)
- [Get the quote for /v1/entreprises/requete/compter](https://api.sirenic.eu/v1/entreprises/requete/compter?criteres=%5B%7B%22champ%22%3A%22siege.departement%22,%22op%22%3A%22%3D%22,%22valeur%22%3A%2269%22%7D,%7B%22champ%22%3A%22finances.ca%22,%22op%22%3A%22%3E%22,%22valeur%22%3A1000000%7D%5D)
- [Get notified about euro packs](mailto:contact@sirenic.eu?subject=Euro%20credit%20packs)


---

[Home](https://api.sirenic.eu/en) · [Pricing](https://api.sirenic.eu/en/offres) · [Guides](https://api.sirenic.eu/en/articles) · [Routes](https://api.sirenic.eu/en/api) · [About](https://api.sirenic.eu/en/about) · [Legal notice](https://api.sirenic.eu/mentions-legales) · [Privacy](https://api.sirenic.eu/en/privacy)
