# Destatis GENESIS Scraper (`parseforge/destatis-genesis-scraper`) Actor

Scrapes statistical tables from Destatis GENESIS, the German Federal Statistical Office database. Returns each observation as a flat row with dimension values, time period, and measured value. Supports dataset codes, search queries, and filters for geography, time, and other dimensions.

- **URL**: https://apify.com/parseforge/destatis-genesis-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business, Developer tools, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $26.62 / 1,000 results

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

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Destatis GENESIS Scraper

**Scrape German federal statistics from Destatis GENESIS by dataset code or search term, up to a million rows per run.** Every row comes with its dimension values, time period, and measured value. No login or API key. Export to CSV, JSON, Excel, or XML.

Destatis GENESIS is the official database of Germany's Federal Statistical Office, holding thousands of tables on population, economy, environment, and more. The official API requires registration and has strict query limits. This Actor reads the public GENESIS-Online interface directly, so you can pull any dataset by its code or discover tables with a keyword search, then filter by geography, time, and other dimensions before the data reaches your dataset.

| Who uses it | What they scrape Destatis GENESIS for |
|---|---|
| Market researchers | Tracking German demographic and economic indicators for reports |
| Data journalists | Pulling official statistics for news stories and fact-checking |
| Policy analysts | Monitoring labor, health, or environmental trends across German regions |
| Academic researchers | Building time series datasets for econometric or social science studies |
| Business intelligence teams | Feeding German federal statistics into dashboards and models |

### What it does

This Actor collects statistical tables from Destatis GENESIS by dataset code or search query, and returns each observation as a flat row with dimension values, time period, and measured value.

- 📊 **Data mode:** fetch the full table for a dataset code, with optional filters for geography, time, and extra dimensions.
- 🔍 **Catalogue mode:** search dataset titles by keyword and get a list of matching codes and descriptions.
- 🌍 **Geographic filter:** limit results to specific German states, regions, or all of Germany.
- 📅 **Time filter:** request specific years, quarters, or months, or leave empty for the latest available.
- 🧩 **Extra dimension filters:** narrow by sex, age, economic sector, or any other dimension in the table.
- 📦 **Flexible output:** export to CSV, JSON, Excel, or XML, with up to 1,000,000 rows for paid users.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Destatis GENESIS data

**📈 Track regional economic trends.**

A policy analyst pulls quarterly GDP by German state to compare recovery rates after a downturn.

**📰 Fact-check population claims.**

A journalist searches for 'Bevölkerung' in catalogue mode, then fetches the latest population table by age and sex.

**🔬 Build a research dataset.**

An academic researcher collects annual unemployment rates by region and gender for a labor economics paper.

**📊 Monitor environmental indicators.**

An NGO data team downloads air quality and waste statistics by year to track progress toward climate goals.

**💼 Feed a business dashboard.**

A BI analyst schedules weekly runs of retail trade turnover data to update a market intelligence dashboard.

### Why choose this scraper

|  | What you get |
|---|---|
| **Official source** | Data comes directly from Destatis GENESIS, the authoritative German federal statistics database. |
| **No API key** | No registration or OAuth needed, the Actor reads the public interface. |
| **Filter before export** | Apply geography, time, and dimension filters to keep only the rows you need. |
| **Scalable** | Fetch up to 1,000,000 rows per run for paid users, 10 rows for free preview. |

### How it compares

No other Store actor targets Destatis GENESIS the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Destatis GENESIS Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Destatis GENESIS changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from dataset codes and search queries, alone or together, and filters run as each table is read so only matching observations reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "mode": "data",
  "datasetId": "demo_pjan",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "mode": "data",
  "datasetId": "demo_pjan",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.0355 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $3.55 |
| 1,000 results | $35.50 |
| 10,000 results | $355.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Destatis GENESIS Scraper](https://apify.com/parseforge/destatis-genesis-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Destatis GENESIS through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/destatis-genesis-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your dataset code is valid and spelled correctly. In catalogue mode, try a broader search term. Also ensure your filters are not too restrictive; for example, a geo code that does not exist in the table will return nothing.

**The run returns only 10 rows even though I need more.**

Free users are limited to 10 rows as a preview. Upgrade to a paid Apify plan to increase the limit up to 1,000,000 rows.

**I get an error about invalid extraFilters.**

The 'extraFilters' input must be a valid JSON object. For example: {"sex":\["M","F"]}. Check for missing quotes or commas.

**The dataset code I found in catalogue mode does not work in data mode.**

Some codes may require additional dimension filters to return data. Try leaving filters empty first, then add them one by one to see which dimension is causing the issue.

**The run takes a long time or times out.**

Large tables with many dimensions can take a while. Reduce the number of rows by applying filters, or split the request into smaller time periods.

### FAQ

| Question | Answer |
|---|---|
| What is Destatis GENESIS? | Destatis GENESIS is the official statistics database of the German Federal Statistical Office (Statistisches Bundesamt). It contains thousands of tables on population, economy, environment, and many other topics. |
| Do I need an API key or registration? | No. This Actor reads the public GENESIS-Online interface directly, so no API key or registration is required. |
| How do I find the dataset code I need? | Use catalogue mode with a search term like 'inflation' or 'Bevölkerung'. The Actor returns matching dataset codes and titles, which you can then use in data mode. |
| Can I filter by German state or region? | Yes. Use the 'geo' input to specify ISO country codes or German regional codes. Leave it empty to get all of Germany. |
| What time periods can I request? | You can specify years, quarters (e.g. 2024-Q1), or months (e.g. 2024-12). Leave the time field empty to get the latest available data. |
| How many rows can I scrape? | Free users are limited to 10 rows as a preview. Paid users can fetch up to 1,000,000 rows per run. |
| What export formats are supported? | You can export the results as CSV, JSON, Excel, or XML. |
| Can I filter by dimensions like sex or age? | Yes. Use the 'extraFilters' input to pass a JSON object mapping dimension codes to values, for example {"sex":\["M","F"]}. |
| Is the data in German or English? | The underlying data is from Destatis, which provides labels in German and sometimes English. The Actor returns the raw values as provided by the source. |
| Can I schedule regular runs? | Yes, you can schedule the Actor on Apify to run daily, weekly, or at any interval, and receive updated statistics automatically. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Statistisches Bundesamt (Destatis). It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

What to scrape

## `datasetId` (type: `string`):

Eurostat dataset code (e.g. demo\_pjan = Population, prc\_hicp\_manr = HICP inflation, namq\_10\_gdp = Quarterly GDP). Browse codes in catalogue mode.

## `geo` (type: `array`):

ISO country codes (DE, FR, IT, ES, EU27\_2020, EA). Leave empty for all countries.

## `time` (type: `array`):

Specific time periods (e.g. 2023, 2024, 2026-Q1, 2024-12). Leave empty for the latest available.

## `extraFilters` (type: `object`):

Map of dimension code -> array of values, e.g. {"sex":\["M","F"], "age":\["TOTAL"]}

## `searchQuery` (type: `string`):

Filter catalogue entries whose title contains this keyword (case-insensitive)

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

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

## Actor input object example

```json
{
  "mode": "data",
  "datasetId": "demo_pjan",
  "geo": [],
  "time": [],
  "extraFilters": {},
  "maxItems": 10
}
```

# Actor output Schema

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

Overview of scraped data

## `fullData` (type: `string`):

Complete dataset

# 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": "data",
    "datasetId": "demo_pjan",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/destatis-genesis-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 = {
    "mode": "data",
    "datasetId": "demo_pjan",
    "maxItems": 10,
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/destatis-genesis-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/MtQAc4XxDZjulqWzW/builds/F0rB91eT1cqE4Jsu4/openapi.json
