Legal identity and risk check for French companies. One request reconciles three public registries
(SIRENE/RNE, BODACC, VIES) into a single verdict, with an action_required boolean a program can branch on.
Pocket Network service ID: french-company-check-v1. Supplier setup: /operators.
POST https://api.getcompanycheck.com/v1/company with a JSON body. All inputs are in the body; no header changes the answer.
Other routes: GET / (service, version, endpoint list), GET /v1/health, GET /v1/version, GET /v1/capabilities,
GET /v1/openapi.json (generated OpenAPI schema, request side only).
curl -s -X POST https://api.getcompanycheck.com/v1/company \
-H 'content-type: application/json' \
-d '{"siren": "120027016", "directors_limit": 0}'
| Parameter | Type | Default | Meaning |
|---|---|---|---|
siren | string | — | 9-digit SIREN, Luhn-checked. |
siret | string | — | 14-digit SIRET (one establishment). |
q | string, ≤ 200 | — | Full-text search on company or director name. |
include_insolvency | bool | true | Query BODACC. |
include_vat | bool | true | Check the VAT number with VIES. |
notices_limit | int 0–20 | 3 | BODACC notices listed. Counts always cover all notices. |
directors_limit | int 0–25 | 3 | Officers listed. 0 omits them. |
verbose | bool | false | Full notice detail and officers' birth year. |
Exactly one of siren, siret or q. A lookup by siren or siret
only returns that exact company; a q search returns the best match and up to 4 other_matches.
Every 200 carries the same keys, whatever the status. Real response, VIES timing out at the time:
{
"service": "french-company-check-v1",
"version": "1.0.0",
"query": {
"siren": "120027016",
"include_insolvency": true,
"include_vat": true,
"notices_limit": 3,
"directors_limit": 0,
"verbose": false
},
"status": "found",
"company": {
"siren": "120027016",
"siret_headquarters": "12002701600563",
"legal_name": "INSTITUT NATIONAL DE LA STATISTIQUE ET DES ETUDES ECONOMIQUES",
"display_name": "INSTITUT NATIONAL DE LA STATISTIQUE ET DES ETUDES ECONOMIQUES (INSEE)",
"trade_name": null,
"acronym": "INSEE",
"legal_form_code": "7120",
"naf_code": "84.11Z",
"naf_code_2025": "84.11Y",
"activity_section": "O",
"state": "active",
"incorporated_on": "1983-03-01",
"closed_on": null,
"size_category": "ETI",
"headcount_bracket": "52",
"establishments": {
"total": 57,
"open": 32
},
"address": {
"full": "IMMEUBLE WHITE 88 AVENUE VERDIER 92120 MONTROUGE",
"postal_code": "92120",
"city": "MONTROUGE",
"insee_code": "92049",
"department": "92",
"latitude": "48.816302544",
"longitude": "2.3084504789"
},
"directors": [],
"directors_total": 0,
"vat_number": "FR85120027016",
"vat_number_computed": "FR85120027016",
"vat_number_agrees": true,
"is_association": false,
"is_sole_trader": false,
"registry_updated_at": "2026-09-26T09:14:07"
},
"vat": null,
"insolvency": {
"notice_count": 0,
"notices_examined": 0,
"adverse_count": 0,
"adverse_recent_count": 0,
"adverse_last_published_on": null,
"latest_adverse": null,
"by_family": {},
"accounts_filed": null,
"notices": []
},
"complete": false,
"action_required": true,
"flags": [
"partial_check",
"source_degraded:vies"
],
"match_count": 1,
"match_count_is_lower_bound": false,
"other_matches": [],
"sources": {
"recherche_entreprises": "ok",
"bodacc": "ok",
"vies": "timeout"
},
"data_as_of": "2026-09-27T10:55:57+00:00"
}
| Key | Meaning |
|---|---|
status | found, ambiguous (several matches for q), not_found,
source_unavailable (primary registry did not answer), error (internal fault). |
action_required | true whenever flags is non-empty. The field to branch on. |
complete | false as soon as one source is neither ok nor skipped. A degraded check never reads as clear. |
sources | Per source: ok, skipped, unavailable, rate_limited, timeout or error. |
company | Identity: legal name, SIREN, head-office SIRET, legal form, NAF code, state (active, ceased, unknown), incorporation and closing dates, size, address, officers, VAT number (upstream and computed from the SIREN). |
insolvency | BODACC. Counts over the full history: notice_count (upstream total), adverse_count, adverse_recent_count (last 5 years), by_family (sums to notice_count), latest adverse notice. From the notices_examined latest notices (at most 20): accounts_filed (last filing, null if none among them) and the first notices_limit notices. |
vat | VIES: number, valid, checked_on, registered_name. null when not checked or not answered. |
match_count | Upstream total of matches, not the page size. Capped at 10000 by the registry; match_count_is_lower_bound is then true. |
data_as_of | Time the answer was assembled (UTC). Upstream answers are cached up to 1 h (VIES: 24 h). |
| Flag | Set when |
|---|---|
partial_check | At least one source did not answer; see source_degraded:*. |
source_degraded:<source> | That source is unavailable, rate_limited, timeout or error. |
primary_source_unavailable | The company registry did not answer; nothing else was checked. |
no_match | The registry answered and found nothing. |
multiple_matches | A q search matched more than one company. |
company_ceased | The company is ceased. |
state_unknown | The registry gives no administrative state. |
adverse_notices_found | BODACC holds at least one collective procedure, conciliation, deregistration or professional recovery notice, however old. |
adverse_notices_recent | One of them was published in the last 5 years. |
vat_number_invalid | VIES says the VAT number is not valid. |
vat_number_mismatch | The registry's VAT number differs from the one computed from the SIREN. |
no_accounts_filed | BODACC has notices for the company but no accounts filing in its whole history. |
internal_error | Unexpected fault on our side; status is error. |
Never a 5xx. A bad request gets a 400 of the form {"service", "error": {"code", "message"}}, with
code one of invalid_siren, invalid_siret, invalid_request.
Direct calls to api.getcompanycheck.com are limited to 60 per minute per IP address, in bursts of 10:
beyond, a 429 of the same form with code rate_limited and a Retry-After header.
Every request answers within 9 s: a source still pending is cut off and reported as timeout.
VIES gets 2.5 s, one retry included.
| Source | Provides |
|---|---|
| recherche-entreprises.api.gouv.fr | Identity from SIRENE (INSEE) and officers from the RNE. |
| BODACC | Legal notices: insolvency procedures, deregistrations, conciliations, accounts filings. |
| VIES | Intra-EU VAT number validity. Often unavailable; the answer is then flagged, not failed. |
Registries change continuously: two answers at different times may differ.
Officers' names and roles come from the French trade register, which publishes them, but they remain personal data.
At most 3 are returned by default; directors_limit: 0 omits them; the birth year appears only with
verbose: true. On Pocket Network the answer transits through third-party suppliers and gateways.
The request transits through them too. A q search on a person's name sends that name,
in clear, to the Pocket suppliers and gateways relaying the call, and on to recherche-entreprises.api.gouv.fr.
Our request logs record the kind of input, never the value of q nor any company data, but we cannot
speak for third parties. Prefer siren or siret when you have one.