# Global Parliamentary Data Scraper (`renoven/global-parliamentary-data-scraper`) Actor

Collect official parliamentary bills, debates, reports and votes across Europe and the US. Get normalized records with dates and source links, ready for JSON, CSV or Excel export. Congress.gov requires an API key.

- **URL**: https://apify.com/renoven/global-parliamentary-data-scraper.md
- **Developed by:** [Reno](https://apify.com/renoven) (community)
- **Categories:** News, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 1,000 parliamentary records

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Global Parliamentary Data Scraper

Collect normalized political and parliamentary data from official sources in European countries (France, Denmark, Ireland, the Netherlands, Poland, Austria, Estonia, Italy, Lithuania, Portugal, Slovakia, Spain, Czechia, Finland, Sweden, Greece, Croatia, the United Kingdom, and Germany), plus the European Parliament and the United States Congress. The Actor is designed for researchers, journalists, civic-technology teams, policy analysts, monitoring workflows, and AI agents that need consistent legislative records without maintaining separate collectors.

### Start with 20 records

Choose **France — Assemblée nationale**, keep **All compatible categories**, leave date filters empty, and use metadata mode for a first run. Export the collected records as JSON, CSV or Excel. No Congress API key is needed for this example.

### What can this Actor collect?

- French National Assembly sessions, news, legislative dossiers, and reports.
- French Senate reports, legislative texts, dossiers, sessions, and news.
- U.S. Congress bills, resolutions, and amendments.
- UK Parliament bills, debates, publications, and committee material.
- German Bundestag news, debates, documents, and sessions.
- European Parliament resolutions, parliamentary documents, debates, and questions.
- Danish Folketing bills, resolutions, questions, documents, meetings, committees, and votes through the official ODA API.
- Irish Oireachtas bills, debates, parliamentary questions, and votes through its official Open Data API.
- Dutch Tweede Kamer bills, documents, meetings, questions, votes, and committees through its official OData API.
- Polish Sejm bills, sittings, votes, committees, written questions, and interpellations through its official API.
- Bulgarian National Assembly bills from its official parliamentary source.
- Austrian Nationalrat plenary sessions through the official Parliament Open Data endpoint.
- Estonian Riigikogu bills and votes through its official Open Data API.
- Italian parliamentary bills and votes through the Camera and Senato Linked Open Data endpoints.
- Portuguese parliamentary initiatives and votes through the Assembleia da República Open Data files.
- Spanish bills through the Congreso de los Diputados Open Data files.
- Czech bills and written questions through the Chamber of Deputies official document list.
- Finnish bills, committee reports, and written questions through the Eduskunta Open Data API.
- Swedish bills, committee reports, and plenary protocols through the Riksdag Open Data API, with an official website fallback.
- Greek laws through the Hellenic Parliament Open Data API.
- Croatian bills through the official Parliament RSS feed; Lithuanian and Slovak bills through their official parliamentary lists.

The Actor uses official APIs, feeds, and institutional pages. It does not collect social-media posts or election-campaign content.

### Key features

- One normalized output format across all supported institutions.
- Inclusive `fromDate` and `toDate` filters.
- Stable identifiers and URL-based deduplication.
- Balanced results when **All compatible categories** is selected.
- Transparent `dateStatus` and `dateSource` fields.
- Fast metadata mode for large National Assembly documents.
- Optional full-text downloading.
- Isolated source errors, so one unavailable category does not cancel valid results.
- Results available in the Apify dataset for JSON, CSV, Excel, API, integrations, schedules, and monitoring.

### How to use it

1. Select a political or parliamentary source, or **Toutes les sources (un seul Run)** to aggregate every configured source into one Dataset.
2. Choose one content category or **All compatible categories**.
3. Enter an optional start and end date in `YYYY-MM-DD` format.
4. Choose the maximum number of records.
5. For U.S. Congress data, provide your Congress.gov API key in the secret input field. Start without date filters for your first trial.
6. Click **Start**, then open the Dataset and choose **Export** for JSON, CSV or Excel. Read **Collection status and source warnings** in Output if results are missing.

When the aggregate mode is selected, the Actor launches the configured source runs automatically and combines their datasets. It requires execution on the Apify platform (not local mode).

The aggregate mode launches every source displayed in the input list. Belgium, Slovenia, Cyprus, Malta, and Hungary are intentionally not displayed for now because their official sites either block automated access or do not provide a reproducible public feed.

### Example input

```json
{
  "source": "assemblee",
  "category": "all",
  "maxRequestsPerCrawl": 20,
  "includeFullText": false
}
```

### Real output sample

Inspect a 20-record French National Assembly sample collected on September 4, 2026: [JSON sample](https://api.apify.com/v2/datasets/tiHxHG4B7jLVlEUjB/items?signature=MC4wLjF0SlFUMGpZQjhCaHdzZXVVV2pJeA\&format=json\&clean=true) · [CSV sample](https://api.apify.com/v2/datasets/tiHxHG4B7jLVlEUjB/items?signature=MC4wLjF0SlFUMGpZQjhCaHdzZXVVV2pJeA\&format=csv\&clean=true\&attachment=true). The sample includes 4 record types. Downloading these existing files does not start a new paid run. This is a limited snapshot, not a complete archive.

### Output fields

Each record can contain `country`, `institution`, `language`, `source`, `title`, `date`, `type`, `url`, `text`, `collectedAt`, `id`, `dateStatus`, and `dateSource`.

Dates are never invented. If an official source does not provide a reliable date, the Actor returns `date: null`, `dateStatus: missing`, and `dateSource: null`.

### Pricing

**$0.25 per 1,000 parliamentary records** ($0.00025 per Dataset item), plus an Actor-start event of **$0.00005 per allocated GB, with a minimum of one event**. At the default 512 MB, 20 records cost $0.005 in record events plus $0.00005 for the start event. Check the Pricing tab and run charge limit before starting.

Errors are stored separately in COLLECTION\_STATUS, never as a billable parliamentary record. The start event can still apply to a failed run, and any genuine records saved before an interruption remain billable.

**All-sources mode has a different cost:** it launches up to 23 child runs. The requested record limit applies to each source, not to the combined result. Child starts, child Dataset records and records copied into the parent Dataset are separate chargeable events. The parent run's charge limit does not constitute a combined cap for all child runs. Start with one institution to estimate cost.

### FAQ

#### Why do some records have no date?

Some official pages or APIs do not expose a trustworthy publication date. The Actor marks this transparently instead of guessing.

#### Why is a Congress.gov API key required?

Congress.gov requires an API key for its official API. The key is stored as a secret input by Apify.

#### Can I request complete document text?

Enable **Download full text** where supported by the selected collector. The amount of text available varies by source and document; some results contain metadata or summaries. Larger pages, especially session transcripts, take longer.

#### Can I automate recurring monitoring?

Yes. Use Apify schedules, API calls, webhooks, or integrations to run the Actor repeatedly and export new datasets.

### Responsible use

This Actor collects publicly available information from official institutions. Source availability, page structure, and field completeness can change. Users remain responsible for complying with applicable laws and the terms of the source websites.

### Reliability and coverage

Official sources may return fewer records than requested or be temporarily unavailable. A run with no matching records is marked failed with a diagnostic rather than returning an error as a document. Genuine records already collected are retained. In all-sources mode, inspect COLLECTION\_STATUS for missing-source warnings; a partial result is not complete coverage. Source categories differ, and unsupported category choices fall back to the institution’s compatible categories.

The output preserves the original source language; it does not translate, verify political claims or determine the legal effect of a document. Date filtering is not a guarantee of exhaustive historical coverage.

### Support

Open an issue on this Actor with the run ID, selected institution and expected category. Do not share API keys or private data.

# Actor input Schema

## `source` (type: `string`):

Commencez par une institution. Toutes les sources lance 23 sous-runs séparés, dont le Congrès américain qui exige une clé API. Les sous-runs et les lignes agrégées sont facturés séparément.

## `category` (type: `string`):

Choisissez une catégorie. Si elle n’est pas disponible pour l’institution, toutes les catégories compatibles sont utilisées automatiquement.

## `congressApiKey` (type: `string`):

Requise uniquement pour collecter les données du Congrès américain.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum de documents pour une source. En mode toutes les sources, ce plafond s’applique à chaque source : le résultat agrégé peut donc atteindre 23 fois cette limite.

## `includeFullText` (type: `boolean`):

Demande le texte intégral lorsque le collecteur et la source le permettent. Le contenu disponible varie selon les institutions ; les grandes pages sont plus lentes.

## `fromDate` (type: `string`):

Date de début incluse, facultative, au format AAAA-MM-JJ. Une période sans documents retourne un diagnostic, pas un faux document.

## `toDate` (type: `string`):

Date de fin incluse, facultative, au format AAAA-MM-JJ. Les documents futurs sont exclus.

## Actor input object example

```json
{
  "source": "assemblee",
  "category": "all",
  "maxRequestsPerCrawl": 20,
  "includeFullText": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `collectionStatus` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("renoven/global-parliamentary-data-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("renoven/global-parliamentary-data-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call renoven/global-parliamentary-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,renoven/global-parliamentary-data-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gl6z4A8LEqM1UKepM/builds/ZEB2SSZscn7idN9Pb/openapi.json
