# Actulegales Scraper (`corent1robert/actulegales-scraper`) Actor

Extract comprehensive legal announcements from Actulegales.fr. Scrapes all departments (01-95) to find collective procedures from a specified date range. Handles both HTML and API pagination to extract complete results including company names, SIREN, procedure, publication dates, and announcement

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

## Pricing

$3.00 / 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## Actulegales Scraper - Extract Legal Announcements from Actulegales.fr

**Extract comprehensive legal announcements from [Actulegales.fr](https://actulegales.fr/)**. This Actor scrapes the Actulegales website to provide you with a complete database of legal announcements including company names, SIREN numbers, procedure types, publication dates, and announcement URLs.

### What does Actulegales Scraper do?

The **Actulegales Scraper** extracts comprehensive data from the Actulegales website, covering all legal announcements (collective procedures) from all French departments (01-95). The Actor automatically iterates through each department to bypass result limits, extracts announcements from both HTML and API-based pagination, and provides structured data including company names, SIREN numbers, procedure types, publication dates, addresses, journals, and announcement URLs.

### What can this Actulegales Scraper do?

#### 🚀 Key Features

- **Complete Department Coverage**: Scrapes all French departments (01-95) automatically
- **Comprehensive Data Extraction**: Extracts all announcement details including dates, company names, SIREN numbers, procedure types, addresses, journals, and URLs
- **All Collective Procedures**: Filters for all collective procedures (Redressement, Liquidation, Sauvegarde, Cession, etc.)
- **Date Range Filtering**: Configurable date range for announcements (default: from June 1, 2025 to today)
- **Direct API Access**: Uses direct API calls to `/recherche/query` endpoint for efficient data extraction
- **High Success Rate**: Accurate extraction with automatic retry mechanism and anti-bot protection handling
- **Optimized Performance**: Processes departments sequentially (configurable concurrency, default: 1) to avoid rate limiting
- **Structured Output**: Clean, normalized data ready for immediate use in CSV, JSON, Excel, or HTML formats

#### 🎯 Platform Advantages

Your Actor + the Apify platform. They come as a package. This scraper benefits from:

- **Monitoring & Logs**: Real-time execution monitoring with detailed logs to track scraping progress
- **API Access**: Access your data programmatically via Apify API for seamless integration
- **Scheduling**: Set up automated runs on a schedule to keep your announcement database up-to-date
- **Integrations**: Connect to Make.com, Zapier, Google Sheets, and more for automated workflows
- **Optional Proxy Support**: Can use RESIDENTIAL proxies to help avoid IP blocking and 403 errors - configurable via input (paid, but most reliable)
- **Scalability**: Handle large-scale scraping with cloud infrastructure that scales automatically
- **Data Storage**: Secure dataset storage with multiple export formats (JSON, CSV, Excel, HTML)

### What data can Actulegales Scraper extract?

The Actor extracts comprehensive data from Actulegales announcements. Here's what you can extract:

| Data Category | Fields Extracted | Description |
|--------------|------------------|-------------|
| **Announcement Information** | `dateParution`, `nomEntreprise`, `siren`, `typeProcedure`, `urlFiche`, `departement`, `adresse`, `journal` | Complete announcement details and information |

#### Detailed Field Description

##### Announcement Information

- **dateParution**: Publication date of the announcement (e.g., "12 Décembre 2025")
- **nomEntreprise**: Company name (e.g., "BEKKAKCHA SANDRINE")
- **siren**: SIREN number (French company identifier, e.g., "521852673")
- **typeProcedure**: Type of collective procedure (e.g., "Liquidation Judiciaire", "Redressement Judiciaire", "Sauvegarde")
- **urlFiche**: Full URL to the announcement detail page (e.g., "https://actulegales.fr/annonce-legale/1021703494")
- **departement**: Department code where the company is located (e.g., "01", "75", "13")
- **adresse**: Company address (postal code and locality, e.g., "01560 SAINT-JEAN-SUR-REYSSOUZE")
- **journal**: Publication journal name (e.g., "Voix de l'Ain (La)")

### How to scrape Actulegales.fr announcements?

#### Step-by-Step Tutorial

1. **Configure Input**: Click on the **Input** tab and optionally adjust:
   - `startDate`: Start date in format DD/MM/YYYY (default: 01/06/2025)
   - `endDate`: End date in format DD/MM/YYYY (leave empty for today's date)
   - `maxConcurrency`: Number of parallel department requests (default: 10)
   - `requestTimeout`: Request timeout in milliseconds (default: 45000 = 45 seconds)
   - `delayBetweenRequests`: Delay between department requests in milliseconds (default: 200 = 0.2 seconds)
   - `useProxies`: Enable RESIDENTIAL proxies to help avoid IP blocking (default: false). Set to `true` if experiencing frequent 403 errors. **Note: RESIDENTIAL proxies incur data transfer costs.**
   - `cookies`: **IMPORTANT** - Cookies from your browser session to avoid blocking. See instructions below to get your cookies.

#### How to Get Your Cookies

To avoid being blocked, you need to provide cookies from a valid browser session. Here's how to get them:

**Method 1: Using Chrome/Edge/Brave (Recommended)**

1. Open your browser and go to https://actulegales.fr
2. Open Developer Tools (F12 or Right-click → Inspect)
3. Go to the **Application** tab (or **Storage** in Firefox)
4. In the left sidebar, expand **Cookies** → `https://actulegales.fr`
5. Copy all cookies by selecting them and copying, or manually copy the important ones:
   - `datadome` (most important - anti-bot cookie)
   - `actulegales` (session cookie)
   - `_ga`, `_gid` (Google Analytics)
   - `displayCookieConsent`
6. Format them as: `cookie1=value1; cookie2=value2; cookie3=value3`
7. Paste the full cookie string in the `cookies` field in the Actor input

**Method 2: Using Browser Extension**

1. Install a cookie export extension (like "Cookie-Editor" or "EditThisCookie")
2. Visit https://actulegales.fr
3. Export cookies and copy the cookie string
4. Paste it in the `cookies` field

**Method 3: Using curl (for developers)**

1. Open your browser's Network tab (F12 → Network)
2. Visit https://actulegales.fr and make a search
3. Find any request to actulegales.fr
4. Copy the `Cookie` header value
5. Paste it in the `cookies` field

**Note**: Cookies expire after some time. If you get blocked, update your cookies by following the steps above again.

2. **Run the Actor**: Click **Start** to begin scraping

3. **Monitor Progress**: Watch the logs to see real-time progress and statistics for each department

4. **Download Results**: Once complete, download your data from the **Dataset** tab in JSON, CSV, Excel, or HTML format

The Actor automatically:

- Iterates through all departments (01-95)
- Makes direct API calls to `/recherche/query` endpoint with date range and procedure filters
- Handles API pagination automatically using `limitStart` and `limitNb` parameters
- Extracts all announcement information from JSON responses
- Saves results to the dataset

### How much will it cost to scrape Actulegales.fr?

Scraping Actulegales.fr announcements is priced based on **Compute Units (CUs)** consumed during the Actor run. The cost depends on:

- **Number of departments**: Each department requires one or more requests
- **Number of announcements**: More announcements mean more data to process
- **Concurrency level**: Higher concurrency processes more departments simultaneously but uses more resources
- **Request timeouts**: Longer timeouts may consume more CUs if pages load slowly

**Estimated costs:**

- **Free plan**: Test with a few departments
- **Starter plan**: Scrape all departments efficiently
- **Professional plan**: Handle large-scale scraping with optimal performance

The Actor is optimized to minimize CU consumption by using efficient Cheerio parsing (no browser overhead) and configurable concurrency. Most runs will complete in a reasonable time depending on the total number of announcements across all departments.

### Input

Actulegales Scraper has the following input options. Click on the **Input** tab for more information:

- **startDate** (optional): Start date in format DD/MM/YYYY. Default: `01/06/2025`.
- **endDate** (optional): End date in format DD/MM/YYYY. Leave empty for today's date.
- **maxConcurrency** (optional): Maximum number of concurrent department requests. Default: `10`. Increase for faster scraping (up to 20), but monitor for rate limiting.
- **requestTimeout** (optional): Request timeout in milliseconds. Default: `45000` (45 seconds). Increase if experiencing timeout errors.
- **delayBetweenRequests** (optional): Delay in milliseconds between processing each department. Default: `200` (0.2 seconds). Increase to avoid rate limiting.
- **useProxies** (optional): Enable RESIDENTIAL proxies to help avoid IP blocking. Default: `false`. Set to `true` if experiencing frequent 403 errors. **Note: RESIDENTIAL proxies are PAID and incur data transfer costs, but provide the best protection against anti-bot systems.**
- **cookies** (optional but recommended): Browser cookies from a valid session on actulegales.fr. Format: `cookie1=value1; cookie2=value2; ...`. The most important cookie is `datadome` (anti-bot protection). See "How to Get Your Cookies" section above for detailed instructions. If not provided, default cookies will be used (may expire and cause blocking).

### Output

You can download the dataset extracted by Actulegales Scraper in various formats such as JSON, HTML, CSV, or Excel.

#### Output Example

```json
{
  "dateParution": "12 Décembre 2025",
  "nomEntreprise": "BEKKAKCHA SANDRINE",
  "siren": "521852673",
  "typeProcedure": "Liquidation Judiciaire",
  "urlFiche": "https://actulegales.fr/annonce-legale/1021703494",
  "departement": "01",
  "adresse": "01560 SAINT-JEAN-SUR-REYSSOUZE",
  "journal": "Voix de l'Ain (La)"
}
```

### Tips for Best Results

#### Performance Optimization

- **Adjust Concurrency**: Keep `maxConcurrency` at 1 (default) to avoid rate limiting. Increase (up to 20) only if the website can handle it without 403 errors
- **Timeout Settings**: Use default timeout (45000ms = 45 seconds) for most cases. Increase only if experiencing timeout errors
- **Delay Between Requests**: Default delay (2000ms = 2 seconds) helps avoid rate limiting. Increase if experiencing 403 errors
- **Monitor Progress**: Check logs regularly to ensure smooth operation and watch for 403 errors

#### Data Quality

- **Complete Extraction**: The Actor extracts all available fields. Some announcements may have missing fields if not available on the page
- **Date Format**: Dates are extracted as displayed on the website (e.g., "12 Décembre 2025")
- **SIREN Validation**: SIREN numbers are extracted from both the company name text and URLs

### Is it legal to scrape Actulegales.fr?

Our scrapers are ethical and do not extract any private user data, such as email addresses, personal information, or payment details. They only extract publicly available legal announcement information that is displayed on the website. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe.

However, you should be aware that:

- Legal announcement data is publicly available information
- The scraper respects robots.txt and rate limits
- You should comply with Actulegales.fr's terms of service
- Personal data protection regulations (GDPR, etc.) may apply depending on your use case

If you're unsure whether your use case is legitimate, consult your lawyers. You can also read our [blog post on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### FAQ

#### How many announcements can I scrape?

The Actor can scrape all announcements available in the specified date range across all departments (01-95). The exact number depends on the current announcements in the database. The Actor will automatically process all departments and handle pagination. For departments with more than 1000 results, the Actor automatically splits requests by procedure groups to bypass the API limit.

#### How do I get the cookies?

See the "How to Get Your Cookies" section above. In short:

1. Visit https://actulegales.fr in your browser
2. Open Developer Tools (F12) → Application tab → Cookies
3. Copy all cookies and paste them in the `cookies` field
4. The most important cookie is `datadome` (anti-bot protection)

**Important**: Cookies expire after some time. If you start getting blocked, update your cookies by following the steps above again.

#### What if a department page fails to load?

The Actor includes automatic retry mechanism (up to 2 retries) for failed requests. If a page still fails after retries, the Actor continues processing other departments and logs the error.

#### Can I scrape specific departments only?

Currently, the Actor scrapes all departments (01-95). You can filter the results after extraction by department using the dataset filters or by processing the exported data.

#### How often should I run this Actor?

It depends on your needs. For regular monitoring, you might want to run it daily or weekly. For one-time extraction, a single run is sufficient.

#### Does the Actor handle pagination?

Yes! The Actor uses direct API calls to `/recherche/query` endpoint and handles pagination automatically using `limitStart` and `limitNb` parameters. It automatically loads all available results for each department.

#### Can I get support or request features?

Yes! If you encounter issues or have feature requests, please use the **Issues** tab on the Actor page. We're open to feedback and continuously improving the Actor based on user needs.

#### Need a custom solution?

If you need a customized version of this Actor for specific requirements, feel free to contact us through the Actor page. We can create tailored solutions based on your needs.

### Technical Details

#### Extraction Process

1. **Department Iteration**: The Actor iterates through all departments (01-95)
2. **API Request Construction**: Builds POST requests to `/recherche/query` endpoint with date range, procedure filters, and department code
3. **Direct API Calls**: Makes direct API calls with proper headers to mimic browser requests
4. **API Pagination**: Handles pagination automatically using `limitStart` and `limitNb` parameters to load all results
5. **Data Extraction**: Parses JSON responses and extracts announcement data from structured API responses
6. **Sequential Processing**: Processes departments sequentially (default concurrency: 1) to avoid rate limiting, with configurable delays between requests

#### Error Handling

- Automatic retry mechanism for failed requests (up to 2 retries)
- Timeout handling for slow-loading pages
- Graceful error handling that continues processing other departments
- Fallback extraction methods for missing data fields

### Limitations

- The scraper depends on the Actulegales API structure. If the API changes significantly, the Actor may need updates
- Some announcements may not have all information fields available (e.g., missing address or journal)
- Rate limiting and anti-bot protection (Datadome) may apply - use default concurrency (1) and delay settings for best results
- The API endpoint `/recherche/query` may need adjustment if the website changes its API structure
- On Apify, proxies should handle anti-bot protection automatically. Local testing may show 403 errors without valid proxies

### Resources

- [Actulegales.fr Website](https://actulegales.fr/)
- [Apify Platform Documentation](https://docs.apify.com/)
- [Web Scraping Basics](https://apify.com/academy/web-scraping)

***

**Need help?** Check the **Issues** tab for common problems and solutions, or contact support through the Actor page.

# Actor input Schema

## `startDate` (type: `string`):

Start date in format DD/MM/YYYY (default: 01/06/2025)

## `endDate` (type: `string`):

End date in format DD/MM/YYYY. Leave empty for today's date.

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent requests (default: 10). Increase for more speed, decrease to reduce server load and avoid 403 errors.

## `requestTimeout` (type: `integer`):

Maximum timeout for each request in milliseconds (default: 45000 = 45 seconds).

## `delayBetweenRequests` (type: `integer`):

Delay in milliseconds between each request to avoid rate limiting (default: 200 = 0.2 seconds). Increase if you get 403 errors.

## `limitNb` (type: `integer`):

Number of results to fetch per API request (default: 50). Higher values = fewer requests but larger payloads.

## `parallelRequests` (type: `integer`):

Number of parallel requests for pagination within each department (default: 5). Higher values = faster pagination but more server load.

## `cookies` (type: `string`):

Browser cookies from a valid session on actulegales.fr. Format: cookie1=value1; cookie2=value2; ...

How to get cookies:

1. Visit https://actulegales.fr in your browser
2. Open Developer Tools (F12) → Application tab → Cookies → https://actulegales.fr
3. Copy all cookies and paste them here

The most important cookie is 'datadome' (anti-bot protection). Cookies expire after some time - if you get blocked, update them.

## Actor input object example

```json
{
  "startDate": "01/06/2025",
  "endDate": "",
  "maxConcurrency": 10,
  "requestTimeout": 45000,
  "delayBetweenRequests": 200,
  "limitNb": 50,
  "parallelRequests": 5,
  "cookies": ""
}
```

# Actor output Schema

## `announcements` (type: `string`):

Interactive table with all announcements. Filterable and sortable by columns (date, department, procedure type, SIREN, etc.).

## `announcementsByDepartment` (type: `string`):

Announcements grouped by department for easy browsing

## `announcementsByProcedure` (type: `string`):

Announcements grouped by procedure type (Redressement, Liquidation, Sauvegarde, etc.)

## `statistics` (type: `string`):

Statistics on extracted data (total announcements, departments, procedure types, etc.)

# 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/actulegales-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/actulegales-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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/actulegales-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=corent1robert/actulegales-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/LVEVH5HyYK2SgKtpM/builds/7pl715aShoMOaC7UF/openapi.json
