# OPCO · Training Operator by SIRET (`corent1robert/opco-siret-scraper`) Actor

Paste French SIRETs — get OPCO, IDCC and DSN status in one table. One row per establishment. Official France Compétences data. No login. No API key.

- **URL**: https://apify.com/corent1robert/opco-siret-scraper.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 opco lookup by sirets

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## OPCO SIRET Scraper

Get OPCO (Skills Operator) information for French companies instantly. Simply provide a SIRET number and receive complete OPCO details including DSN status, collective agreement information, and management contacts.

### Why Use This Scraper?

**Save Time & Money**

- No more manual searches on government websites
- Process hundreds of SIRETs in minutes instead of hours
- Automate your OPCO lookup workflow

**Get Complete Information**

- DSN Status (Déclaration Sociale Nominative)
- IDCC (Collective Agreement Identifier)
- OPCO DSN code and name
- Management OPCO details

**Reliable & Fast**

- Built-in error handling - continues even if some requests fail
- Automatic duplicate removal
- Process single or bulk SIRETs with parallel processing
- Validates data before processing to ensure accuracy

### Perfect For

- **HR Departments**: Quickly identify OPCO for employee training programs
- **Payroll Services**: Automate OPCO verification for client companies
- **Business Intelligence**: Enrich company databases with OPCO information
- **Compliance Teams**: Verify collective agreement coverage
- **Recruiters**: Understand company training obligations

### How It Works

#### Quick Start - Single SIRET

Just provide one SIRET number:

```json
{
  "siret": "51030090800074"
}
```

#### Bulk Processing - Multiple SIRETs

Process hundreds of SIRETs at once:

```json
{
  "sirets": [
    "51030090800074",
    "12345678901234",
    "98765432109876"
  ],
  "concurrency": 5
}
```

> 💡 **Pro Tip**: Use bulk processing to handle large lists efficiently. The scraper automatically processes everything in parallel for maximum speed.

### What You Get

For each SIRET, you'll receive:

```json
{
  "siret": "51030090800074",
  "etat": "DSN",
  "idcc": "1486",
  "opcoDsnCode": "03",
  "opcoDsnNom": "ATLAS",
  "opcoGestionCode": "N/C",
  "opcoGestionNom": "N/C"
}
```

**Key Fields:**

- `siret`: The company SIRET number
- `etat`: DSN status
- `idcc`: Collective agreement identifier
- `opcoDsnNom`: Name of the DSN OPCO
- `opcoGestionNom`: Name of the management OPCO

### Input Options

| Option | When to Use | Example |
|--------|-------------|---------|
| `siret` | Single company lookup | `"siret": "51030090800074"` |
| `sirets` | Multiple companies (recommended) | `"sirets": ["51030090800074", "..."]` |
| `concurrency` | Speed control (optional) | `"concurrency": 5` (1-20, default: 5) |

**SIRET Format**: Must be exactly 14 digits (e.g., `51030090800074`)

### Benefits

✅ **Zero Manual Work**: Automate your OPCO research completely\
✅ **Scalable**: Process 1 or 1000+ SIRETs with the same ease\
✅ **Error-Resistant**: Invalid SIRETs are flagged, processing continues\
✅ **Fast Results**: Parallel processing means faster completion\
✅ **Clean Data**: Automatic duplicate removal and validation\
✅ **Easy Integration**: Simple JSON input/output format

### Use Cases

**Training Program Management**
Identify which OPCO handles training for each company in your portfolio.

**Payroll Compliance**
Verify OPCO information for accurate payroll declarations.

**Business Database Enrichment**
Add OPCO data to your CRM or company database automatically.

**Bulk Verification**
Check OPCO status for hundreds of companies in one run.

### Getting Started

1. **Prepare your SIRETs**: List the SIRET numbers you need to check
2. **Configure input**: Use single SIRET or bulk list format
3. **Run the scraper**: Get results in minutes
4. **Export data**: Download results in your preferred format

### Support

If you need any help, please contact me: **corentin@outreacher.fr**

***

*Simple, fast, and reliable OPCO information retrieval for French companies.*

### Related Actors

These Actors cover the same job or the next step in the workflow. Apify’s automatic recommendations stay inside one category — this list is the rest of the toolkit.

| Actor | Use it when |
|---|---|
| [French Companies · Search & SIREN Enrich](https://apify.com/corent1robert/recherche-entreprises-scraper) | French companies: search and SIREN enrich |
| [Startupticker.ch Investors Scraper](https://apify.com/corent1robert/startupticker-scraper) | Startupticker.ch Investors Scraper |
| [UK Companies House · Search, Directors & PSC](https://apify.com/corent1robert/uk-companies-house-scraper) | UK Companies House |
| [Welcome to the Jungle Scraper · Hiring Signals & Lemlist Push](https://apify.com/corent1robert/wttj-hiring-signal-scraper) | Welcome to the Jungle Scraper |
| [Actulegales Scraper](https://apify.com/corent1robert/actulegales-scraper) | Actulegales Scraper |
| [Annuaire Service Public Scraper](https://apify.com/corent1robert/annuaire-service-public-scraper) | Annuaire Service Public Scraper |
| [SW Website Rankings Scraper](https://apify.com/corent1robert/similarweb-scraper) | Rank the website / domain after you have the URL |
| [ORIAS Scraper · French Insurance Broker Leads](https://apify.com/corent1robert/orias-scraper) | French insurance broker leads (ORIAS) |

# Actor input Schema

## `siret` (type: `string`):

A single SIRET number to process (14 digits). Use this option for a single SIRET. Example: 51030090800074

## `sirets` (type: `array`):

List of SIRET numbers to process in bulk. Use this option to process multiple SIRETs at once. All SIRETs in the list will be processed. Each SIRET must contain 14 digits.

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

Number of parallel requests to make simultaneously (default: 5). Higher values = faster processing but more server load. Recommended: 5-10 for optimal performance.

## Actor input object example

```json
{
  "siret": "51030090800074",
  "sirets": [
    "51030090800074",
    "12345678901234",
    "98765432109876"
  ],
  "concurrency": 5
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/opco-siret-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/opco-siret-scraper").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 '{}' |
apify call corent1robert/opco-siret-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/opco-siret-scraper"
        }
    }
}
```

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/Wt9jGDOIiiIpH160d/builds/11E29Kfvy85gmBpaR/openapi.json
