Wattlas

European electricity, explained.

Open data on how and when the price of power moves across the continent, pre-computed into views built to be read and rebuilt on the 1st and 15th of each month.

36
views, grouped as eight questions
6
bidding zones compared at once
2,921
tests · 2,568 Python, 353 JS
The structure

Eight questions about power

An editorial landing routes you into one of eight plain-language questions; each opens the views that answer it. Every view compares up to six bidding zones at once.

Pulse view — average price by hour of day
pulse · the duck curve, €48 at midday to €152 in the evening
Wattlas comparing four bidding zones
zone compare · Germany against France, NL and Austria
01

The Daily Rhythm

When does power move?

Electricity has no single price. It has one every hour, and five views trace how it swings between cheap and expensive.

Spread view
spread · €137/MWh average daily gap, the signal storage lives on
Negative prices view
negative prices · 535 hours below zero in the last 12 months
Capture Price

German solar earns ~0.56× the average price: worth least exactly when there's most of it.

History

Three years of daily spread, free to roam: zoom a week or fold it onto a season.

02

What's on the Grid

What's flowing through the wires?

Behind every price is a physical mix of fuels, and how clean or dirty each hour really is.

Generation mix view
generation mix · France's flat nuclear against Germany's volatile wind and solar
Carbon intensity view
carbon intensity · 30 gCO₂/kWh on a French hour, 550 on a Polish one
Residual Load

Demand minus wind and solar: the evening gap that dispatchable plant and batteries must still cover.

Marginal Fuel

A model, flagged as one: gas sets the price on roughly 66% of days.

03

Geography of Price

Where does power flow, and why do prices split?

One country, one price, until the grid can't carry the power across it. Four countries answer the same congestion problem four ways, on the map.

Germany North-South grid story
germany north-south · ~400 Landkreise mapped, wind stranded from demand
Nordic price zones
nordic zones · the split Germany debates, already live: €26 → €90/MWh
France Nuclear

The centralised mirror: ~63 GW, 57 reactors, who exports and who imports.

UK Regional

Britain keeps one price and pays Scottish wind ~£2 bn a year to switch off.

Divergence & Curtailment

Price gaps between neighbours, the flows that explain them, and the clean power the grid throws away.

04

When the Grid is Tested

What happens when supply runs tight?

Dunkelflaute story
dunkelflaute · renewables down to ~1.5% of demand, Nov '25

Plus the batteries that live off the daily spread (~6× grid storage since 2021), the adequacy question behind Germany's capacity law (11 GW of auctions, enacted July 2026), and how far the day-ahead wind and solar forecasts miss, control area by control area.

05

The Bill

What does it cost, and who pays?

Retail wedge view
retail wedge · Germany ~€0.39/kWh, only ~40% of it energy

What a shiftable load (an EV, a heat pump, a battery) saves in the cheapest hours, labelled an upper bound. Industrial prices, bounded to country level. And the € price tag on curtailed wind, labelled an estimate.

06

The Charge

What's plugging into the grid?

Millions of cars and the first electric trucks are a new load on the grid, and the first big one that can choose when it draws. The views cover the vehicles on the road and the rules ahead, the charging network country by country with its heavy-duty corridors, what a charge costs, and what charging draws from the grid.

07

The Load

What does AI draw from the grid?

Data centres were a flat line on the grid for a decade, until AI. The views trace twenty years of data centres, where the load sits, the cost of a token, what the disclosed token streams would draw, and where that electricity comes from.

08

The Build-out

What gets built, and how fast?

Solar became the world's largest source of new capacity in the 2020s: 2,391 GW stood at the end of 2025, eleven times the fleet of 2015. Two views: renewable capacity by country and year, and how much of the time it runs.

Under the hood

Eleven open feeds, kept honest

ENTSO-E, NESO, MaStR, SMARD, ODRÉ/RTE, netztransparenz, Eurostat, the KBA, the Bundesnetzagentur's charge-point register, Ember and IRENA, 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 on the 1st and 15th at 05:17 UTC, and nothing runs in between.

Isolation

Each source is its own module; one failure can't break the others.

Fail open

A missing key writes status:"unavailable" and the view shows "awaiting source" instead of a zero that would look like data.

Landmines documented

The Oct-2025 resolution break, 23/25-hour DST days, zones that aren't regions: coded around, in writing.

Tested

2,921 tests across 117 files: metric functions on inline fixtures, plus the assistant's own suite.