ENTSO-E European Power Market Scraper - Prices & Generation
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
ENTSO-E European Power Market Scraper
Pull EU electricity-market data from the ENTSO-E Transparency Platform REST API. Extracts day-ahead prices, actual load, generation by fuel type (nuclear, gas, wind, solar, hydro), cross-border physical flows, and installed capacity across all 61 EU bidding zones.
The actor calls https://web-api.tp.entsoe.eu/api directly — no API key or signup on your side. The API returns XML in IEC 62325 format; the actor parses it into flat time-series rows ready for spreadsheet or database ingestion.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
datasetType |
select | day_ahead_price |
Dataset to fetch: day_ahead_price, actual_load, actual_generation_by_type, installed_capacity_by_type, or cross_border_flow. |
biddingZones |
string list | (all 20 major zones) | EIC codes or short labels (e.g. DE_LU, FR, NL, IT_NORD, NO_4). Leave empty to query all 20 major zones. |
periodFrom |
string | 24 hours ago | UTC start of the query window. ISO 8601 format: 2026-05-01T00:00Z or 2026-05-01. Slash-separated dates (05/01/2026) are rejected — they're ambiguous between month-first and day-first. |
periodTo |
string | now | UTC end of the query window. ISO 8601 format: 2026-05-02T00:00Z or 2026-05-02. Slash-separated dates (05/01/2026) are rejected — they're ambiguous between month-first and day-first. |
maxItems |
integer | 10 |
Maximum number of time-series rows to return. Set to 0 for unlimited. |
Supported Datasets
| Dataset | ENTSO-E Code | Typical Resolution | Description |
|---|---|---|---|
| Day-Ahead Price | A44 | PT60M / PT15M | EUR/MWh prices published daily by 13:00 CET for the next day |
| Actual Total Load | A65 | PT60M / PT15M | Realised system load with ~1h lag |
| Actual Generation by Type | A75 | PT60M / PT15M | Realised generation per fuel type (nuclear, gas, wind, solar, hydro, etc.) |
| Installed Capacity by Type | A68 | PT60M / monthly | Installed capacity per fuel type — rarely changes |
| Cross-Border Physical Flow | A88 | PT60M | Net directional MW flow between adjacent zones |
Bidding Zone Labels
The actor accepts both short labels and raw EIC codes:
| Short Label | EIC Code | Zone |
|---|---|---|
DE_LU (also accepts DE or Germany) |
10YDE-VE-------2 |
Germany + Luxembourg |
FR |
10YFR-RTE------C |
France |
NL |
10YNL----------L |
Netherlands |
BE |
10YBE----------2 |
Belgium |
ES |
10YES-REE------0 |
Spain |
IT_NORD |
10YIT-GRTN-----B |
Italy North |
NO_4 |
10YNO-4--------9 |
Norway 4 |
Leave biddingZones empty to query the 20 major EU zones automatically.
Output Schema
Each dataset row is a flat object with fields relevant to the requested dataset type. Fields not applicable to the dataset type are omitted.
| Field | Type | Description |
|---|---|---|
dataset_type |
string | One of: day_ahead_price, actual_load, actual_generation_by_type, installed_capacity_by_type, cross_border_flow |
bidding_zone |
string | EIC code of the bidding zone |
bidding_zone_label |
string | Human-readable label (e.g. DE_LU, FR) |
period_start |
string | UTC start of the interval (ISO 8601) |
period_end |
string | UTC end of the interval (ISO 8601) |
resolution |
string | PT60M (hourly) or PT15M (15-minute) |
market |
string | day_ahead, actual, installed_capacity, or cross_border |
price_eur_per_mwh |
number | Day-ahead price in EUR/MWh (day_ahead_price only) |
generation_mw |
number | Actual generation in MW (actual_generation_by_type only) |
installed_capacity_mw |
number | Installed capacity in MW (installed_capacity_by_type only) |
actual_load_mw |
number | Actual total load in MW (actual_load only) |
flow_mw |
number | Cross-border flow in MW, positive = net export from in_area to out_area (cross_border_flow only) |
production_type |
string | Fuel/technology label (e.g. Nuclear, Fossil_Gas, Wind_Onshore, Solar) (generation/capacity only) |
in_area |
string | Source zone EIC code (cross_border_flow only) |
out_area |
string | Destination zone EIC code (cross_border_flow only) |
currency |
string | Always EUR |
scraped_at |
string | UTC timestamp of when the row was returned to you (ISO 8601) |
Use Cases
- Energy trading and analytics — Pull day-ahead price curves for arbitrage analysis or portfolio valuation across all CWE/Nordic/Iberian zones
- Grid operations research — Analyse actual load vs. generation by fuel mix for a given zone and time window
- Carbon footprint modeling — Combine generation-by-type data with emission factors for real-time or historical carbon intensity estimates
- Academic research — Download multi-year historical data for econometric or ML studies on European electricity markets
- Cross-border flow monitoring — Track hourly MW flows on interconnectors for congestion analysis
Limits
400 requests per minute is shared across all concurrent runs of this actor. Heavy back-fill jobs over many zones may queue.
For zones / periods that return no data (HTTP 400 "No matching data found"), this is normal — the zone simply doesn't publish that dataset for that window.