# French Legal Notice Generator (Mentions Légales) (`fit_melon/french-legal-notice-generator-lcen`) Actor

Generate LCEN-compliant French legal notices (mentions légales) as ready-to-paste HTML from a SIREN or SIRET. Official data (legal form, address, RCS, VAT number, director) auto-filled from the French government registry. Free — perfect for web agencies. Générateur de mentions légales.

- **URL**: https://apify.com/fit\_melon/french-legal-notice-generator-lcen.md
- **Developed by:** [D N](https://apify.com/fit_melon) (community)
- **Categories:** Automation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Legal Notice Generator (Mentions Légales) — LCEN Compliant

**Free actor.** Generate a compliant French legal notice (*mentions légales*) as ready-to-paste HTML and plain text, from nothing more than a **SIREN or SIRET number**. Company data (legal name, legal form, head-office address, SIREN/SIRET, RCS city, intra-community VAT number, publication director) is fetched automatically from the **official French government registry** (API Recherche d'Entreprises — INSEE/RNE data, Etalab open licence).

Every website published in France must display *mentions légales* under the **LCEN law** (Loi pour la confiance dans l'économie numérique, 2004, as amended by the SREN law 2024). Missing legal notices expose the publisher to fines of up to €75,000 (individuals) or €375,000 (companies). This actor turns a boring compliance chore into one API call — perfect for **web agencies, freelancers and no-code builders** who ship many client websites.

Keywords: mentions légales générateur, legal notice generator France, LCEN compliance, mentions légales HTML, SIREN to legal notice, French website compliance, générateur mentions légales automatique, RGPD, web agency automation.

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `queries` | array of strings | ✅ | One 9-digit SIREN or 14-digit SIRET per line. One legal notice generated per identifier. |
| `websiteUrl` | string | — | Website the notice is for (shown in the title). |
| `hostName` | string | — | Hosting provider name (required by LCEN — placeholder inserted if omitted). |
| `hostAddress` | string | — | Hosting provider postal address. |
| `hostPhone` | string | — | Hosting provider phone number. |
| `contactEmail` | string | — | Publisher's public contact e-mail. |
| `contactPhone` | string | — | Publisher's public contact phone. |
| `publicationDirector` | string | — | If omitted, the president/gérant/CEO is picked from official registry data when available. |
| `shareCapital` | string | — | e.g. `"10 000 €"`. Not in open data — placeholder inserted if omitted. Skipped for sole traders & associations. |
| `includeExtendedSections` | boolean | — | Add standard IP / GDPR / liability sections (default `true`). |

### Output

One dataset item per input, with an explicit `status`: `found` / `not_found` / `error`. Example (trimmed):

```json
{
  "status": "found",
  "query": "356000000",
  "siren": "356000000",
  "siret": "35600000000048",
  "companyName": "La Poste",
  "legalForm": "Société anonyme (SA) à conseil d'administration",
  "headOfficeAddress": "DIRECTION GENERALE DE LA POSTE 9 RUE DU COLONEL PIERRE AVIA 75015 PARIS",
  "vatNumber": "FR44356000000",
  "publicationDirector": "Jean Dupont",
  "legalNoticeHtml": "<section class=\"legal-notice\">…</section>",
  "legalNoticeText": "Mentions légales — https://www.example.fr …",
  "missingFields": ["shareCapital"],
  "source": "API Recherche d'Entreprises (recherche-entreprises.api.gouv.fr) — Etalab open licence",
  "generatedAt": "2026-07-04T12:00:00.000Z"
}
````

The `missingFields` array tells you exactly which optional inputs you should provide to remove the `[placeholder]` markers — nothing is ever silently wrong.

### Use cases

- **Web agencies**: generate a compliant legal notice for every client site at delivery time — in bulk, from a list of SIRENs.
- **No-code / automation**: plug into Make, Zapier or n8n to auto-insert legal notices into new WordPress/Webflow sites.
- **Compliance sweeps**: pair with a legal-notice scraper to detect sites with missing or broken *mentions légales*, then generate the fix.
- **Sole traders & associations**: correct wording variants are applied automatically (no fake "share capital" for an *entrepreneur individuel*, RNA number for associations).

### Limitations & fair use

- The share capital is not published in French open data: provide it via input or a clean placeholder is inserted.
- Companies with protected data (*statut de diffusion partielle*) are returned as `not_found` — their data cannot legally be used.
- Data source: [API Recherche d'Entreprises](https://recherche-entreprises.api.gouv.fr) (DINUM), open Etalab licence, rate limit respected by the actor.
- Generated notices are a solid, standard baseline but do not constitute legal advice — review before publishing, especially for regulated professions and e-commerce (CGV are a separate document).

### Pricing

**This actor is free.** You only pay your own Apify platform usage (typically well under $0.01 per hundred notices).

### More actors by this developer

Part of a French company data toolkit — they chain together nicely:

- **French Legal Notices Scraper (Mentions Légales)** — extract existing legal notices from any French website (audit before you fix).
- **French Company Data Enricher (SIREN, Dirigeants)** — full official company profiles in bulk.
- **New French Companies Finder (SIRENE)** — fresh leads: newly registered companies by department/NAF.
- **EU VAT Number Validator (VIES)** — validate any EU VAT number for invoicing compliance.
- **French Collective Agreement Finder (IDCC by SIRET)** — HR/payroll compliance data.
- **Bulk Email Verifier & List Cleaner** — clean your outreach lists.

See the full list on this developer profile.

# Actor input Schema

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

One French company identifier per line: a 9-digit SIREN or a 14-digit SIRET. One legal notice is generated per identifier. Spaces, dots and dashes are tolerated.

## `websiteUrl` (type: `string`):

The website the legal notice is for. Shown in the notice title. Optional.

## `hostName` (type: `string`):

Name of the hosting company (required by the LCEN law). Example: OVH SAS, o2switch, Ionos.

## `hostAddress` (type: `string`):

Postal address of the hosting company (required by the LCEN law).

## `hostPhone` (type: `string`):

Phone number of the hosting company (required by the LCEN law).

## `contactEmail` (type: `string`):

Public contact e-mail of the website publisher. If omitted, a placeholder is inserted.

## `contactPhone` (type: `string`):

Public contact phone of the website publisher. Optional.

## `publicationDirector` (type: `string`):

If omitted, the actor tries to pick the president / gérant / CEO from official registry data, or inserts a placeholder.

## `shareCapital` (type: `string`):

Example: "10 000 €". The share capital is not available in open data — if omitted, a placeholder is inserted. Not used for sole traders and associations.

## `includeExtendedSections` (type: `boolean`):

Also generate the standard 'Propriété intellectuelle', 'Données personnelles (RGPD)' and 'Responsabilité' sections.

## Actor input object example

```json
{
  "queries": [
    "356000000"
  ],
  "websiteUrl": "https://www.example.fr",
  "hostName": "OVH SAS",
  "hostAddress": "2 rue Kellermann, 59100 Roubaix, France",
  "hostPhone": "+33 9 72 10 10 07",
  "includeExtendedSections": true
}
```

# 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": [
        "356000000"
    ],
    "websiteUrl": "https://www.example.fr",
    "hostName": "OVH SAS",
    "hostAddress": "2 rue Kellermann, 59100 Roubaix, France",
    "hostPhone": "+33 9 72 10 10 07"
};

// Run the Actor and wait for it to finish
const run = await client.actor("fit_melon/french-legal-notice-generator-lcen").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": ["356000000"],
    "websiteUrl": "https://www.example.fr",
    "hostName": "OVH SAS",
    "hostAddress": "2 rue Kellermann, 59100 Roubaix, France",
    "hostPhone": "+33 9 72 10 10 07",
}

# Run the Actor and wait for it to finish
run = client.actor("fit_melon/french-legal-notice-generator-lcen").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 '{
  "queries": [
    "356000000"
  ],
  "websiteUrl": "https://www.example.fr",
  "hostName": "OVH SAS",
  "hostAddress": "2 rue Kellermann, 59100 Roubaix, France",
  "hostPhone": "+33 9 72 10 10 07"
}' |
apify call fit_melon/french-legal-notice-generator-lcen --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fit_melon/french-legal-notice-generator-lcen",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "French Legal Notice Generator (Mentions Légales)",
        "description": "Generate LCEN-compliant French legal notices (mentions légales) as ready-to-paste HTML from a SIREN or SIRET. Official data (legal form, address, RCS, VAT number, director) auto-filled from the French government registry. Free — perfect for web agencies. Générateur de mentions légales.",
        "version": "0.0",
        "x-build-id": "6yruQWdcC4kNtoh86"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fit_melon~french-legal-notice-generator-lcen/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fit_melon-french-legal-notice-generator-lcen",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fit_melon~french-legal-notice-generator-lcen/runs": {
            "post": {
                "operationId": "runs-sync-fit_melon-french-legal-notice-generator-lcen",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fit_melon~french-legal-notice-generator-lcen/run-sync": {
            "post": {
                "operationId": "run-sync-fit_melon-french-legal-notice-generator-lcen",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "SIREN or SIRET numbers",
                        "type": "array",
                        "description": "One French company identifier per line: a 9-digit SIREN or a 14-digit SIRET. One legal notice is generated per identifier. Spaces, dots and dashes are tolerated.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "websiteUrl": {
                        "title": "Website URL",
                        "type": "string",
                        "description": "The website the legal notice is for. Shown in the notice title. Optional."
                    },
                    "hostName": {
                        "title": "Hosting provider name",
                        "type": "string",
                        "description": "Name of the hosting company (required by the LCEN law). Example: OVH SAS, o2switch, Ionos."
                    },
                    "hostAddress": {
                        "title": "Hosting provider address",
                        "type": "string",
                        "description": "Postal address of the hosting company (required by the LCEN law)."
                    },
                    "hostPhone": {
                        "title": "Hosting provider phone",
                        "type": "string",
                        "description": "Phone number of the hosting company (required by the LCEN law)."
                    },
                    "contactEmail": {
                        "title": "Contact e-mail",
                        "type": "string",
                        "description": "Public contact e-mail of the website publisher. If omitted, a placeholder is inserted."
                    },
                    "contactPhone": {
                        "title": "Contact phone",
                        "type": "string",
                        "description": "Public contact phone of the website publisher. Optional."
                    },
                    "publicationDirector": {
                        "title": "Publication director (directeur de la publication)",
                        "type": "string",
                        "description": "If omitted, the actor tries to pick the president / gérant / CEO from official registry data, or inserts a placeholder."
                    },
                    "shareCapital": {
                        "title": "Share capital (capital social)",
                        "type": "string",
                        "description": "Example: \"10 000 €\". The share capital is not available in open data — if omitted, a placeholder is inserted. Not used for sole traders and associations."
                    },
                    "includeExtendedSections": {
                        "title": "Include extended sections",
                        "type": "boolean",
                        "description": "Also generate the standard 'Propriété intellectuelle', 'Données personnelles (RGPD)' and 'Responsabilité' sections.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
