NESO Carbon Intensity logo

Open data · Coming soon

UK Carbon Intensity and Low-Carbon Windows

See how clean the electricity grid is, half hour by half hour. Get data for Great Britain, a region or a postcode. The tool also picks the greenest time windows for you.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

recordTypeperiod
areaGB (national)
areaTypenational

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: 13 in Grid regions. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Get the half-hourly carbon intensity of electricity (gCO2/kWh) for Great Britain, its grid regions and UK postcodes from the Carbon Intensity API of the National Energy System Operator (NESO). Each half-hour has a forecast, an actual value (national only), an index and the generation mix. The Actor also finds the lowest-carbon time windows for EV charging, heat pumps, batch jobs and other flexible loads.

  • It gets every half-hour in your time range for each area you choose: Great Britain, any of the 17 NESO regions, and up to 5 postcodes.
  • It turns each half-hour into one clean row with UTC times, forecast and actual intensity, the index and the fuel mix.
  • It finds the best non-overlapping windows of the length you choose (for example 3 windows of 2 hours), ranked by the average forecast intensity.

Good for

  • You plan EV charging, heat pumps, batteries or batch jobs and need the greenest hours in the next day or two.
  • You report on grid carbon intensity for a past day or week (ESG, energy dashboards).
  • You compare regions or sites by postcode for the same time range.

Not a good fit

  • It does not calculate the carbon footprint of your business and does not issue certificates or guarantees of origin.
  • Great Britain only. Northern Ireland is not covered by the source.
  • Regions and postcodes have forecasts only. The source has no regional actual values.
  • Forecasts reach about 48 hours ahead. History starts in 2017–2018.

Who uses it

EV and heat pump owners

Charge or heat when the grid is cleanest.

Energy and ESG teams

Report grid carbon for a past day or week.

Developers

Move batch jobs to low-carbon hours.

Price

Prices will be shown after release.

Questions

Does it cover Northern Ireland?

No. The source covers Great Britain only.

Why is the actual value empty?

Actual values exist only for Great Britain as a whole. They exist only for past half hours.

Does it calculate my company's footprint?

No. It shows grid carbon intensity. It does not issue certificates.

Do I need an API key?

No. The NESO Carbon Intensity API is free and public.

Why is actualIntensity null?

The source publishes actual values only for Great Britain as a whole and only for half-hours that have passed. Regions and postcodes have forecasts only. A null means "no value", never 0.

How fresh is the data?

Each run requests the source live. fetchedAt shows when. Forecasts change during the day, so a later run can show different forecasts for the same half-hour.

Why are times in UTC?

The source uses UTC. A UK calendar day (today, 2026-10-25) is converted for you, so clock-change days have 46 or 50 half-hours.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep the prefilled input: Great Britain, regions 13 (London) and 16 (Scotland), from now to +24h.
  3. Optionally add a postcode such as M1 or EH1 1YZ.
  4. Click Start.
  5. In the Output tab, open Low-carbon windows only for the ranked windows, or All rows for every half-hour (the recordType column says period, window or area_status).
Use cases
TaskInputYou getKey fieldsNext step
Schedule EV charging or a heat pumppostcodes, windowDurationHours, windowCountwindowfrom, to, averageForecastIntensity, windowRankYour scheduler reads the rank 1 window
Daily ESG or energy reportstartTime: "yesterday", includeNationalperiodactualIntensity, forecastIntensity, generationMixExport CSV/Excel or Google Sheets
Compare regionsregionsperiodregionName, forecastIntensity, intensityIndexDashboard or BI tool
Tips for better results
  • Ask for a few windows of a fixed length, like 3 windows of 2 hours.
  • Times are in UTC. A UK clock-change day has 46 or 50 half hours.
  • Run again later in the day. Forecasts change during the day.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "recordType": "period",
  "area": "GB (national)",
  "areaType": "national",
  "from": "2026-10-12T13:30:00Z",
  "to": "2026-10-12T14:00:00Z",
  "forecastIntensity": 73,
  "actualIntensity": null,
  "intensityIndex": "low",
  "unit": "gCO2/kWh",
  "generationMix": { "wind": 49.5, "gas": 13, "nuclear": 11.5, "imports": 10.7, "biomass": 8.7, "solar": 6.6, "hydro": 0, "coal": 0, "other": 0 },
  "status": "ok",
  "provider": "Carbon Intensity API (National Energy System Operator)",
  "sourceUrl": "https://api.carbonintensity.org.uk/intensity/2026-10-12T13:30Z/2026-10-13T13:30Z",
  "fetchedAt": "2026-10-12T13:52:42Z"
}
Data fields (25)
FieldTypeMeaning
recordTypestringperiod = one half-hour of one area; window = a ranked low-carbon window; area_status = an area with no rows (not_found, no_data or error).
areastringArea label: GB (national), region name or postcode.
areaTypestring
regionIdintegerNESO region ID 1–17; null for national.
regionNamestring
dnoRegionstringDistribution network operator region name from the source.
postcodestringOutward postcode used for the lookup.
fromstringStart of the half-hour or window, UTC ISO 8601.
tostringEnd, UTC ISO 8601.
forecastIntensitynumberForecast carbon intensity, gCO2/kWh.
actualIntensitynumberActual (estimated from metered generation) intensity, gCO2/kWh. National only; null for future periods and regions — null is not zero.
intensityIndexstring
unitstring
generationMixobjectPercent of generation by fuel.
windowRankinteger1 = lowest average forecast intensity.
windowDurationHoursnumber
averageForecastIntensitynumberMean forecast over the window's half-hours, rounded to 0.1 gCO2/kWh.
minForecastIntensitynumber
maxForecastIntensitynumber
isUpcomingbooleantrue if the window starts after the run started; false if it is already in progress.
statusstring
messagestring
providerstring
sourceUrlstringExact API request behind the row.
fetchedAtstringWhen the source was requested, UTC.
Input settings (11)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Great Britain (national)includeNationalbooleantrue
Grid regionsregionsarray["13", "16"]
UK postcodes (outward code)postcodesarray
StartstartTimestring"now"
EndendTimestring"+24h"
Half-hour periodsincludeHalfHourPeriodsbooleantrue
Generation mixincludeGenerationMixbooleantrue
Find low-carbon windowsfindLowCarbonWindowsbooleantrue
Window length (hours)windowDurationHoursnumber2
Number of windowswindowCountinteger3
Windows only in the futurewindowsFromNowOnlybooleantrue

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure