# 📋 France AMF Insider Trades — Déclarations Dirigeants Tracker (`nexgendata/france-amf-insider-trades`) Actor

Pull French executive insider trades from AMF (Autorité des Marchés Financiers) BDIF register of Déclarations dirigeants. CAC40 + SBF120. Issuer / declarant / role / qty / price / venue. EU MAR Art. 19 + L621-18-2. Bloomberg European insider tracker alternative.

- **URL**: https://apify.com/nexgendata/france-amf-insider-trades.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 amf dirigeants declarations

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 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## 📋 France AMF Insider Trades — Déclarations Dirigeants Tracker

**Every CEO, CFO, and board-member trade in their own company's shares — direct from the Autorité des Marchés Financiers.** Pull machine-readable executive insider transactions from the AMF BDIF public register of `Déclarations dirigeants`. Under EU Market Abuse Regulation Article 19 and French Code monétaire et financier L621-18-2, every senior officer of a listed French issuer must report personal trades within 3 business days. The AMF publishes them in BDIF; we make them queryable, structured, and joinable to your portfolio. **insider-transaction data for the French market — Carmignac, Comgest, Mirabaud, and Paris activist desks pay $24,000+ for a Bloomberg Terminal to read the same data.**

This actor focuses on **France-only** by design. EU-wide insider tracking is fragmented across 27 National Competent Authorities (BaFin in Germany, CNMV in Spain, Consob in Italy, etc.) — each with its own portal, schema, and access controls. AMF is the largest single-jurisdiction source by volume after the UK FCA, with consistent coverage of CAC40 + SBF120 + Euronext Growth. Single-source focus = clean, deduplicated, joinable data.

---

### Why this actor beats the alternatives

| Feature | This Actor | Bloomberg European Insider | Refinitiv Corporate Insider | Quiver Quantitative | Insider Monkey |
|---|---|---|---|---|---|
| **France coverage** | ALL CAC40 + SBF120 + Euronext Growth (~700 issuers) | Bloomberg-licensed coverage | Refinitiv-licensed coverage | ❌ US only | ❌ US only |
| **EU jurisdiction** | France (focused, deep) | EU-wide via consolidated feed | EU-wide via Eikon | ❌ | ❌ |
| **Refresh latency** | Real-time (within hours of AMF publication) | T+1 | T+1 | N/A | N/A |
| **Pricing** | Pay-per-declaration ($0.10 / record) | Bloomberg Terminal ($24K/yr) | Refinitiv Workspace ($22K/yr) | $50/mo subscription | Free/freemium |
| **Filter by issuer ISIN** | ✅ Multi-ISIN supported | ✅ | ✅ | N/A | N/A |
| **Filter by date range** | ✅ daysBack window | ✅ | ✅ | N/A | N/A |
| **Transaction nature** (buy / sell / option / etc.) | ✅ Normalized | ✅ | ✅ | N/A | N/A |
| **Declarant role** (CEO / CFO / Director / etc.) | ✅ | ✅ | ✅ | N/A | N/A |
| **Total amount + unit price** | ✅ | ✅ | ✅ | N/A | N/A |
| **Output format** | JSON / CSV / Excel | Excel / Bloomberg API | Excel / Workspace API | API | Web only |
| **API / scriptable** | ✅ REST + SDK | Limited (BLP) | Limited (Workspace) | ✅ | ❌ |
| **Setup time** | < 1 minute | 4-8 weeks | 4-8 weeks | 1 day | N/A |
| **Source** | AMF BDIF (primary) | AMF + Bloomberg overlay | AMF + Refinitiv overlay | N/A | N/A |

---

### What you get

Every dataset item is a single executive declaration with these fields:

* **Filing identifiers:** `declaration_id`, `publication_date`, `transaction_date`
* **Issuer:** `issuer_name`, `issuer_isin`, `issuer_mic` (Euronext / Euronext Growth / etc.)
* **Declarant (person reporting):** `declarant_name`, `declarant_role` (Président du Directoire / Directeur Général / Administrateur / etc.)
* **Instrument:** `instrument_class` (Actions / Stock options / BSA / Performance shares / etc.)
* **Transaction:** `transaction_nature` (Acquisition / Cession / Souscription / Exercice / Attribution gratuite / etc.), `transaction_quantity`, `transaction_unit_price`, `transaction_total_amount`, `transaction_currency` (default EUR), `transaction_venue` (XPAR / XAMS / OTC / etc.)
* **Audit trail:** `data_source`, `_source_url` (direct BDIF detail-page link)

Every field is normalized — no parsing free-text "Acquisition d'actions" vs "Achat d'actions" vs "ACQUI" across thousands of declarations.

---

### Use cases

* **French / European event-driven hedge funds** (Carmignac, Comgest, Mirabaud) — track CEO/CFO buying clusters as a leading indicator on the next earnings beat
* **Paris-based sell-side research desks** — Kepler Cheuvreux, Oddo BHF, Société Générale equity research — augment fundamental coverage with insider-trade overlays
* **EU-focused activist trackers** — Bluebell Capital, Petrus Advisers — see when board members start buying on weakness, infer activist accumulation pre-13D
* **Family offices with French equity exposure** — get the same insider-transaction data that the big institutions read, without paying for a Bloomberg seat
* **Corporate IR teams** — monitor your own board's filings for compliance audit, get notified if a Section 19 deadline is approaching
* **Compliance / surveillance teams at French brokers** — automated cross-check of employer-traded names against the AMF dirigeants register
* **Academic finance researchers** — replicate published studies on insider-trade abnormal returns (Cohen / Malloy / Pomorski, Lakonishok / Lee) with French panel data

---

### Quick start

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")

run = client.actor("nexgendata/france-amf-insider-trades").call(
    run_input={
        "mode": "recent",
        "daysBack": 14,
        "maxDeclarations": 100,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"],
            "apifyProxyCountry": "FR",
        },
    }
)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(
        item["publication_date"], "|",
        item["issuer_name"], "|",
        item["declarant_name"], "(", item["declarant_role"], ")|",
        item["transaction_nature"],
        item["transaction_quantity"], "@",
        item["transaction_unit_price"], item["transaction_currency"],
    )
````

#### Modes

- `recent` — scan all dirigeants declarations filed in the last `daysBack` days (default 14). Best for weekly watchlist pulls.
- `by_isin` — filter to one or more issuer ISINs. Required when tracking specific companies. Examples: `FR0000131104` (BNP Paribas), `FR0000120271` (TotalEnergies), `FR0000133308` (Orange).

#### Important: Geo-restricted source

The AMF BDIF API blocks requests from non-French IP ranges with HTTP 500. **You MUST use Apify RESIDENTIAL proxy with `apifyProxyCountry: FR`** for the actor to retrieve any data. The default proxy configuration is already set correctly — leave it as-is unless you have a specific reason to override.

If the AMF blocks even FR residential traffic (rare but possible during portal updates), the actor exits gracefully with a `source_blocked` status item — your run won't crash and won't burn billing events on holding records that never materialized.

***

### Pricing — premium institutional tier

This actor uses **Pay-Per-Event** billing:

| Event | Price |
|---|---|
| Actor start | **$0.005** per run |
| Dirigeants declaration | **$0.10** per record returned |

Typical query costs:

- **Weekly watchlist pull** (50-150 declarations) — **$5–$15**
- **Single-issuer 12-month audit** (10-100 declarations) — **$1–$10**
- **Quarterly CAC40 sweep** (~500 declarations) — **$50**
- **Smoke-test query** (`maxDeclarations: 20`) — **$2.00**

We recommend setting a daily account cap of **$100 / 1,000 declarations** to bound spend on accidental large pulls.

Compared with a Bloomberg Terminal seat ($24,000/yr) or a Refinitiv Workspace subscription, a $15/week watchlist pull is **~99% cheaper** for the same France insider-transaction data.

***

### Related actors from NexGenData

Cross-reference French insider trades with US and global filings, holdings, and corporate events:

| Actor | What it does |
|---|---|
| [SEC Form 4 Insider Tracker](https://apify.com/nexgendata/sec-form4-insider-tracker) | US equivalent — Section 16 officer / director / 10%-owner buys & sells |
| [SEC Form 13F Holdings Tracker](https://apify.com/nexgendata/sec-form-13f-holdings-tracker) | Quarterly institutional manager holdings (US) |
| [SEC Form N-PORT Mutual Fund Holdings](https://apify.com/nexgendata/sec-form-nport-mutual-fund-holdings) | Mutual fund portfolio holdings (US) |
| [SEC Schedule 13D/G Activist Tracker](https://apify.com/nexgendata/sec-schedule-13dg-activist-tracker) | 5%+ activist filings (US) |
| [Australia ASIC Form 605 Substantial Holdings](https://apify.com/nexgendata/australia-asic-form-605-substantial-holdings) | ASX 5% substantial-holder disclosures |
| [Insider Cluster Detector](https://apify.com/nexgendata/insider-cluster-detector) | Multi-insider buying clusters across markets |
| [Corporate Actions Tracker](https://apify.com/nexgendata/corporate-actions-tracker) | Dividends, splits, M\&A, spinoffs |
| [Analyst Targets Scraper](https://apify.com/nexgendata/analyst-targets-scraper) | Wall Street price targets + rating changes |

The whole NexGenData fleet — 200+ premium financial / governance / market actors at [apify.com/nexgendata](https://apify.com/nexgendata).

***

### FAQ

**Q: Is this real AMF data, or a third-party aggregator?**
A: 100% primary-source AMF BDIF. We hit the official AMF JSON search endpoint at `https://bdif.amf-france.org/api/v1/informations`. There is no third-party rewrite layer. Your `_source_url` field points at the exact BDIF detail page.

**Q: How current is the data?**
A: AMF publishes Déclarations dirigeants within 3 business days of the trade per MAR Art. 19 deadline. Our `recent` mode surfaces them within hours of AMF publication.

**Q: Why is the proxy required?**
A: The AMF BDIF API restricts access to French (and some EU) IP ranges — direct requests from US / Asia / non-EU data center IPs return HTTP 500 "URL has been blocked". Apify RESIDENTIAL proxy with `apifyProxyCountry: FR` solves this. The default proxy configuration is set up correctly.

**Q: What if AMF blocks even FR residential traffic?**
A: The actor exits gracefully with a `source_blocked` status item — your run won't crash and won't burn billing events on records that never returned. Contact `support@thenextgennexus.com` if you see persistent geo-blocks and we'll investigate alternative routing.

**Q: Why France-only and not EU-wide?**
A: EU-wide insider tracking is fragmented across 27 National Competent Authorities (BaFin, CNMV, Consob, AFM, etc.) — each with its own portal, JSON schema, rate limits, and access controls. Building a single "EU insider" actor would require maintaining 27 separate scrapers. AMF is the largest single-jurisdiction source by volume after the FCA, with the cleanest API. Single-source focus = clean, deduplicated, joinable data. If you need other jurisdictions, contact us — we have UK FCA, German BaFin, and Italian Consob actors in development.

**Q: How do you handle the various transaction nature codes?**
A: Acquisition (achat sur le marché), Cession (vente), Souscription (subscription on rights issue), Exercice (option exercise), Attribution gratuite (free share grant), Donation, and various derivative-based codes are exposed as-is in `transaction_nature`. We don't collapse them into a generic buy/sell flag because the distinction matters for indicator analysis (an option exercise is not the same indicator as an open-market buy).

**Q: What about declarations with no published unit price or total amount?**
A: Some declarations (especially attribution gratuite / free-grant) have null prices and totals — the actor preserves the null so you can filter them out. Open-market buys and sells always carry a price.

**Q: Can I get this data exported to Snowflake / BigQuery / S3?**
A: Yes. Apify's scheduled-run + dataset export to S3 / GCS / Snowflake is built in. Set up a daily scheduled task (the AMF publishes throughout the day) and the data lands in your warehouse with no glue code.

**Q: Are records deduplicated within a run?**
A: Yes — per `declaration_id`. Re-running the same query will not produce duplicate dataset rows for the same declaration.

**Q: Why is the per-record price $0.10?**
A: France insider-trade data is a buyer pool that pays $20K-$25K/year for a Bloomberg Terminal seat to access. The $0.10 / record price keeps the actor affordable for one-off compliance audits ($10 covers 100 declarations) while preserving margin on weekly-watchlist subscriptions that institutions pay premium prices for. Compared to a Bloomberg Terminal, you'll break even on the first focused query.

***

### About NexGenData

NexGenData publishes 200+ premium financial-data, governance, and market actors on Apify — every major global financial filing, market data feed, fund holdings, insider activity, and corporate-events source, all with consistent pay-per-event pricing and full audit trails to the primary regulator.

Browse the full fleet: [apify.com/nexgendata](https://apify.com/nexgendata)

Contact: contact@thenextgennexus.com

***

*The Autorité des Marchés Financiers (AMF) is the French independent public authority that regulates financial markets. Declarations dirigeants are mandated by EU Regulation 596/2014 (MAR) Article 19 and French Code monétaire et financier L621-18-2. This actor reproduces the public record. No subscription is required to view AMF filings at bdif.amf-france.org; this product exists to make the data machine-readable, queryable, and reliably structured at institutional scale.*

*Factual public data — not financial or investment advice.*

# Actor input Schema

## `mode` (type: `string`):

Which slice to scan. `recent` walks all dirigeants declarations filed in the last `daysBack` days. `by_isin` filters to one or more issuer ISINs (e.g. FR0000131104 for BNP Paribas).

## `daysBack` (type: `integer`):

Look at declarations published within the last N days. Only used when `mode=recent`. The AMF publishes ~50-200 dirigeants declarations per week across CAC40 + SBF120.

## `isins` (type: `array`):

List of issuer ISINs to filter on. Required when `mode=by_isin`. Examples: `FR0000131104` (BNP Paribas), `FR0000120271` (Total Energies), `FR0000133308` (Orange). Also accepts a comma-separated string under aliases `isin`, `tickers`, `issuers`.

## `maxDeclarations` (type: `integer`):

Hard cap on total declaration records pushed (and metered for billing). A typical CAC40 issuer files 1-10 declarations per week.

## `proxyConfiguration` (type: `object`):

Apify proxy configuration. The AMF BDIF API blocks non-French IPs with HTTP 500. You MUST use Apify RESIDENTIAL proxy with `apifyProxyCountry: FR` for the actor to retrieve any data. The default below is correct — leave it as-is unless you have a specific reason to change it.

## Actor input object example

```json
{
  "mode": "recent",
  "daysBack": 14,
  "isins": [
    "FR0000131104"
  ],
  "maxDeclarations": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  }
}
```

# 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 = {
    "mode": "recent",
    "daysBack": 14,
    "isins": [
        "FR0000131104"
    ],
    "maxDeclarations": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "FR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/france-amf-insider-trades").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 = {
    "mode": "recent",
    "daysBack": 14,
    "isins": ["FR0000131104"],
    "maxDeclarations": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "FR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/france-amf-insider-trades").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 '{
  "mode": "recent",
  "daysBack": 14,
  "isins": [
    "FR0000131104"
  ],
  "maxDeclarations": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  }
}' |
apify call nexgendata/france-amf-insider-trades --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/france-amf-insider-trades",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "📋 France AMF Insider Trades — Déclarations Dirigeants Tracker",
        "description": "Pull French executive insider trades from AMF (Autorité des Marchés Financiers) BDIF register of Déclarations dirigeants. CAC40 + SBF120. Issuer / declarant / role / qty / price / venue. EU MAR Art. 19 + L621-18-2. Bloomberg European insider tracker alternative.",
        "version": "0.0",
        "x-build-id": "PoWSnuVW1we2tWNI2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~france-amf-insider-trades/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-france-amf-insider-trades",
                "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/nexgendata~france-amf-insider-trades/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-france-amf-insider-trades",
                "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/nexgendata~france-amf-insider-trades/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-france-amf-insider-trades",
                "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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Query mode",
                        "enum": [
                            "recent",
                            "by_isin"
                        ],
                        "type": "string",
                        "description": "Which slice to scan. `recent` walks all dirigeants declarations filed in the last `daysBack` days. `by_isin` filters to one or more issuer ISINs (e.g. FR0000131104 for BNP Paribas).",
                        "default": "recent"
                    },
                    "daysBack": {
                        "title": "Days back",
                        "minimum": 1,
                        "maximum": 365,
                        "type": "integer",
                        "description": "Look at declarations published within the last N days. Only used when `mode=recent`. The AMF publishes ~50-200 dirigeants declarations per week across CAC40 + SBF120.",
                        "default": 14
                    },
                    "isins": {
                        "title": "Issuer ISIN(s)",
                        "type": "array",
                        "description": "List of issuer ISINs to filter on. Required when `mode=by_isin`. Examples: `FR0000131104` (BNP Paribas), `FR0000120271` (Total Energies), `FR0000133308` (Orange). Also accepts a comma-separated string under aliases `isin`, `tickers`, `issuers`.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxDeclarations": {
                        "title": "Max declaration records",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on total declaration records pushed (and metered for billing). A typical CAC40 issuer files 1-10 declarations per week.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. The AMF BDIF API blocks non-French IPs with HTTP 500. You MUST use Apify RESIDENTIAL proxy with `apifyProxyCountry: FR` for the actor to retrieve any data. The default below is correct — leave it as-is unless you have a specific reason to change it.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "FR"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
