# ECDC Disease Surveillance Scraper | European Open Data (`parseforge/ecdc-disease-data-scraper`) Actor

Collect European Centre for Disease Prevention and Control surveillance data: indicators, country, year, week, disease, age group, sex, value, unit, and population coverage. Export public health metrics to JSON, CSV, or Excel for epidemiology, research, and dashboard tracking.

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

## Pricing

from $19.00 / 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/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)

## 🦠 ECDC Disease Surveillance Data Scraper

> 🚀 **Export ECDC surveillance records in seconds.** Pull daily case and death counts by country and territory from the European Centre for Disease Prevention and Control open dataset. Download as CSV, Excel, JSON, or XML.

> 🕒 **Last updated:** 2026-05-26 · **📊 13 fields** per record · 60,000+ rows · Global

The **ECDC Disease Surveillance Data Scraper** queries the European Centre for Disease Prevention and Control public open data feed. Each row contains the reporting date, country and territory name, ISO geo identifier, continent, daily cases, daily deaths, population reference and the 14-day cumulative case rate per 100,000. The dataset underpins epidemiology research, dashboards and academic studies.

**Coverage:** every country and territory tracked by ECDC across all continents.

---

### Target Audience / Use Cases

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Epidemiologists | Surveillance time-series studies |
| Public-health agencies | Cross-country benchmarking |
| Researchers | Population-adjusted modelling |
| Data journalists | Build country comparison charts |
| Dashboard builders | Power live disease trackers |
| Students | Coursework datasets |

---

### 📋 What this scraper does

- Pulls the ECDC open data JSON feed
- Filters by country, geoId, continent or year
- Returns daily cases, deaths, population, 14-day rate
- Outputs JSON, CSV, Excel, XML

---

> 💡 **Why it matters:** ECDC remains a primary EU public health source. Direct exports let teams skip manual CSV downloads.

---

### 🎬 Full Demo

_🚧 Coming soon_

---

### ⚙️ Input

<table><thead><tr><th>Field</th><th>Type</th><th>Required</th><th>Default</th><th>Description</th></tr></thead>
<tbody>
<tr><td>maxItems</td><td>integer</td><td>No</td><td>10</td><td>Max records.</td></tr>
<tr><td>country</td><td>string</td><td>No</td><td></td><td>Country name substring.</td></tr>
<tr><td>geoId</td><td>string</td><td>No</td><td></td><td>Two-letter ISO geoId.</td></tr>
<tr><td>continent</td><td>select</td><td>No</td><td>Any</td><td>Continent filter.</td></tr>
<tr><td>year</td><td>integer</td><td>No</td><td></td><td>Reporting year.</td></tr>
</tbody></table>

**Example 1 - All Spain records:**
```json
{ "geoId": "ES", "maxItems": 1000 }
````

**Example 2 - 2020 European records:**

```json
{ "continent": "Europe", "year": 2020, "maxItems": 5000 }
```

> ⚠️ **Good to Know:** ECDC ended daily reporting on 14 December 2020; older records remain a complete daily archive.

***

### 📊 Output

Sample:

```json
{
    "title": "Afghanistan",
    "dateRep": "14/12/2020",
    "year": 2020,
    "cases": 746,
    "deaths": 6,
    "country": "Afghanistan",
    "geoId": "AF",
    "countryterritoryCode": "AFG",
    "population": 38041757,
    "continent": "Asia"
}
```

Key fields: title, dateRep, day, month, year, cases, deaths, country, geoId, countryterritoryCode, population, continent, cumulativeNumberFor14Days.

***

### ✨ Why choose this Actor

- 🟢 Sourced directly from opendata.ecdc.europa.eu
- 🟢 No registration, no API key
- 🟢 Filter combinations supported
- 🟢 Up to 1,000,000 records per paid run

***

### 📈 How it compares to alternatives

| Option | Free | Bulk export | Live |
|---|---|---|---|
| ECDC site download | Yes | Yes | Periodic |
| WHO dashboard | Yes | Limited | Yes |
| **ParseForge ECDC Scraper** | **Yes** | **Yes** | **Live** |

***

### 🚀 How to use

1. [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. Open this actor
3. Set filters, click Start
4. Download CSV / Excel / JSON / XML
5. Schedule or integrate

***

### 💼 Business use cases

#### Surveillance dashboards

Feed live disease counters with country granularity.

#### Health-tech analytics

Cross-reference cases with internal patient data.

#### Insurance modelling

Quantify regional risk exposure.

#### Government reporting

Benchmark domestic numbers against EU peers.

***

### 🔌 Automating ECDC Scraper

Integrates with **Make**, **Zapier**, **n8n**, **Slack**, **Airbyte**, **GitHub Actions**, **Google Drive**.

***

### 🌟 Beyond business use cases

#### Research

Drive epidemiological and modelling studies.

#### Personal

Track historical trends.

#### Non-profit

NGO health programmes.

#### Experimentation

Combine with WHO data for global coverage.

***

### 🤖 Ask an AI assistant about this scraper

ChatGPT · Claude · Perplexity · Microsoft Copilot

***

### ❓ Frequently Asked Questions

**Q: Source?**
opendata.ecdc.europa.eu.

**Q: API key?**
No.

**Q: Real-time?**
The actor downloads the latest published file on every run.

**Q: Coverage?**
All ECDC-tracked countries and territories.

**Q: Output formats?**
JSON, CSV, Excel, XML.

**Q: Free preview?**
Yes, 10 records.

**Q: Bulk size?**
Up to 1,000,000 paid.

**Q: What disease?**
COVID-19 case distribution as published by ECDC.

**Q: Is the 14-day rate per 100,000 included?**
Yes, when published by ECDC.

**Q: Are population values current?**
Population reference is the ECDC `popData2019` field.

***

### 🔌 Integrate with any app

Webhooks, REST API, Make, Zapier, Slack, Airbyte, Google Sheets, and more.

***

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| [Medicare Hospital Compare Scraper](https://apify.com/parseforge/hospital-compare-medicare-scraper) | US hospital quality data |
| [FDA Drug Approvals Scraper](https://apify.com/parseforge/fda-drug-approvals-scraper) | FDA-approved drug records |
| [ICD-10 Codes Scraper](https://apify.com/parseforge/icd10-codes-scraper) | Clinical code reference |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with the European Centre for Disease Prevention and Control. Only publicly available data from opendata.ecdc.europa.eu is collected.

# Actor input Schema

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

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

## `country` (type: `string`):

Filter by country / territory name (case-insensitive substring). Examples: Spain, Germany, United States.

## `geoId` (type: `string`):

Filter by two-letter ISO geoId (e.g. ES, DE, US).

## `continent` (type: `string`):

Filter by continent (Africa, America, Asia, Europe, Oceania).

## `year` (type: `integer`):

Filter by reporting year (e.g. 2020).

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

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

Scraped ECDC Disease Surveillance Data records

# 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
};

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

# Run the Actor and wait for it to finish
run = client.actor("parseforge/ecdc-disease-data-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
}' |
apify call parseforge/ecdc-disease-data-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ECDC Disease Surveillance Scraper | European Open Data",
        "description": "Collect European Centre for Disease Prevention and Control surveillance data: indicators, country, year, week, disease, age group, sex, value, unit, and population coverage. Export public health metrics to JSON, CSV, or Excel for epidemiology, research, and dashboard tracking.",
        "version": "0.1",
        "x-build-id": "VmfDFMR904vUhcFRR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~ecdc-disease-data-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-ecdc-disease-data-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~ecdc-disease-data-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-ecdc-disease-data-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~ecdc-disease-data-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-ecdc-disease-data-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"
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Filter by country / territory name (case-insensitive substring). Examples: Spain, Germany, United States."
                    },
                    "geoId": {
                        "title": "GeoID",
                        "type": "string",
                        "description": "Filter by two-letter ISO geoId (e.g. ES, DE, US)."
                    },
                    "continent": {
                        "title": "Continent",
                        "enum": [
                            "",
                            "Africa",
                            "America",
                            "Asia",
                            "Europe",
                            "Oceania"
                        ],
                        "type": "string",
                        "description": "Filter by continent (Africa, America, Asia, Europe, Oceania)."
                    },
                    "year": {
                        "title": "Year",
                        "minimum": 2019,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Filter by reporting year (e.g. 2020)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
