The data, straight from the platform
The same layer the site's own pages read. No key, no registration, JSON over HTTP. Every response says which source it came from, which moment it refers to and how fresh it is.
The power system, in real time
Demand, generation by source and cross-border exchanges, as the transmission operators publish them. Open.
| Address | What it returns | Cadence |
|---|---|---|
/api/v1/countries |
Every country on the platform, with its zones and coverage status. | Changes rarely — when the registry changes. |
/api/v1/countries/:iso2/latest |
A country's snapshot: demand, generation by source, border balance. | As often as its operator publishes — from 10 seconds to an hour. |
/api/v1/countries/:iso2/history |
A time series for one country, over a chosen range. | The same cadence as the snapshot. |
/api/v1/europe/latest |
The European total and every country that enters it. | One minute. |
/api/v1/status |
The state of collection: which source published last, and when. | Continuous. |
/api/v1/licenses |
What the platform is allowed to do with each source's data. | When a source's terms change. |
/api/v1/search |
Search across countries, zones and terms. | Continuous. |
The day-ahead market
The prices auctioned for the following day, by bidding zone. Closed for now — see below why.
| Address | What it returns | Cadence |
|---|---|---|
/api/v1/prices/latest451 · licence |
The latest known price for each zone. | Once a day, after the auction. |
/api/v1/prices/zones451 · licence |
The bidding zones, with each one's time zone and currency. | Changes rarely. |
/api/v1/prices/date451 · licence |
Every zone, for a chosen delivery day. | Daily. |
/api/v1/prices/country/:iso2451 · licence |
A country's prices, for each of its zones. | Daily. |
/api/v1/prices/:zone/history451 · licence |
A zone's history, interval by interval. | Daily. |
/api/v1/prices/:zone/summary451 · licence |
Average, minimum, maximum and quantiles by day, week or month. | Daily. |
/api/v1/market/cheapest451 · licence |
The zones with the lowest average price of the day. | Daily. |
/api/v1/market/expensive451 · licence |
The zones with the highest average price of the day. | Daily. |
/api/v1/market/spreads451 · licence |
The difference between the cheapest and the dearest hour, by zone. | Daily. |
/api/v1/market/cheapest-window451 · licence |
The cheapest continuous N-hour window in a zone. | Daily. |
/api/v1/market/weekly451 · licence |
The weekly report, once the week has closed. | Weekly. |
Why the price routes answer with 451
The market data comes from the ENTSO-E transparency platform. We collect it and show it on the site with the source written next to every figure, but redistributing it through an API is not the same as displaying it, and the reuse terms are not yet verified and registered by us.
Until then, the price routes return 451 — the code for “unavailable for legal reasons” — rather than quietly delivering something we have no right to deliver. The licensing system works per source, not per country, so opening them requires no code change.
Rules of good behaviour
There is no request limit, and we would like there not to need to be one. The responses carry cache-control: respect it and you will get exactly the same figures without asking twice. Real-time data does not change more often than its operator publishes — one request a second for a country that publishes hourly brings nothing new.
If you use the data publicly, cite the original source (the transmission operator or ENTSO-E), not our name: we transport it, we do not produce it.
See also: Data sources · Methodology · System status · llms.txt