Half-hourly carbon intensity of electricity for Great Britain and its seventeen distribution regions, with the forecast generation mix. Republished from NESO’s Carbon Intensity API as flat files you can query without an API key.
releasedCC BY 4.0
Key specificationsas released
Source
NESO Carbon Intensity API (api.carbonintensity.org.uk)
Licence
CC BY 4.0 · attribute NESO
Coverage
May 2018 → yesterday · national + 17 regions
Cadence
30 minutes (settlement periods, UTC)
Units
gCO₂ per kWh delivered
Formats
Parquet · datapackage.json · CSV from the explorer
Refresh
daily 06:15 UTC · scripts/fetch_neso.py
Revision
2026-10-01
Status
released
Characteristic curvesFig. 1–2 · built 2026-11-09
Fig. 1 · National daily mean, Sept 26 → Nov 26gCO₂/kWh
270180900
mean 122260 · 8 Nov49 · 9 Oct
SeptOctNov
69 days, one column each. Daily mean of the national half-hourly series (measured where published, forecast otherwise). Refreshed by the pipeline; the first release used NESO's stats endpoint, whose 30-day windows skip six month-end days.
Fig. 2 · South Wales (region 7), half-hourly forecast, 2026-09-29gCO₂/kWh
4002000
00:0006:0012:0018:0024:00
Shaded by NESO's index band, very low (lightest) to very high. Minimum 18 g at 09:30, maximum 322 g at 17:00. The notebook's sheet 02 reads this day.
Pinout · schemaone row per settlement period
Field
Type
Description
from, to
timestamp (UTC)
Start and end of the 30-minute settlement period, ISO 8601.
intensity_forecast
int
Forecast intensity, gCO₂/kWh.
intensity_actual
int · nullable
Measured intensity. National file only; null for every regional row.
intensity_index
enum
NESO band: very low · low · moderate · high · very high.
regionid, shortname, dnoregion
int · text
Regional file only. 1–17; e.g. 7 = South Wales, WPD South Wales.
mix_biomass … mix_wind
float (%)
Regional file only. Forecast generation share for nine fuels: biomass, coal, imports, gas, nuclear, other, hydro, solar, wind.
Absolute maximum ratings · known limitsread before use
Limit
Consequence
Regional values are forecasts
There is no measured regional intensity. Do not describe a regional figure as observed.
Model output, not metered emissions
NESO estimates intensity from the generation mix. A number here is a modelled estimate with its own error: on 29 Sep 2026 the national forecast missed the measured value by 12 g/kWh on average.
Index bands change
NESO revises what counts as “low”. Treat the numbers as the stable field and the labels as commentary.
Average, not marginal
This is the average intensity of everything generating. The emissions caused by adding a load depend on the marginal plant, usually gas, and are not in this dataset.
Grid, not house
Nothing in this dataset says what any building actually consumed or when.
Typical applicationDuckDB, runs in your browser
Loads DuckDB-WASM on first run (~5 MB, cached by your browser).
Runs in your browser with DuckDB-WASM against the files listed in datapackage.json; nothing is sent to a server. Until the first pipeline run the tables are the sample days; afterwards the yearly and monthly partitions are registered too.
Downloadfiles are the release; the site is the label
Yearly and monthly partitions (national/, regional/) are listed in datapackage.json once the pipeline has run; the explorer registers them automatically.
Provenance
Fetched
scripts/fetch_neso.py · GitHub Actions, daily · commit recorded in checks.log
Endpoints
/intensity/{from}/{to} · /regional/intensity/{from}/{to} · 14-day windows
Transform
Flattened JSON → one row per period; generation mix pivoted to columns. Values as served.
Checks
Row counts, missing periods, nulls, value ranges; results in checks.log and on this page.
v1 · first release: sample days (29–30 Sep 2026, South Wales and GB) and 12 months of national daily means; full partitions arrive with the first scheduled fetch.
[date]
[next change, and what it breaks]
Cite as
Elliott, J. (2026). DS-001 GB electricity carbon intensity [data set], databased.business, rev 2026-10-01. Derived from NESO Carbon Intensity API, CC BY 4.0.