# France Collective Agreement (IDCC) Finder by SIRET (`klyve1/france-idcc-finder`) Actor

Get the convention collective (IDCC code, official title, Légifrance link) of any French company from its SIRET, SIREN or name. Official government open data, bulk-ready, MCP-ready for AI agents. Pay only for companies where an IDCC is found.

- **URL**: https://apify.com/klyve1/france-idcc-finder.md
- **Developed by:** [Nico Klyve](https://apify.com/klyve1) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 company with collective agreements

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

### What does France Collective Agreement Finder do?

It tells you which **collective agreement (convention collective, IDCC code)** applies to any French company, from a **SIRET**, a **SIREN** or simply a **company name**.

For each company you get the IDCC code, the official agreement title, its legal status and a direct **Légifrance** link, plus useful company context (NAF code, headcount range, city, active or closed).

- Works in bulk: paste thousands of SIRET or SIREN numbers
- Official government open data only (no scraping of protected websites)
- **You only pay for companies where an IDCC is found.** No agreement, not found, or errors are free
- Ready for AI agents through the Apify MCP server

### Who is it for?

- **Payroll and HR software**: auto-fill the collective agreement when onboarding a new client company
- **Accountants and payroll bureaus (experts-comptables, cabinets de paie)**: check the agreement of a whole client portfolio in one run
- **Recruiters and staffing agencies**: know the minimum wages and rules that apply before placing a candidate
- **Legal and HR AI agents**: give your agent the right agreement before it answers a labour-law question
- **B2B sales teams**: segment French prospects by industry agreement

### How to use it

1. Add your SIRET, SIREN or company names to **queries** (one per line, spaces are ignored).
2. For name searches, choose how many matching companies to return.
3. Run, then export the results as JSON, CSV or Excel, or call the Actor through the API.

#### Input example

```json
{
  "queries": ["500 569 405 03239", "384560942", "Leroy Merlin"],
  "maxResultsPerName": 1,
  "onlyActive": true
}
```

#### Output example

```json
{
  "query": "500 569 405 03239",
  "matchedBy": "siret",
  "found": true,
  "siren": "500569405",
  "siret": "50056940503239",
  "companyName": "DECATHLON FRANCE",
  "nafCode": "47.64Z",
  "employeeRange": "500-999",
  "city": "VILLENEUVE-D'ASCQ",
  "status": "active",
  "idccCount": 2,
  "primaryIdcc": "1557",
  "primaryConventionTitle": "Commerce des articles de sport et équipements de loisirs",
  "conventions": [
    {
      "idcc": "1557",
      "title": "Convention collective nationale du commerce des articles de sports et d'équipements de loisirs du 26 juin 1989",
      "legifranceUrl": "https://www.legifrance.gouv.fr/affichIDCC.do?idConvention=KALICONT000005635645",
      "legalStatus": "VIGUEUR_ETEN",
      "source": "both"
    }
  ],
  "hasCollectiveAgreement": true
}
```

A company can have several agreements (for example one for managers and one for other staff). `primaryIdcc` is the one confirmed by the most sources.

### Pricing

Pay per event: **$0.005 per company where at least one collective agreement is found** ($5 per 1,000). Companies without an agreement, unknown numbers and failed lookups are not charged.

### Data sources

All data comes from official French open data published under the Licence Ouverte (Etalab):

- **Recherche d'entreprises API** (INSEE SIRENE register, run by DINUM): company identity and declared IDCC codes
- **siret2idcc** (Ministry of Labour, based on employers' DSN payroll declarations): agreements declared per establishment
- **Code du travail numérique**: official agreement titles and Légifrance links

No personal data is collected: company directors are deliberately left out.

### FAQ

**What is an IDCC?** The *Identifiant De Convention Collective* is the 4-digit number of a French collective agreement, used on payslips and in payroll declarations.

**What does code 9999 mean?** The employer declared that no collective agreement applies. It is returned for transparency but never charged.

**Why can a small company have no IDCC?** Companies without employees do not file payroll declarations, so no agreement is recorded for them.

**How fresh is the data?** Every run queries the official sources live.

### Use with AI agents (MCP)

Add the Actor to any MCP client through the Apify MCP server:

```json
{
  "mcpServers": {
    "apify": { "url": "https://mcp.apify.com/?tools=klyve1/france-idcc-finder" }
  }
}
```

### En français

Trouvez la **convention collective (code IDCC)** de n'importe quelle entreprise française à partir de son SIRET, de son SIREN ou de son nom : intitulé officiel, lien Légifrance, code NAF, tranche d'effectif. Idéal pour la paie, les cabinets comptables, les RH et les agents IA juridiques. Vous ne payez que les entreprises pour lesquelles une convention est trouvée.

# Actor input Schema

## `queries` (type: `array`):

One entry per company. Accepts a 14-digit SIRET (establishment), a 9-digit SIREN (company, head office is used) or a company name. Spaces in numbers are ignored.

## `maxResultsPerName` (type: `integer`):

For name queries only: how many matching companies to return (best matches first).

## `onlyActive` (type: `boolean`):

For name queries only: skip closed companies.

## Actor input object example

```json
{
  "queries": [
    "500 569 405 03239",
    "552032534",
    "Decathlon France"
  ],
  "maxResultsPerName": 1,
  "onlyActive": true
}
```

# Actor output Schema

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

One row per query: company identity and its collective agreements (IDCC, title, Légifrance link).

# 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 = {
    "queries": [
        "500 569 405 03239",
        "552032534",
        "Decathlon France"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("klyve1/france-idcc-finder").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 = { "queries": [
        "500 569 405 03239",
        "552032534",
        "Decathlon France",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("klyve1/france-idcc-finder").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 '{
  "queries": [
    "500 569 405 03239",
    "552032534",
    "Decathlon France"
  ]
}' |
apify call klyve1/france-idcc-finder --silent --output-dataset

```

## MCP server setup

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

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/ldvFrNL57Fx3UDEhR/builds/G1uPsfM2G5vJFu73Y/openapi.json
