API

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