We build market data pipelines for a living. The parts that are useful on their own we publish — the datasets, the lookup tables, and the mistakes we made getting them right. Here are the open data sets and tools, each with the workings shown.
Everything below is on GitHub and free. The datasets and lookup tables need no registration; entsoe-quickstart and nordpool-day-ahead query ENTSO-E directly and need a free ENTSO-E security token. Pick by what you are trying to do rather than by name.
| You want | Take this | Format |
|---|---|---|
| To query ENTSO-E yourself without fighting the XML | entsoe-quickstart | one Python file, no dependencies, ENTSO-E token needed |
| Nord Pool day-ahead prices without a Nord Pool subscription | nordpool-day-ahead | one Python file, all 15 Nordic and Baltic zones, ENTSO-E token needed |
| The zone code a query needs | eic-codes | CSV and JSON |
| Czech data from ČEPS and OTE without a token | ceps-ote | one Python file |
| To understand what the imbalance price actually does | imbalance-price-anatomy | measured on 92 018 quarter hours with data |
| To know which source has what, across Europe | awesome-european-energy-data | an annotated list |
If you only want the numbers and not the plumbing, the live prices for 38 bidding zones are on this site at European electricity prices, updated through the day.
ENTSO-E compresses its price curves. When consecutive quarter hours clear at the same price it publishes the first one and omits the rest, and nothing in the response says so. Parse the points one at a time and those intervals disappear silently.
We had this bug for months. It had removed 10.8 % of our own published dataset — 324 394 rows across 1 718 of 1 725 days — and the README blamed the source for it. A single French day came out 11 % too expensive because the gap fell in the cheap midday solar hours.
The full account — what curveType A03 is, the second trap of several price series arriving in one response, and how to verify a series against something that is not ENTSO-E — is in curveType A03: the gap that eats 10 % of your prices.
No document on the Transparency Platform records when it was published — only which period it describes. That second timestamp is the one that decides whether a feature in your model is legitimate or look-ahead, so we measured it instead of guessing.
The imbalance price is out under three minutes after the quarter hour ends, which makes the balancing feed the fastest thing on the platform rather than the slowest. Actual load arrives in hourly blocks, so its staleness sawtooths between about five and sixty-five minutes depending on when you ask.
Worse for anyone backtesting: the API serves only the current revision of a message, and two thirds of outage messages have been revised. We checked 612 of them and not one came back in an older version, so the history you download is a tidied-up account nobody had at the time.
The numbers, the method and a script that runs the same probe against your own bidding zone are in When ENTSO-E data actually arrives. The rest of how the API behaves is in our practical guide to the ENTSO-E API.
Partly because the work is already done. A dataset that updates itself daily costs nothing extra to share, and the lookup tables were built because we needed them.
Mostly because it is the honest version of a portfolio. Anyone can claim to know a market. Publishing the data, the parser and the bug we shipped for months lets you judge that for yourself before you talk to us.
The licences are permissive on purpose: MIT for the code, CC0 for our own tables and aggregated results (eic-codes, the awesome list, the imbalance statistics). The day-ahead prices themselves are ENTSO-E data and stay under the ENTSO-E Transparency Platform terms. MIT lets you use the code in a commercial product; it only asks you to keep the copyright notice and the licence text. The only thing we ask is that you check the numbers against a second source before you rely on them — which is exactly the lesson that produced the article above.
We build the things that sit on top of this data: trading dashboards, market data pipelines, backtests against real published values, imbalance settlement reconciliation. Mostly for utilities, traders and aggregators in Central Europe and DACH.
If something here is close to what you need but not quite it — a zone we do not cover, a source we have not touched, a series that will not reconcile — that is the conversation we are interested in. Examples of finished work are in a balancing market dashboard and rebuilding an intraday order book.
We build market data pipelines and dashboards for European power — ENTSO-E, national TSOs, imbalance settlement, backtesting. Tell us what you are trying to see and we will tell you what it takes and what it costs.
info@progrunners.com