# 1pacteclimat.fr Scraper - Signatory Companies (`aboo.script/1pacteclimat-fr-scraper`) Actor

Scrape companies and business collectives that signed the French business climate pledge on 1pacteclimat.fr: sector, size, employees, countries, sponsor, climate commitments, website, LinkedIn, Twitter and sustainability report links.

- **URL**: https://apify.com/aboo.script/1pacteclimat-fr-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 results

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

## 1pacteclimat.fr Scraper

![1pacteclimat.fr Scraper](https://i.postimg.cc/63C3ST0w/image.png)

**1pacteclimat.fr Scraper** extracts every company and business collective that signed the French business climate pledge on [1pacteclimat.fr](https://1pacteclimat.fr/) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a directory or signatory URL, or type a company name, and get the sector, company size, employee counts, countries of presence, climate commitments, website, LinkedIn, Twitter, and sustainability report link for every signatory. No account or login required.

### Introduction

[1pacteclimat.fr](https://1pacteclimat.fr/) is the official site of the French business climate pledge, backed by MEDEF and major French business associations. Hundreds of companies, from small firms to large groups like Veolia, TotalEnergies, and Bouygues, publish their climate commitments there, making it a valuable list of French businesses that are actively engaged in climate action.

This actor collects the same public information you see in your browser and turns it into a ready-to-use dataset. You can run it once, schedule it to run daily, or connect it to your own tools.

### What data can you extract from 1pacteclimat.fr?

- 🏢 Signatory name, type (company or collective), and logo
- 🏭 Sector group and sector
- 📏 Company type (French company, subsidiary of a French signatory, or French subsidiary of a foreign company) and company size (micro-enterprise, SME, mid-size, large)
- 👥 Number of employees in France and worldwide, and number of member companies for collectives
- 🌍 Number of countries where the company operates
- 🤝 Sponsoring signatory
- 📝 Full climate commitment text
- 🌐 Website, LinkedIn, Twitter, and sustainability report links
- 🎬 Presentation video link
- 🔗 Direct URL to each signatory page

### Use Cases

- 📈 **Market research**: see which sectors and company sizes are committing to climate action in France.
- 🕵️ **Competitor monitoring**: follow which companies in your industry have signed the pledge and what they promise.
- 🤝 **Lead generation**: build a list of climate-engaged French companies for sustainability, energy, or ESG services.
- 🗂️ **Database building**: create your own ESG or supplier database with sector, size, and employee data.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape 1pacteclimat.fr step by step

1. Paste one or more 1pacteclimat.fr URLs into **Start URLs**, or type company names into **Search queries**.
2. Optionally pick a **Sector group**, **Sector**, **Company type**, **Company size**, **Sponsor**, or employee range to narrow the results.
3. Set **Maximum number of results** to how many signatories you want per URL or per query.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: 1pacteclimat.fr pages to scrape. Supported pages: the companies directory (`https://1pacteclimat.fr/acteurs/entreprises`), the collectives directory (`https://1pacteclimat.fr/acteurs/collectifs`), and single signatory pages (such as `https://1pacteclimat.fr/acteurs/veolia`).
- **Search queries**: company or collective names to look for, one per line, just like the search box on the website. Each query is scraped separately.
- **Maximum number of results**: how many signatories to collect for each start URL or search query.
- **Sector group**, **Sector**, **Company type**, **Company size**: keep only signatories that match, the same as the filters on the website directory.
- **Sponsor**: keep only companies sponsored by a given signatory, by name as shown on the website (for example LVMH, EDF, or VINCI).
- **Minimum employees in France** and **Maximum employees in France**: keep only companies within an employee range.

You can use start URLs, search queries, or both in the same run. Filters apply to search queries and directory URLs.

### Input Examples

Scrape the companies directory:

```json
{
  "startUrls": [{ "url": "https://1pacteclimat.fr/acteurs/entreprises" }],
  "maxResults": 5
}
```

Search by name:

```json
{
  "searchQueries": ["france"],
  "maxResults": 5
}
```

Large industrial companies with at least 5,000 employees in France:

```json
{
  "startUrls": [{ "url": "https://1pacteclimat.fr/acteurs/entreprises" }],
  "sectorGroup": "industrie",
  "companySize": "groupe",
  "minEmployees": 5000,
  "maxResults": 5
}
```

### Output

Each signatory is saved as one item in the dataset. Here is an example of a single item:

```json
{
  "url": "https://1pacteclimat.fr/acteurs/bouygues",
  "id": "bouygues",
  "name": "BOUYGUES",
  "actorType": "Company",
  "logoUrl": "https://1pacteclimat.fr/uploads/signataires/20260420-154645-rtb8.webp",
  "sectorGroup": "Construction",
  "sector": "Public Works",
  "companyType": "French company based in France",
  "companySize": "Large company",
  "sponsor": null,
  "countriesCount": 80,
  "employeesFrance": 67000,
  "employeesWorldwide": 129000,
  "memberCompaniesCount": null,
  "description": "Bouygues s'engage pour le climat\nLa responsabilité de Bouygues et de ses métiers est de développer des solutions bas-carbone, et de les promouvoir auprès de ses clients...",
  "websiteUrl": "https://www.bouygues.com/",
  "sustainabilityReportUrl": "https://www.bouygues.com/wp-content/uploads/2021/03/document-denregistrement-universel-2020.pdf",
  "linkedinUrl": "https://www.linkedin.com/company/bouygues/",
  "twitterUrl": "https://twitter.com/GroupeBouygues",
  "videoUrl": "https://www.youtube.com/watch?v=d0NzcDE_jxU"
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- The whole directory holds a few hundred signatories (about 350 companies and 30 collectives), so a full run finishes in a couple of minutes.
- The climate commitment text is in French, exactly as published on the website. Sector, size, and company type are returned in English.
- Search queries match signatory names only, like the search box on the website.
- Filters do not apply to single signatory URLs; those pages are always scraped.
- Company type, company size, sponsor, and employee counts are not filled in for collectives and for some companies, so they are returned as `null`. Filters on these values skip signatories that do not have them.
- URLs that are not 1pacteclimat.fr directory or signatory pages are skipped.

### Why use the 1pacteclimat.fr Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 🎯 **Website filters as input**: filter by sector, size, company type, sponsor, and employee range, even though the website does not keep filters in its URLs.
- 🧩 **Complete records**: every item combines the directory data (size, type, sponsor) with the full signatory page.
- 🧹 **Clean data**: numbers are real numbers, links are full URLs, and text is free of HTML.
- 🔄 **Ready for automation**: schedule runs, export to Google Sheets, or connect to Make, Zapier, and n8n.

### FAQ

#### How many results can I scrape?

You can set any number in **Maximum number of results**. The actor keeps going until it reaches your limit or runs out of signatories.

#### Do I need a 1pacteclimat.fr account?

No. The actor only collects publicly available data. You do not need to log in or provide any account details.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every day, week, or month, and track new signatories automatically.

#### Why are some fields empty?

Some signatories do not publish every piece of information, such as employee counts, a sustainability report, or social media links. When a field is not available on the website, it is returned as `null`.

#### Can I request a new feature or filter?

Yes. Right now the actor supports start URLs, search queries, and the website directory filters. If you need other inputs or data, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [1pacteclimat.fr](https://1pacteclimat.fr/)

# Actor input Schema

## `startUrls` (type: `array`):

1pacteclimat.fr directory pages (companies or collectives) or signatory pages, e.g. https://1pacteclimat.fr/acteurs/entreprises or https://1pacteclimat.fr/acteurs/veolia.

## `searchQueries` (type: `array`):

Keywords matched against signatory names, like the search box on the website. Companies and collectives are both searched. Each query is scraped separately.

## `maxResults` (type: `integer`):

Maximum number of signatories to scrape per start URL or search query.

## `sectorGroup` (type: `string`):

Only keep signatories in this sector group. Applies to search queries and directory start URLs.

## `sector` (type: `string`):

Only keep signatories in this sector. Applies to search queries and directory start URLs.

## `companyType` (type: `string`):

Only keep companies of this type. Applies to search queries and directory start URLs.

## `companySize` (type: `string`):

Only keep companies of this size. Applies to search queries and directory start URLs.

## `sponsor` (type: `string`):

Only keep companies sponsored by this signatory, by name as shown on the website (e.g. LVMH, EDF, VINCI). Applies to search queries and directory start URLs.

## `minEmployees` (type: `integer`):

Only keep companies with at least this many employees in France. Companies without an employee count are skipped. Applies to search queries and directory start URLs.

## `maxEmployees` (type: `integer`):

Only keep companies with at most this many employees in France. Companies without an employee count are skipped. Applies to search queries and directory start URLs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://1pacteclimat.fr/acteurs/entreprises"
    }
  ],
  "searchQueries": [
    "france"
  ],
  "maxResults": 5
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://1pacteclimat.fr/acteurs/entreprises"
        }
    ],
    "searchQueries": [
        "france"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/1pacteclimat-fr-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 = {
    "startUrls": [{ "url": "https://1pacteclimat.fr/acteurs/entreprises" }],
    "searchQueries": ["france"],
}

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/1pacteclimat-fr-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 '{
  "startUrls": [
    {
      "url": "https://1pacteclimat.fr/acteurs/entreprises"
    }
  ],
  "searchQueries": [
    "france"
  ]
}' |
apify call aboo.script/1pacteclimat-fr-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/1pacteclimat-fr-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/eIS8HTqFI7PODf9M5/builds/DDd8WkVZg97HXlpqw/openapi.json
