# French Company Check: SIREN Status, BODACC & Insolvency (`rigel/fr-supplier-check`) Actor

Due-diligence card for any French company from its SIREN/SIRET: legal status (SIRENE), insolvency, strike-off and accounts filings (BODACC), public contracts won (DECP) and a green/orange/red risk level. For supplier onboarding, KYB and credit control. $0.01 per card, no personal data.

- **URL**: https://apify.com/rigel/fr-supplier-check.md
- **Developed by:** [Rigel](https://apify.com/rigel) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Check any French company in seconds: legal status, insolvency and strike-off notices (BODACC), public contracts won, and a green / orange / red risk level, from official open data.**

### What is French Supplier Check?

French Supplier Check is a **French company check API** for supplier due diligence, KYB onboarding and credit-risk screening. Give it a list of SIREN or SIRET numbers and it returns **one due-diligence card per company**:

- **Identity and status (SIRENE)**: name, NAF code, legal form, size category, headcount band, creation date, active or closed, head office, closed or transferred establishment (with the SIRET to use instead).
- **BODACC notices (last N years, 5 by default)**: collective proceedings (safeguard, receivership, liquidation), conciliation, strike-off, date of the **last accounts filing**, recent notices with a link to bodacc.fr.
- **Public contracts won (DECP)**: number of contracts, total declared amount, last award, main buyers, latest contracts.
- **VAT number**: computed from the SIREN, clearly labelled as **not verified** (no VIES call).
- **Risk flags and a risk level**: `green`, `orange`, `red`, or `unknown` when a source failed.

Company data only: no officers, no personal data.

### Use cases

- **Supplier onboarding / KYB**: check every new French supplier before the first purchase order.
- **Accounts receivable and credit control**: spot customers with an open insolvency proceeding before shipping.
- **Procurement teams**: quarterly re-screening of the whole supplier list on an Apify Schedule.
- **Sales teams and partner programmes**: qualify French prospects (active, size, public-sector track record).
- **Automations**: call it from Make, Zapier, n8n or your ERP through the Apify API and route `red` cards to a human.

### How the risk level works

| Level | Triggered by |
|---|---|
| `red` | company closed, or an open collective proceeding (safeguard, receivership, liquidation) |
| `orange` | establishment closed, closure or adopted plan, a claims filing or a strike-off that is only a seat transfer, no accounts filed in the period (commercial companies), created less than a year ago |
| `green` | none of the above |
| `unknown` | BODACC or DECP failed, or some BODACC notices could not be analysed. Never shown as `green`, and **not charged** |

A signal older than three years is one step milder. This is an indicator built from public notices, not a credit score.

### How to use it

1. Paste SIREN (9 digits) or SIRET (14 digits) numbers in `ids`, or a whole column in `idsText`.
2. Choose the BODACC history (`bodaccYears`) and whether to include public contracts.
3. Run, then export as JSON, CSV or Excel, or call it through the Apify API.

#### Input example

```json
{
  "ids": ["552032534"],
  "bodaccYears": 5,
  "includePublicContracts": true
}
```

### Output example

Real card returned by a public run on 17 October 2026 (abridged: 2 of 10 recent notices shown):

```json
{
  "input": "552032534",
  "siren": "552032534",
  "name": "DANONE",
  "legalForm": "5599",
  "naf": "70.10Z",
  "category": "GE",
  "createdAt": "1955-01-01",
  "companyActive": true,
  "establishmentsOpen": 3,
  "vatNumber": "FR27552032534",
  "vatNumberNote": "Calculé à partir du SIREN – non vérifié.",
  "headOffice": { "siret": "55203253400703", "address": "59-61 RUE LA FAYETTE 75009 PARIS" },
  "status": "active",
  "bodacc": {
    "total": 30,
    "lastAccountsFiling": "2026-06-12",
    "riskNotices": [],
    "recentNotices": [
      {
        "date": "2026-09-02",
        "familyLabel": "Modifications diverses",
        "court": "Greffe du Tribunal des Activités Economiques de Paris",
        "url": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:B202601671193"
      }
    ],
    "source": "BODACC (DILA) – Licence Ouverte 2.0"
  },
  "publicContracts": {
    "contracts": 0,
    "totalAmountEur": 0,
    "source": "DECP consolidées (data.gouv.fr) – Licence Ouverte 2.0"
  },
  "riskFlags": [],
  "riskLevel": "green",
  "checkedAt": "2026-10-16T22:18:28+00:00",
  "charged": true
}
```

### How much does it cost?

Pay per event, in USD. You pay only for complete cards:

| Event | When | Price |
|---|---|---|
| `supplier-card` | SIRENE + BODACC + public contracts | $0.01 |
| `supplier-card-no-decp` | `includePublicContracts` turned off (SIRENE + BODACC) | $0.006 |
| `apify-actor-start` (Apify platform event) | once per run, per GB of memory (default 512 MB = 1 event) | $0.00005 |

Example: checking 500 suppliers with public contracts costs $5.00.

**Free:** invalid ids, not found, masked (sole traders, non-diffusible), duplicates, source errors, and incomplete `unknown` cards, all marked `"charged": false`. When your spending limit is reached the Actor stops and never charges beyond it (minimum limit: $0.05).

### FAQ

#### How do I check if a French company is in liquidation or receivership?

Run the Actor with its SIREN. Collective proceedings published in BODACC (safeguard, *redressement judiciaire*, *liquidation judiciaire*) appear in `bodacc.riskNotices` and turn the card `red` while open.

#### Is the VAT number verified with VIES?

No. The French VAT number is computed from the SIREN (key + SIREN). It does not prove the company is registered for VAT. Check it with VIES before an intra-EU transaction.

#### Does it return company directors or personal data?

No. Officers are never collected. Natural persons and non-diffusible entities are masked and free. Personal sanctions (faillite personnelle, interdiction de gérer), even when published on a company's SIREN, are counted in `excludedPersonalSanctions` and dropped.

#### How fast is it?

About 5 seconds per card on average with 8 companies checked in parallel in our tests. The DECP tabular API is the slowest step; turn off public contracts for faster, cheaper cards.

#### Can I monitor my suppliers automatically?

Yes: save your list as input and add an Apify Schedule (weekly or monthly). Each run re-checks every company.

#### Is this a credit score?

No. It summarises official public notices. It is not a solvency rating and not legal advice.

### Limitations

- Indicator only: no financial statements analysis, no payment behaviour data.
- BODACC notices are matched on the SIREN. A notice published without a SIREN is not found.
- DECP: at most 200 contracts per company are read (`capped: true` beyond). Amounts are declared by buyers and are often framework-agreement ceilings.
- The VAT number is computed, not verified.
- The company API is limited to about 30 requests/s per network (ASN), shared with other clients. The Actor stays at 6 requests/s.

### Data sources and licences

| Source | Publisher | Licence |
|---|---|---|
| [API Recherche d'entreprises](https://recherche-entreprises.api.gouv.fr) (SIRENE, RNE) | DINUM, INSEE data | Licence Ouverte / Open Licence 2.0 |
| [BODACC open data](https://bodacc-datadila.opendatasoft.com) | DILA | Licence Ouverte / Open Licence 2.0 |
| [DECP consolidées](https://www.data.gouv.fr/datasets/donnees-essentielles-de-la-commande-publique-consolidees-format-tabulaire) | data.gouv.fr | Licence Ouverte / Open Licence 2.0 |

The source is cited in every block of the card.

### Related Actors

- [French SIREN/SIRET Bulk Enricher](https://apify.com/rigel/fr-siren-enricher): identity data only, $0.003 per company, for large lists.
- [French Public Tenders & Awards Intel](https://apify.com/rigel/fr-marches-publics-intel): BOAMP tender alerts and DECP winners leaderboard.

### En français

**Fiche de vérification fournisseur pour toute entreprise française : statut SIRENE, procédures collectives et radiations au BODACC, marchés publics remportés, niveau de risque vert / orange / rouge.**

- Cas d'usage : référencement fournisseur (KYB), contrôle avant livraison, revue périodique du panel fournisseurs, qualification de prospects.
- Prix : 0,01 $ par fiche complète, 0,006 $ sans marchés publics. Gratuit : identifiants invalides, introuvables, masqués, doublons, erreurs et fiches incomplètes (`unknown`).
- Limites : indicateur issu d'annonces publiques, pas une note de crédit ni un conseil juridique. Le numéro de TVA est calculé, non vérifié (VIES).
- Aucune donnée personnelle : dirigeants jamais collectés, sanctions personnelles exclues.
- Sources : API Recherche d'entreprises (DINUM/INSEE), BODACC (DILA), DECP (data.gouv.fr), sous Licence Ouverte 2.0.

# Actor input Schema

## `ids` (type: `array`):

SIREN / SIRET.

## `idsText` (type: `string`):

Paste a column. Identifiers are split on newlines, commas and semicolons only, so '552 032 534' stays one SIREN.

## `bodaccYears` (type: `integer`):

BODACC history (years).

## `includePublicContracts` (type: `boolean`):

Include public contracts won (DECP). On: $0.01 per card (supplier-card). Off: $0.006 (supplier-card-no-decp).

## `concurrency` (type: `integer`):

How many companies to check at once. Default 8.

## `maxItems` (type: `integer`):

Max ids.

## Actor input object example

```json
{
  "ids": [
    "316807015",
    "552032534"
  ],
  "bodaccYears": 5,
  "includePublicContracts": true,
  "concurrency": 8,
  "maxItems": 5000
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset, overview view selected.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "ids": [
        "316807015",
        "552032534"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rigel/fr-supplier-check").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "ids": [
        "316807015",
        "552032534",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("rigel/fr-supplier-check").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "ids": [
    "316807015",
    "552032534"
  ]
}' |
apify call rigel/fr-supplier-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rigel/fr-supplier-check"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/d2wWGKm373f5SMsH2/builds/mQ4zaEWkRH4942eX1/openapi.json
