# Eurostat Indicators by Name: unemployment, inflation, GDP (`oatpage/eurostat-statistics`) Actor

Query any Eurostat dataset (unemployment, inflation, GDP, energy...) by code, country and period. Returns flat rows with labels. Official EU open data. No login, no proxy.

- **URL**: https://apify.com/oatpage/eurostat-statistics.md
- **Developed by:** [Oatpage](https://apify.com/oatpage) (community)
- **Categories:** Business, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 observations

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Eurostat Statistics API

Independent tool. Not an official service and not endorsed by Eurostat or the European Commission. Query any Eurostat dataset (unemployment, inflation, GDP, population, energy...) and get flat JSON rows with readable labels.

**Data source:** Eurostat, the statistical office of the European Union (Eurostat dissemination API). Eurostat data are reusable free of charge under the Commission reuse policy (CC BY 4.0) with acknowledgement of the source. The actor only filters and flattens the data; it does not change any value. Each record carries `sourceUpdated`, the dataset's last update time at Eurostat, and Eurostat's quality `flag` when present (p = provisional, e = estimated).

### Indicators by name (no dataset codes)

Ask for **unemployment, youth_unemployment, inflation, gdp_growth or house_prices** and a list of countries by name (English or Spanish: `Spain`, `Alemania`, `Greece`, plus `European Union` and `Euro area` as benchmarks). The actor knows the right dataset and filters for each indicator, so you do not have to.

Input:

```json
{"indicator":"inflation","countries":["Spain","Germany","France"]}
```

Output (real run, 11-10-2026): one record per country and period, newest first, with the change versus the previous period and versus a year ago **in percentage points**, plus one `ranking` record with the latest value of each country (lowest first).

```json
{"type":"observation","indicator":"inflation","indicatorLabel":"Inflation (HICP, all items), annual rate of change","unit":"% year on year","country":"Spain","geo":"ES","period":"2026-09","value":5,"changeVsPrevious":0.4,"changeVsYearAgo":2,"changeUnit":"percentage points","flag":"e"}
{"type":"ranking","indicator":"inflation","order":"ascending by value (lowest first)","countries":[{"rank":1,"country":"Germany","geo":"DE","period":"2026-09","value":3.3,"changeVsYearAgo":1},{"rank":2,"country":"France","geo":"FR","period":"2026-09","value":3.4,"changeVsYearAgo":2.3},{"rank":3,"country":"Spain","geo":"ES","period":"2026-09","value":5,"changeVsYearAgo":2}],"benchmarks":[]}
```

- Default range: the last 2 years. Use `sinceTimePeriod` / `untilTimePeriod` (`2025-01`, `2025-Q1`) to change it.
- Billing: one `observation` event per observation record. The ranking record is not billed.
- Why curated: Eurostat replaced its monthly inflation dataset in 2026 (the old code `prc_hicp_manr` stops at December 2025). The `inflation` indicator uses the current one, so you never get stale numbers by mistake.

### Find any dataset (catalogue search)

Input `{"search":"hicp ecoicop"}` searches the titles of all Eurostat datasets (all your words must appear in the title or code; no fuzzy matching) and returns code, title, period covered and last update. Datasets that look outdated (no update for months, or old data) carry a `warning`, so you can see which code replaced them. Search results are not billed per result.

### Advanced: any dataset by code

The original mode still works: `dataset` + `filters`. If the latest period of the dataset you ask for is more than 15 months old, you also get a `notice` record telling you it is probably replaced.

### Input

| Field | Meaning | Default |
|---|---|---|
| `indicator`, `countries`, `includeRanking` | Indicator mode (see above) | none |
| `search` | Catalogue search | none |
| `dataset` | Dataset code, e.g. `une_rt_m`, `prc_hicp_manr`, `namq_10_gdp` (required) | `une_rt_m` |
| `filters` | Object of dimension filters, e.g. `{"geo":["ES","DE"],"sex":"T"}` | see prefill |
| `sinceTimePeriod`, `untilTimePeriod` | Period range (`2025-01`, `2025-Q1`, `2025`) | none |
| `maxItems` | 1-100,000 observations, newest period first | 100 |

### Output (one record per observation)

```json
{"dataset":"UNE_RT_M","freq":"M","s_adj":"SA","age":"TOTAL","unit":"PC_ACT","sex":"T","geo":"DE","time":"2026-08","labels":{"geo":"Germany","sex":"Total"},"value":4,"datasetTitle":"Unemployment by sex and age - monthly data","sourceUpdated":"2026-10-08T11:00:00+0200","source":"Eurostat","fetchedAt":"2026-10-10T18:48:43.367Z"}
```

The dimension columns depend on the dataset.

### Pricing (pay per event)

- Run start: $0.005
- Observation: $0.0005 (100 observations = $0.05)

### Limits

- Eurostat rejects very large queries; add filters (`geo`, `unit`...) or a period range if you get a size error.
- Values can be provisional and are revised by Eurostat.
- Only statistical data; no personal data.

### Data protection

Aggregated public statistics. No personal data.

# Actor input Schema

## `indicator` (type: `string`):

Optional. Ready-made indicator: no dataset code or filters needed. Returns one record per country and period with the change vs the previous period and vs a year ago (in percentage points), plus a ranking of the latest data. When set, 'dataset' and 'filters' are ignored.

## `countries` (type: `array`):

Names in English or Spanish, or Eurostat codes (ES, DE, EL for Greece). Also 'European Union' and 'Euro area' as benchmarks. Used with 'indicator'. Default: Spain, Germany, France, Italy, Portugal.

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

Optional. Words to look for in the titles of all datasets (e.g. 'housing', 'electricity prices'). Returns code, title, period covered and last update, with a warning for datasets that look outdated. Not billed per result.

## `includeRanking` (type: `boolean`):

With 'indicator': adds one record (type 'ranking') with the countries ordered by their latest value and the EU / euro area as benchmarks. Not billed.

## `dataset` (type: `string`):

Advanced. Eurostat dataset code (e.g. une_rt_m). Not needed if you use 'indicator' or 'search'. Find codes with 'search'.

## `filters` (type: `object`):

Object with dimension codes as keys and one value or a list as values, e.g. {"geo":\["ES","DE"],"sex":"T"}. Narrow the query enough to avoid Eurostat's size limit.

## `sinceTimePeriod` (type: `string`):

First period to include, in the dataset's format, e.g. 2025-01 (monthly), 2025-Q1 (quarterly) or 2025 (annual).

## `untilTimePeriod` (type: `string`):

Last period to include, same format as the start period. Empty = latest available.

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

Maximum number of observations to return, newest period first. Each observation is billed as one event.

## Actor input object example

```json
{
  "countries": [
    "Spain",
    "Germany",
    "France",
    "Italy",
    "Portugal"
  ],
  "includeRanking": true,
  "filters": {
    "geo": [
      "ES",
      "DE"
    ],
    "s_adj": "SA",
    "age": "TOTAL",
    "sex": "T",
    "unit": "PC_ACT"
  },
  "maxItems": 100
}
```

# Actor output Schema

## `results` (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 = {
    "countries": [
        "Spain",
        "Germany",
        "France",
        "Italy",
        "Portugal"
    ],
    "filters": {
        "geo": [
            "ES",
            "DE"
        ],
        "s_adj": "SA",
        "age": "TOTAL",
        "sex": "T",
        "unit": "PC_ACT"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("oatpage/eurostat-statistics").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 = {
    "countries": [
        "Spain",
        "Germany",
        "France",
        "Italy",
        "Portugal",
    ],
    "filters": {
        "geo": [
            "ES",
            "DE",
        ],
        "s_adj": "SA",
        "age": "TOTAL",
        "sex": "T",
        "unit": "PC_ACT",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("oatpage/eurostat-statistics").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 '{
  "countries": [
    "Spain",
    "Germany",
    "France",
    "Italy",
    "Portugal"
  ],
  "filters": {
    "geo": [
      "ES",
      "DE"
    ],
    "s_adj": "SA",
    "age": "TOTAL",
    "sex": "T",
    "unit": "PC_ACT"
  }
}' |
apify call oatpage/eurostat-statistics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,oatpage/eurostat-statistics"
        }
    }
}
```

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/g4ZYRwtctR2qdyqEH/builds/Ybk7RuIAziEeDmGzh/openapi.json
