# French Company Data — SIREN, Officers & Risk Flags (`jdepablos/france-company-feed`) Actor

- **URL**: https://apify.com/jdepablos/france-company-feed.md
- **Developed by:** [Juan de Pablos](https://apify.com/jdepablos) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 company profile delivereds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## French Company Data — SIREN, Officers & Risk Flags

**Look up any French company in one call.** Legal identity, head office with coordinates, company size, directors with their roles, establishment counts and verifiable risk flags — straight from the official French government registry (INSEE Sirene + RNE), as clean JSON.

No API key, no scraping, no stale third-party database. 26 million French companies, live.

### What you get

```json
{
  "siren": "491904546",
  "name": "COMUTO",
  "tradingNames": ["BLABLACAR"],
  "status": "active",
  "companySize": "Mid-cap",
  "incorporatedOn": "2006-09-16",
  "companyAgeYears": 20,
  "nafCode": "63.11Z",
  "headOffice": {
    "siret": "49190454600034",
    "address": "84 AVENUE DE LA REPUBLIQUE 75011 PARIS",
    "city": "PARIS",
    "department": "75",
    "latitude": 48.864144787,
    "longitude": 2.3796601156
  },
  "establishments": { "total": 7, "open": 2 },
  "officers": [
    { "name": "PHILIPPE BOTTERI", "role": "Administrateur", "birthYear": "1973", "kind": "person" }
  ],
  "riskFlags": []
}
```

### The risk flags

Every flag is a verifiable registry fact, never a score or an opinion:

- **`status:ceased`** — the company is no longer administratively active.
- **`closed`** — a closure date is on record.
- **`no-open-establishments`** — registered as active but with zero open sites.
- **`under-1-year-old`** — incorporated less than a year ago. Not bad in itself, but it changes the risk of extending payment terms.
- **`no-officers-on-record`** — no directors listed in the national register.

Your policy decides what combination is a dealbreaker. The report just makes sure you never miss one.

### Use cases

- **KYC and vendor onboarding** — verify a French counterparty exists, is active, and who runs it.
- **Lead enrichment** — NAF activity code, company size, employee range, head office coordinates for B2B prospecting and territory mapping.
- **Watchlists** — pass up to 50 companies per run, schedule it, and catch a status change or a director leaving the day the registry updates.
- **AI agents** — exposed as an MCP tool, so an agent can answer "is this French supplier still active and who are its directors?" in one call.

### Input

`companies` (names or 9-digit SIREN, up to 50) or `query` for a single lookup. Narrow name searches with `departement` (e.g. `75` for Paris) or `nafCode`. Turn on `includeAlternatives` to see other companies that matched a name — the cheapest way to avoid acting on the wrong entity.

### Pricing

Pay per event: charged only for profiles actually delivered. Companies not found and failed lookups are free.

### Use with AI agents (MCP)

```
https://mcp.apify.com?tools=jdepablos/france-company-feed
```

### FAQ

**Where does the data come from?** The official `recherche-entreprises.api.gouv.fr` service, which aggregates INSEE Sirene (the national business register) and the RNE. It is public French open data.

**How fresh is it?** Live at request time. Each record carries its own `lastUpdated` from the registry.

**Do you cover sole traders?** Yes — the register includes micro-entrepreneurs and sole traders alongside companies.

**Need UK companies too?** See my [Companies House feed](https://apify.com/jdepablos/companies-house-feed), or [BORME](https://apify.com/jdepablos/borme-company-feed) for Spain.

# Actor input Schema

## `companies` (type: `array`):

Company names (e.g. "BlaBlaCar") or 9-digit SIREN numbers (e.g. "491904546"). Names are resolved through the official search, best match wins. Up to 50 per run.

## `query` (type: `string`):

One company name or SIREN — convenience alternative to `companies`.

## `includeAlternatives` (type: `boolean`):

When resolving by name, also return up to 4 other companies that matched — useful to catch ambiguous names before you act on the wrong entity.

## `departement` (type: `string`):

Restrict name searches to a French département code (e.g. "75" for Paris, "69" for Rhône).

## `nafCode` (type: `string`):

Restrict name searches to a business activity code (e.g. "62.01Z" for software development).

## Actor input object example

```json
{
  "companies": [
    "BlaBlaCar",
    "552032534"
  ],
  "includeAlternatives": false
}
```

# Actor output Schema

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

One record per company delivered, with siren, name, status, officers and riskFlags.

# 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 = {
    "companies": [
        "BlaBlaCar",
        "552032534"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jdepablos/france-company-feed").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 = { "companies": [
        "BlaBlaCar",
        "552032534",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("jdepablos/france-company-feed").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 '{
  "companies": [
    "BlaBlaCar",
    "552032534"
  ]
}' |
apify call jdepablos/france-company-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jdepablos/france-company-feed"
        }
    }
}
```

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/aQ6shnSLo6kNL9Swt/builds/Mdw4EuEh5IdzWTohS/openapi.json
