# Nos Deputes France Parliament Scraper (`parseforge/nosdeputes-france-parliament-scraper`) Actor

Export French National Assembly deputies from nosdeputes.fr. Pull names, parliamentary group, constituency, contact details, social media, attendance metrics, interventions, and activity scores. List mode walks all sitting deputies; single mode fetches one detailed profile by slug.

- **URL**: https://apify.com/parseforge/nosdeputes-france-parliament-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business, Other, Education
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.00 / 1,000 result items

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

Learn more: https://docs.apify.com/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.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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🇫🇷 Nos Deputes France Parliament Scraper

> 🚀 **Export the French National Assembly in seconds.** Pull every sitting deputy with bio, parliamentary group, constituency, contact details, social media, attendance metrics, interventions, and activity scores. No API key, no scraping pipeline, no manual CSV stitching.

> 🕒 **Last updated:** 2026-05-22 · **📊 30 fields** per record · **🏛️ 577 deputies** · **🇫🇷 Assemblée nationale** · **📊 Voting + attendance + interventions**

The **Nos Deputes France Parliament Scraper** taps the official nosdeputes.fr civic-tech feed and returns **30 structured fields per record**, including full name, sex, birth date and place, profession, parliamentary group, constituency, department, mandate dates, contact emails, websites, Twitter handle, collaborators, hemicycle interventions, amendments proposed, oral and written questions, committee reports, and weeks of presence.

The catalog covers **all 577 currently seated deputies** of the French National Assembly with rich attendance and activity metrics. The Actor turns it into a clean dataset downloadable as CSV, Excel, JSON, or XML in under a minute.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Political analysts, government affairs & lobbyists, civic-tech builders, journalists, researchers, NGOs | Lobbying CRM enrichment, political analysis, civic transparency tools, journalism investigations, voting-pattern research, contact directory building |

---

### 📋 What the Nos Deputes Scraper does

Two collection workflows in a single run:

- 🇫🇷 **Roster walk.** List every sitting deputy in the Assemblée nationale with full profile and activity stats.
- 🎯 **Single deputy fetch.** Retrieve one deputy's full record by URL slug for targeted enrichment.
- 📊 **Attendance & activity metrics.** Weeks of presence, hemicycle interventions, written and oral questions, amendments proposed and adopted, committee reports.
- 📞 **Contact capture.** Official email addresses, websites, Twitter handles, and named parliamentary collaborators.
- 🗺️ **Geography.** Constituency name, department code, circonscription number, and constituency address.

Each record includes biographical data (name, sex, birth date and place, profession), political affiliation (parliamentary group, mandate dates, mandates count), constituency (department, circonscription), contact channels, and activity metrics that quantify each deputy's parliamentary engagement.

> 💡 **Why it matters:** political analysts, lobbyists, and journalists track the Assemblée nationale constantly, but the official site is built for browsing one deputy at a time. This Actor turns the entire roster into a single downloadable spreadsheet you can sort by activity, filter by group, or pivot by department in minutes.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>mode</code></td><td>enum</td><td><code>"list"</code></td><td><code>list</code> walks all current deputies, <code>single</code> fetches one by slug.</td></tr>
<tr><td><code>depute</code></td><td>string</td><td>empty</td><td>Deputy slug from the URL (e.g. <code>"yael-braun-pivet"</code>). Required in single mode.</td></tr>
<tr><td><code>search</code></td><td>string</td><td>empty</td><td>Optional case-insensitive name substring filter applied in list mode.</td></tr>
</tbody>
</table>

**Example: full roster walk.**

```json
{
    "maxItems": 577,
    "mode": "list"
}
````

**Example: filtered list of deputies named "Le ".**

```json
{
    "maxItems": 50,
    "mode": "list",
    "search": "Le "
}
```

> ⚠️ **Good to Know:** activity metrics (weeks present, interventions, amendments) reflect the current legislature only. Deputies with very short tenure or who joined mid-session will show lower counts purely because they have been in the Assembly for less time. Always interpret raw counts alongside mandate start date.

***

### 📊 Output

Each deputy record contains up to **30 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🏷️ `slug` | string | `"yael-braun-pivet"` |
| 👤 `fullName` | string | `"Yaël Braun-Pivet"` |
| ⚧️ `sex` | string | `"F"` |
| 🎂 `birthDate` | ISO date | `"1970-12-07"` |
| 📍 `birthPlace` | string | `"Nancy"` |
| 💼 `profession` | string | `"Avocate"` |
| 🏛️ `group` | string | `"Ensemble pour la République"` |
| 🏷️ `groupShort` | string | `"EPR"` |
| 🗺️ `constituency` | string | `"Yvelines (5e circonscription)"` |
| 📍 `department` | string | `"Yvelines"` |
| 🔢 `departmentCode` | string | `"78"` |
| 🔢 `circo` | string | `"5"` |
| 📅 `mandateStart` | ISO date | `"2024-07-18"` |
| 📅 `mandateEnd` | ISO date | null | `null` |
| 📧 `emails` | array | `["contact@..."]` |
| ☎️ `phones` | array | `["01 23 45 67 89"]` |
| 🌐 `websites` | array | `["https://..."]` |
| 🐦 `twitter` | string | null | `"YaelBRAUNPIVET"` |
| 👥 `collaborators` | array | `["Jean Dupont", "..."]` |
| 🎙️ `interventionsCount` | number | `412` |
| 📝 `amendmentsCount` | number | `156` |
| ❓ `questionsCount` | number | `34` |
| 📑 `reportsCount` | number | `2` |
| 🗓️ `presenceWeeks` | number | `45` |
| ✅ `semaineDernierePresent` | boolean | `true` |
| 🔗 `profileUrl` | string | `"https://www.nosdeputes.fr/yael-braun-pivet"` |
| 🖼️ `photoUrl` | string | `"https://.../photo/yael-braun-pivet/120"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-22T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>🏛️ Assembly President: Yaël Braun-Pivet</strong></summary>

```json
{
    "slug": "yael-braun-pivet",
    "fullName": "Yaël Braun-Pivet",
    "sex": "F",
    "birthDate": "1970-12-07",
    "birthPlace": "Nancy",
    "profession": "Avocate",
    "group": "Ensemble pour la République",
    "groupShort": "EPR",
    "constituency": "Yvelines (5e circonscription)",
    "departmentCode": "78",
    "circo": "5",
    "mandateStart": "2024-07-18",
    "mandateEnd": null,
    "emails": ["yael.braun-pivet@assemblee-nationale.fr"],
    "websites": ["https://yaelbraunpivet.com"],
    "twitter": "YaelBRAUNPIVET",
    "interventionsCount": 412,
    "amendmentsCount": 156,
    "questionsCount": 34,
    "reportsCount": 2,
    "presenceWeeks": 45,
    "profileUrl": "https://www.nosdeputes.fr/yael-braun-pivet",
    "photoUrl": "https://www.nosdeputes.fr/depute/photo/yael-braun-pivet/120",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🌹 Socialist group deputy</strong></summary>

```json
{
    "slug": "olivier-faure",
    "fullName": "Olivier Faure",
    "sex": "M",
    "birthDate": "1968-08-18",
    "birthPlace": "Helsinki",
    "profession": "Cadre",
    "group": "Socialistes et apparentés",
    "groupShort": "SOC",
    "constituency": "Seine-et-Marne (11e circonscription)",
    "departmentCode": "77",
    "circo": "11",
    "mandateStart": "2024-07-18",
    "mandateEnd": null,
    "twitter": "faureolivier",
    "interventionsCount": 289,
    "amendmentsCount": 412,
    "questionsCount": 27,
    "reportsCount": 1,
    "presenceWeeks": 43,
    "profileUrl": "https://www.nosdeputes.fr/olivier-faure",
    "photoUrl": "https://www.nosdeputes.fr/depute/photo/olivier-faure/120",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🇫🇷 Rassemblement National deputy</strong></summary>

```json
{
    "slug": "marine-le-pen",
    "fullName": "Marine Le Pen",
    "sex": "F",
    "birthDate": "1968-08-05",
    "birthPlace": "Neuilly-sur-Seine",
    "profession": "Avocate",
    "group": "Rassemblement National",
    "groupShort": "RN",
    "constituency": "Pas-de-Calais (11e circonscription)",
    "departmentCode": "62",
    "circo": "11",
    "mandateStart": "2024-07-18",
    "mandateEnd": null,
    "twitter": "MLP_officiel",
    "interventionsCount": 67,
    "amendmentsCount": 12,
    "questionsCount": 8,
    "reportsCount": 0,
    "presenceWeeks": 28,
    "profileUrl": "https://www.nosdeputes.fr/marine-le-pen",
    "photoUrl": "https://www.nosdeputes.fr/depute/photo/marine-le-pen/120",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🇫🇷 | **Complete Assemblée nationale roster.** All 577 sitting deputies in a single run. |
| 📊 | **Activity metrics included.** Interventions, amendments, questions, reports, and weeks-present per deputy. |
| 📞 | **Contact directory ready.** Emails, websites, Twitter handles, and named collaborators. |
| 🗺️ | **Geography and circonscription.** Department code, constituency name, and circo number. |
| 🏛️ | **Group affiliation.** Both short (RN, EPR, SOC) and long-form group names. |
| 🔁 | **Always fresh.** Every run reflects the current legislature in real time. |
| 🚫 | **No authentication.** Works on the public civic-tech data feed. No API key needed. |

> 📊 The Assemblée nationale is the most-watched legislative body in France. This Actor turns the entire roster into a queryable dataset ready for analysis.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ Nos Deputes Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **577 deputies** | **Live per run** | Name filter, single slug | ⚡ 2 min |
| Build your own client | Free | Up to you | Manual | Up to you | 🐢 Days |
| Commercial political-intel vendors | $$$ | Curated subset | Variable | Vendor-defined | ⏳ Hours |
| Manual portal browsing | Free | One at a time | Manual | UI search | 🕒 Endless |

Pick this Actor when you want a structured snapshot of the entire French Assembly without writing a custom client.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the Nos Deputes France Parliament Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick list mode for a full roster or single mode with a slug, plus `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🎯 Government Affairs & Lobbying

- Map stakeholders by parliamentary group
- Build outreach lists with emails and collaborators
- Track committee membership and activity
- Prioritize engagement by activity score

</td>
<td width="50%" valign="top">

#### 📰 Political Journalism

- Compare attendance and intervention metrics
- Surface most-active and least-active deputies
- Track group affiliation changes over time
- Build candidate profiles ahead of elections

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🏛️ Civic Tech & Transparency

- Power public-facing legislator directories
- Build constituency-lookup tools for citizens
- Publish open dashboards on parliamentary work
- Feed parliamentary monitoring platforms

</td>
<td width="50%" valign="top">

#### 🔬 Political Science Research

- Quantitative studies on legislative behavior
- Cross-group comparisons of activity patterns
- Career-trajectory analyses with mandate dates
- Reproducible datasets for academic papers

</td>
</tr>
</table>

***

### 🔌 Automating Nos Deputes Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Weekly refreshes keep lobbying CRMs and civic dashboards in sync automatically.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Political-science theses with reproducible data
- Quantitative legislative-behavior studies
- Course exercises on French institutional analysis
- Cross-country parliamentary comparisons

</td>
<td width="50%">

#### 🎨 Personal and creative

- Civic-engagement side projects
- Constituency-lookup widgets for personal sites
- Political-dataviz portfolios
- Content research for French political blogs

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- NGO advocacy campaign targeting
- Citizen-engagement and constituency outreach tools
- Investigative journalism on parliamentary work
- Civic literacy and education projects

</td>
<td width="50%">

#### 🧪 Experimentation

- Train classification models on group affiliation
- Prototype legislator-recommendation systems
- Validate civic-app concepts with real data
- Build text-analysis pipelines over interventions

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20Nos%20Deputes%20France%20Parliament%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20Nos%20Deputes%20France%20Parliament%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20Nos%20Deputes%20France%20Parliament%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20Nos%20Deputes%20France%20Parliament%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Pick list mode for the full roster or single mode for one deputy by slug. The Actor pulls the civic-tech feed and emits one clean structured record per deputy, including activity metrics and contact details.

#### 🇫🇷 How many deputies are covered?

All 577 currently seated deputies of the French National Assembly. The roster updates whenever a deputy enters or leaves office.

#### 📊 What activity metrics are included?

Hemicycle interventions (long and short), amendments proposed, written and oral questions, committee reports, committee interventions and presences, and weeks of attendance in the current legislature.

#### 📞 Does it return contact details?

Yes. Official emails, websites, Twitter handles, and named parliamentary collaborators are returned where the deputy has published them.

#### 🔁 How fresh is the data?

The civic-tech feed updates continuously as deputies log interventions and questions. Every run of this Actor fetches the latest state in real time.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (weekly is common) and keep a downstream lobbying CRM or civic dashboard in sync.

#### ⚖️ Is this data legal to use?

The underlying data comes from a civic-tech transparency project that mirrors publicly available parliamentary information. Always review the source terms for your specific application before commercial reuse.

#### 💼 Can I use this data commercially?

Yes for many use cases, including lobbying CRMs, political-intelligence services, and journalism. Check the upstream terms before redistributing the raw data verbatim.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you access to scheduling and the full 577-deputy roster.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, you can inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved so you never lose progress.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

Nos Deputes Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe deputy records into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh roster data into your CRM, or alert your team in Slack.

***

### 🔗 Recommended Actors

- [**🍁 Canada Open Data Scraper**](https://apify.com/parseforge/canada-open-data-scraper) - Canadian federal open dataset catalog
- [**🦘 Australia Open Data Scraper**](https://apify.com/parseforge/australia-data-gov-au-scraper) - data.gov.au federal, state, and territory dataset catalog
- [**🏢 ABR Australian Business Register Scraper**](https://apify.com/parseforge/abr-australian-business-register-scraper) - 7M+ Australian business records
- [**🧬 Name Demographics Scraper**](https://apify.com/parseforge/agify-name-demographics-scraper) - Predict age, gender, and nationality from names
- [**📈 Indexmundi Scraper**](https://apify.com/parseforge/indexmundi-scraper) - Global demographic and economic indicators

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by nosdeputes.fr, the Assemblée nationale, the French government, or any political party. All trademarks mentioned are the property of their respective owners. Only publicly available parliamentary transparency data is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

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

List walks all current deputies. Single fetches one deputy by slug.

## `depute` (type: `string`):

Deputy slug from the URL, e.g. 'yael-braun-pivet'. Required in single mode.

## `search` (type: `string`):

Optional case-insensitive substring filter on deputy names in list mode.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "list"
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "mode": "list"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/nosdeputes-france-parliament-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 = {
    "maxItems": 10,
    "mode": "list",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/nosdeputes-france-parliament-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 '{
  "maxItems": 10,
  "mode": "list"
}' |
apify call parseforge/nosdeputes-france-parliament-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Nos Deputes France Parliament Scraper",
        "description": "Export French National Assembly deputies from nosdeputes.fr. Pull names, parliamentary group, constituency, contact details, social media, attendance metrics, interventions, and activity scores. List mode walks all sitting deputies; single mode fetches one detailed profile by slug.",
        "version": "1.0",
        "x-build-id": "zKV0gWGTrY3YWwJBs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~nosdeputes-france-parliament-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-nosdeputes-france-parliament-scraper",
                "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/parseforge~nosdeputes-france-parliament-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-nosdeputes-france-parliament-scraper",
                "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/parseforge~nosdeputes-france-parliament-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-nosdeputes-france-parliament-scraper",
                "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",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "list",
                            "single"
                        ],
                        "type": "string",
                        "description": "List walks all current deputies. Single fetches one deputy by slug."
                    },
                    "depute": {
                        "title": "Deputy Slug",
                        "type": "string",
                        "description": "Deputy slug from the URL, e.g. 'yael-braun-pivet'. Required in single mode."
                    },
                    "search": {
                        "title": "Name Filter",
                        "type": "string",
                        "description": "Optional case-insensitive substring filter on deputy names in list mode."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
