European electricity, explained.
Open data on how and when the price of power moves across the continent — pre-computed into views you can actually read, rebuilt every day. A working tool you can open right now, not a pitch.
An editorial landing routes you into one of five plain-language questions; each opens a section of views that answer it. Grouped by the question you came to answer, not by how it was built. Every view still compares up to six bidding zones at once.
German solar earns ~0.55× the average price — worth least exactly when there's most of it.
Three years of daily spread, free to roam — zoom a week, fold onto a season, read the trend.
Demand minus wind and solar — the evening gap dispatchable plant and batteries must still cover.
A model, flagged as one: gas sets the price on roughly 77% of days.
The centralised mirror: ~63 GW, 57 reactors, who exports and who imports.
Britain keeps one price — and pays Scottish wind ~£2 bn a year to switch off.
Price gaps between neighbours, the flows that explain them, and the clean power the grid throws away.
What happens when supply runs tight?
Plus the batteries that live off the daily spread (~6× grid storage since 2021), the adequacy question behind Germany's ~12 GW gas tender, and a sober, sourced replay of the Iberian blackout of 28 April 2025 — asserting no cause of its own.
What does it cost, and who pays?
What a shiftable load — an EV, a heat pump, a battery — saves in the cheapest hours, labelled an upper bound. Industrial prices, honestly bounded to country level. And the € price tag on curtailed wind, labelled an estimate.
ENTSO-E, NESO, MaStR, SMARD, ODRÉ/RTE, netztransparenz and Eurostat — each with its own auth, units, lag and cadence, reconciled to one canonical shape. The pipeline is the only code that touches the APIs; it writes small JSON the frontend reads directly. A scheduled job reruns it daily at 05:17 UTC. No backend, no database.
Each source is its own module; one failure can't break the others.
A missing key writes status:"unavailable" and the view shows "awaiting source" — never a fabricated zero.
The Oct-2025 resolution break, 23/25-hour DST days, zones that aren't regions — coded around, in writing.
130 tests across 20 files — pure metric functions on inline fixtures, no network needed.