Carbon Intensity

App · Weather & Space · 9 actions

Get the carbon intensity of electricity in Great Britain from the Carbon Intensity API of National Energy System Operator (NESO): the figure now, a half-hourly forecast up to two days ahead and past figures, for Great Britain, England, Scotland, Wales, 14 regions or a postcode. Find the lowest-carbon time to run something, estimate the CO2 of electricity used, compare regions and see the mix of fuels. No account or API key required.

Actions

ActionWhat it does
Compare regionsCompare the carbon intensity of the 14 regions of Great Britain's electricity network for one half hour, now or at another time the service has figures for: ranked from lowest to highest, each with its index and main fuel, plus England, Scotland, Wales and Great Britain as a whole.
Estimate the emissions of electricity useEstimate the CO2 that comes with using some electricity over a period of up to 31 days, such as a car's charging session or a month of meter readings, for Great Britain, a country, a region or a postcode.
Find the lowest-carbon time to use electricityFind when to run something that uses electricity for a set time, such as charging a car, a wash or a batch job, so that it uses the lowest-carbon electricity: the start, within the next 24 hours or a window of up to 48 as far as NESO's forecast reaches, with the lowest average carbon intensity for Great Britain, a country, a region or a postcode.
Get carbon intensity factorsGet the carbon intensity NESO counts for each kind of generation and import, in grams of CO2 per kilowatt-hour: coal, oil, gas (open and combined cycle), biomass, imports from each neighbouring country, and the zero-carbon sources such as nuclear, wind, solar and hydro.
Get carbon intensity for a periodGet every half hour of carbon intensity between two times up to 14 days apart, for Great Britain, a country, a region or a postcode: past figures, with NESO's estimated actuals for Great Britain, or forecasts ahead.
Get carbon intensity statisticsGet Great Britain's highest, average and lowest carbon intensity over a period of up to 30 days, with the service's index for the average, and optionally the same for each block of 1 to 24 hours in it, such as each day.
Get the carbon intensity forecastGet the half-hourly carbon intensity forecast for up to 48 hours ahead, from now or a given start, for Great Britain, a country, a region or a postcode: every half hour with its forecast and index, the average, and the lowest and highest half hours.
Get the current carbon intensityGet the carbon intensity of electricity right now, in grams of CO2 per kilowatt-hour, for Great Britain, England, Scotland, Wales, one of 14 regions or a postcode: the forecast for the half hour happening now, with an index from very low to very high to act on, such as running something only when it is low.
Get the generation mixGet the mix of fuels electricity is generated from, in percent (wind, solar, nuclear, gas, biomass, hydro, imports, coal and other), for Great Britain, a country, a region or a postcode: for the current half hour, the half hour a given time falls in, or on average over a period of up to 14 days.

Compare regions

Compare the carbon intensity of the 14 regions of Great Britain's electricity network for one half hour, now or at another time the service has figures for: ranked from lowest to highest, each with its index and main fuel, plus England, Scotland, Wales and Great Britain as a whole. No API key required.

Inputs

Timetimedate and time
Compare the half hour this time falls in. Leave empty for now. It can be as far ahead as the forecast reaches, or back to May 2018. A date or time written without a time zone is read as UK time.

Outputs

countrieslist
England, Scotland and Wales, lowest first.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
great_britainobject
Great Britain as a whole, as the regional forecast has it; null if the service leaves it out.
highestobject
The highest region.
lowestobject
The lowest region.
regionslist
The regions, lowest carbon intensity first.
spreadnumber
How far apart the highest and lowest regions are, in gCO2/kWh.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
uk_timetext
The same span on the UK clock, e.g. '14:00 to 14:30 BST on Fri 25 Sep'.
Example output
{
  "countries": [
    {
      "forecast": 221,
      "index": "high",
      "region": "Scotland",
      "region_id": 16
    },
    {
      "forecast": 297,
      "index": "very high",
      "region": "Wales",
      "region_id": 17
    },
    {
      "forecast": 302,
      "index": "very high",
      "region": "England",
      "region_id": 15
    }
  ],
  "from": "2024-01-12T06:00:00Z",
  "great_britain": {
    "forecast": 293,
    "index": "very high",
    "region": "Great Britain",
    "region_id": 18
  },
  "highest": {
    "forecast": 403,
    "index": "very high",
    "largest_fuel": "gas",
    "low_carbon_percent": 16.6,
    "network_operator": "WPD East Midlands",
    "rank": 14,
    "region": "East Midlands",
    "region_id": 9
  },
  "lowest": {
    "forecast": 158,
    "index": "moderate",
    "largest_fuel": "biomass",
    "low_carbon_percent": 71.3,
    "network_operator": "NPG North East",
    "rank": 1,
    "region": "North East England",
    "region_id": 4
  },
  "regions": [
    {
      "forecast": 158,
      "index": "moderate",
      "largest_fuel": "biomass",
      "low_carbon_percent": 71.3,
      "network_operator": "NPG North East",
      "rank": 1,
      "region": "North East England",
      "region_id": 4
    },
    {
      "forecast": 182,
      "index": "moderate",
      "largest_fuel": "gas",
      "low_carbon_percent": 53.8,
      "network_operator": "UKPN East",
      "rank": 2,
      "region": "East England",
      "region_id": 10
    },
    {
      "forecast": 188,
      "index": "moderate",
      "largest_fuel": "gas",
      "low_carbon_percent": 59.7,
      "network_operator": "Electricity North West",
      "rank": 3,
      "region": "North West England",
      "region_id": 3
    },
    {
      "forecast": 198,
      "index": "high",
      "largest_fuel": "gas",
      "low_carbon_percent": 50.2,
      "network_operator": "SP Distribution",
      "rank": 4,
      "region": "South Scotland",
      "region_id": 2
    },
    {
      "forecast": 215,
      "index": "high",
      "largest_fuel": "biomass",
      "low_carbon_percent": 58.2,
      "network_operator": "NPG Yorkshire",
      "rank": 5,
      "region": "Yorkshire",
      "region_id": 5
    },
    {
      "forecast": 266,
      "index": "high",
      "largest_fuel": "gas",
      "low_carbon_percent": 35.9,
      "network_operator": "SP Manweb",
      "rank": 6,
      "region": "North Wales & Merseyside",
      "region_id": 6
    },
    {
      "forecast": 266,
      "index": "high",
      "largest_fuel": "gas",
      "low_carbon_percent": 32.7,
      "network_operator": "UKPN London",
      "rank": 7,
      "region": "London",
      "region_id": 13
    },
    {
      "forecast": 303,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 23.1,
      "network_operator": "UKPN South East",
      "rank": 8,
      "region": "South East England",
      "region_id": 14
    },
    {
      "forecast": 314,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 20.3,
      "network_operator": "Scottish Hydro Electric Power Distribution",
      "rank": 9,
      "region": "North Scotland",
      "region_id": 1
    },
    {
      "forecast": 364,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 7.7,
      "network_operator": "WPD South Wales",
      "rank": 10,
      "region": "South Wales",
      "region_id": 7
    },
    {
      "forecast": 388,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 1.6,
      "network_operator": "WPD South West",
      "rank": 11,
      "region": "South West England",
      "region_id": 11
    },
    {
      "forecast": 390,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 10.6,
      "network_operator": "WPD West Midlands",
      "rank": 12,
      "region": "West Midlands",
      "region_id": 8
    },
    {
      "forecast": 392,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 2.0,
      "network_operator": "SSE South",
      "rank": 13,
      "region": "South England",
      "region_id": 12
    },
    {
      "forecast": 403,
      "index": "very high",
      "largest_fuel": "gas",
      "low_carbon_percent": 16.6,
      "network_operator": "WPD East Midlands",
      "rank": 14,
      "region": "East Midlands",
      "region_id": 9
    }
  ],
  "spread": 245,
  "summary": "Carbon intensity by region, 06:00 to 06:30 GMT on Fri 12 Jan: lowest North East England at 158 gCO2/kWh (moderate), highest East Midlands at 403 (very high), across 14 regions.",
  "to": "2024-01-12T06:30:00Z",
  "uk_time": "06:00 to 06:30 GMT on Fri 12 Jan"
}

Estimate the emissions of electricity use

Estimate the CO2 that comes with using some electricity over a period of up to 31 days, such as a car's charging session or a month of meter readings, for Great Britain, a country, a region or a postcode. The energy is taken as used evenly over the period, and each half hour counts at NESO's estimated actual carbon intensity where there is one, otherwise its forecast. Time the service has no figures for counts at the average of the rest, and the result says how much that was. No API key required.

Inputs

Energy used (kWh)energy_kwhnumberRequired
How much electricity was used over the period, in kilowatt-hours, such as 7.4 for an hour's charging at 7.4 kW or a meter reading's difference.At least 0.
Startstartdate and timeRequired
When the electricity started being used. A date alone is midnight at the start of that day in the UK, and any date or time written without a time zone is read as UK time.
Endenddate and timeRequired
When it stopped, up to 31 days after the start. It may be in the future, as far as the forecast reaches, for an estimate from the forecast.
Regionregiontext
Where in Great Britain: the whole of Great Britain (the default), England, Scotland or Wales, or one of the 14 regions of the electricity distribution network. To use a postcode instead, leave this on Great Britain.One of: gb (Great Britain), england, scotland, wales, north_scotland (North Scotland), south_scotland (South Scotland), north_west_england (North West England), north_east_england (North East England), yorkshire, north_wales_merseyside (North Wales & Merseyside), and 8 more. Default: gb.
Postcodepostcodetext
A postcode in England, Scotland or Wales, whole or just its first half, such as 'EH1 1YZ' or 'RG10'. The figures are then for the distribution region it is in. Only the first half (the outward code) is sent. Northern Ireland has its own grid and is not covered.

Outputs

areatext
Where the figures are for: 'Great Britain', 'England', 'Scotland', 'Wales' or a region, e.g. 'London'.
average_intensitynumber
The carbon intensity over the period, in gCO2/kWh, weighted by how much of each half hour it covers.
basistext
What the figures were: 'actual' (NESO's estimates of what happened), 'forecast', or 'actual and forecast'. Regions only have forecasts.
coverage_percentnumber
How much of the period the service has figures for, in percent. Time without is counted at the average of the rest; under 90% the estimate is refused.
emissions_gnumber
The estimated emissions, in grams of CO2.
emissions_kgnumber
The estimated emissions, in kilograms of CO2.
energy_kwhnumber
The energy used, in kWh, as given.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
network_operatortext
The region's distribution network operator as the service names it, e.g. 'UKPN London'. Null for Great Britain and the countries.
period_countnumber
How many half hours the period touches.
postcodetext
The first half of the postcode the figures were asked for with, e.g. 'RG10'. Null when a region was chosen.
region_idnumber
The service's number for the area: 1 to 14 for the regions, 15 to 17 for England, Scotland and Wales, 18 for Great Britain.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
uk_timetext
The same span on the UK clock, e.g. '14:00 to 14:30 BST on Fri 25 Sep'.
Example output
{
  "area": "Great Britain",
  "average_intensity": 274.0,
  "basis": "actual",
  "coverage_percent": 100.0,
  "emissions_g": 2027.6,
  "emissions_kg": 2.028,
  "energy_kwh": 7.4,
  "from": "2024-01-11T06:00:00Z",
  "network_operator": null,
  "period_count": 2,
  "postcode": null,
  "region_id": 18,
  "summary": "7.4 kWh used evenly in Great Britain, 06:00 to 07:00 GMT on Thu 11 Jan: about 2.028 kg of CO2, at 274 gCO2/kWh on average (actual carbon intensity).",
  "to": "2024-01-11T07:00:00Z",
  "uk_time": "06:00 to 07:00 GMT on Thu 11 Jan"
}

Find the lowest-carbon time to use electricity

Find when to run something that uses electricity for a set time, such as charging a car, a wash or a batch job, so that it uses the lowest-carbon electricity: the start, within the next 24 hours or a window of up to 48 as far as NESO's forecast reaches, with the lowest average carbon intensity for Great Britain, a country, a region or a postcode. Says how long to wait, how much lower it is than starting at the earliest start (now, unless one is given), and whether now is already the best time. No API key required.

Inputs

Duration (minutes)duration_minutesnumberRequired
How long the task runs, in minutes, such as 120 for a two-hour charge or 90 for a wash. From 1 to 2,880 (48 hours).From 1 to 2880.
Regionregiontext
Where in Great Britain: the whole of Great Britain (the default), England, Scotland or Wales, or one of the 14 regions of the electricity distribution network. To use a postcode instead, leave this on Great Britain.One of: gb (Great Britain), england, scotland, wales, north_scotland (North Scotland), south_scotland (South Scotland), north_west_england (North West England), north_east_england (North East England), yorkshire, north_wales_merseyside (North Wales & Merseyside), and 8 more. Default: gb.
Postcodepostcodetext
A postcode in England, Scotland or Wales, whole or just its first half, such as 'EH1 1YZ' or 'RG10'. The figures are then for the distribution region it is in. Only the first half (the outward code) is sent. Northern Ireland has its own grid and is not covered.
Earliest startearliest_startdate and time
The earliest the task may start. Leave empty for now. It can be in the past, to see when would have been best. A date or time written without a time zone is read as UK time.
Latest finishlatest_finishdate and time
When the task must be finished by, such as 07:00 tomorrow for a car charged overnight. Leave empty for 24 hours after the earliest start. At most 48 hours after it, as far as the forecast reaches.

Outputs

areatext
Where the figures are for: 'Great Britain', 'England', 'Scotland', 'Wales' or a region, e.g. 'London'.
average_intensitynumber
The average carbon intensity over that time, in gCO2/kWh, weighted by how much of each half hour it uses.
completetrue/false
True when the forecast covered the whole window searched; false when it ended first.
duration_minutesnumber
How long the task runs, in minutes.
earliest_start_average_intensitynumber
The average carbon intensity if the task started at the earliest start instead, in gCO2/kWh.
endtext
When it will finish, in UTC (ISO 8601).
network_operatortext
The region's distribution network operator as the service names it, e.g. 'UKPN London'. Null for Great Britain and the countries.
periodslist
The half hours the best time runs across.
postcodetext
The first half of the postcode the figures were asked for with, e.g. 'RG10'. Null when a region was chosen.
region_idnumber
The service's number for the area: 1 to 14 for the regions, 15 to 17 for England, Scotland and Wales, 18 for Great Britain.
saving_percentnumber
How much lower the best time's average is than starting at the earliest start, in percent.
searched_fromtext
The earliest start searched from, in UTC.
searched_totext
The latest finish searched to, in UTC: the latest finish given, or where the forecast ends if sooner.
starttext
When to start, in UTC (ISO 8601).
start_nowtrue/false
True when the best time is now: no earliest start was given and nothing later is lower.
summarytext
The answer as plain sentences.
uk_timetext
The same span on the UK clock, e.g. '14:00 to 14:30 BST on Fri 25 Sep'.
wait_minutesnumber
Minutes from the earliest start (now, unless one was given) until the best start; 0 means start straight away.
Example output
{
  "area": "Great Britain",
  "average_intensity": 298.8,
  "complete": true,
  "duration_minutes": 60,
  "earliest_start_average_intensity": 298.8,
  "end": "2024-01-12T07:10:00Z",
  "network_operator": null,
  "periods": [
    {
      "actual": null,
      "forecast": 293,
      "from": "2024-01-12T06:00:00Z",
      "index": "very high",
      "intensity": 293,
      "to": "2024-01-12T06:30:00Z",
      "uk_time": "06:00 to 06:30 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 301,
      "from": "2024-01-12T06:30:00Z",
      "index": "very high",
      "intensity": 301,
      "to": "2024-01-12T07:00:00Z",
      "uk_time": "06:30 to 07:00 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 304,
      "from": "2024-01-12T07:00:00Z",
      "index": "very high",
      "intensity": 304,
      "to": "2024-01-12T07:30:00Z",
      "uk_time": "07:00 to 07:30 GMT on Fri 12 Jan"
    }
  ],
  "postcode": null,
  "region_id": 18,
  "saving_percent": 0.0,
  "searched_from": "2024-01-12T06:10:00Z",
  "searched_to": "2024-01-12T10:00:00Z",
  "start": "2024-01-12T06:10:00Z",
  "start_now": true,
  "summary": "Lowest-carbon 1 hour in Great Britain: start now (06:10 to 07:10 GMT on Fri 12 Jan), at 298.8 gCO2/kWh on average. Nothing later is lower.",
  "uk_time": "06:10 to 07:10 GMT on Fri 12 Jan",
  "wait_minutes": 0
}

Get carbon intensity factors

Get the carbon intensity NESO counts for each kind of generation and import, in grams of CO2 per kilowatt-hour: coal, oil, gas (open and combined cycle), biomass, imports from each neighbouring country, and the zero-carbon sources such as nuclear, wind, solar and hydro. No API key required.

Inputs

None.

Outputs

countnumber
How many fuels and imports there are.
factorslist
Each fuel and its factor, highest first.
summarytext
The answer as plain sentences.
Example output
{
  "count": 14,
  "factors": [
    {
      "fuel": "Coal",
      "gco2_per_kwh": 937
    },
    {
      "fuel": "Oil",
      "gco2_per_kwh": 935
    },
    {
      "fuel": "Gas (Open Cycle)",
      "gco2_per_kwh": 651
    },
    {
      "fuel": "Dutch Imports",
      "gco2_per_kwh": 474
    },
    {
      "fuel": "Irish Imports",
      "gco2_per_kwh": 458
    },
    {
      "fuel": "Gas (Combined Cycle)",
      "gco2_per_kwh": 394
    },
    {
      "fuel": "Other",
      "gco2_per_kwh": 300
    },
    {
      "fuel": "Biomass",
      "gco2_per_kwh": 120
    },
    {
      "fuel": "French Imports",
      "gco2_per_kwh": 53
    },
    {
      "fuel": "Hydro",
      "gco2_per_kwh": 0
    },
    {
      "fuel": "Nuclear",
      "gco2_per_kwh": 0
    },
    {
      "fuel": "Pumped Storage",
      "gco2_per_kwh": 0
    },
    {
      "fuel": "Solar",
      "gco2_per_kwh": 0
    },
    {
      "fuel": "Wind",
      "gco2_per_kwh": 0
    }
  ],
  "summary": "Carbon intensity factors for 14 fuels and imports, in gCO2/kWh, highest first: Coal 937, Oil 935, Gas (Open Cycle) 651, Dutch Imports 474, Irish Imports 458, Gas (Combined Cycle) 394, Other 300, Biomass 120, French Imports 53, Hydro 0, Nuclear 0, Pumped Storage 0, Solar 0, Wind 0."
}

Get carbon intensity for a period

Get every half hour of carbon intensity between two times up to 14 days apart, for Great Britain, a country, a region or a postcode: past figures, with NESO's estimated actuals for Great Britain, or forecasts ahead. Also returns the averages and the lowest and highest half hours, and any spans without figures. Records go back to September 2017 for Great Britain and May 2018 for regions. No API key required.

Inputs

Startstartdate and timeRequired
The start of the period. A date alone, such as 2026-09-24, is midnight at the start of that day in the UK, and any date or time written without a time zone is read as UK time.
Endenddate and time
The end of the period, up to 14 days after the start. Leave empty for a day after the start on the UK clock, so a date alone gives that whole day.
Regionregiontext
Where in Great Britain: the whole of Great Britain (the default), England, Scotland or Wales, or one of the 14 regions of the electricity distribution network. To use a postcode instead, leave this on Great Britain.One of: gb (Great Britain), england, scotland, wales, north_scotland (North Scotland), south_scotland (South Scotland), north_west_england (North West England), north_east_england (North East England), yorkshire, north_wales_merseyside (North Wales & Merseyside), and 8 more. Default: gb.
Postcodepostcodetext
A postcode in England, Scotland or Wales, whole or just its first half, such as 'EH1 1YZ' or 'RG10'. The figures are then for the distribution region it is in. Only the first half (the outward code) is sent. Northern Ireland has its own grid and is not covered.

Outputs

areatext
Where the figures are for: 'Great Britain', 'England', 'Scotland', 'Wales' or a region, e.g. 'London'.
average_actualnumber
The average of NESO's estimated actuals, in gCO2/kWh, over the half hours that have one. Null when none do, as for every region.
average_forecastnumber
The average forecast, in gCO2/kWh.
average_intensitynumber
The average of the half hours' figures, in gCO2/kWh.
completetrue/false
True when the figures cover the whole time asked about; false when the forecast stops short of it or records are missing.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
gapslist
Spans of the time asked about with no figures, in order: where the forecast stops short, or a hole in the service's records. Empty when complete.
highestobject
The half hour with the highest figure (the earliest, on a tie).
lowestobject
The half hour with the lowest figure (the earliest, on a tie).
network_operatortext
The region's distribution network operator as the service names it, e.g. 'UKPN London'. Null for Great Britain and the countries.
period_countnumber
How many half hours there are.
periodslist
Every half hour, in order.
postcodetext
The first half of the postcode the figures were asked for with, e.g. 'RG10'. Null when a region was chosen.
region_idnumber
The service's number for the area: 1 to 14 for the regions, 15 to 17 for England, Scotland and Wales, 18 for Great Britain.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
Example output
{
  "area": "Great Britain",
  "average_actual": 277.6,
  "average_forecast": 275.1,
  "average_intensity": 277.6,
  "complete": true,
  "from": "2024-01-11T06:00:00Z",
  "gaps": [],
  "highest": {
    "actual": 283,
    "forecast": 277,
    "from": "2024-01-11T07:30:00Z",
    "index": "very high",
    "intensity": 283,
    "to": "2024-01-11T08:00:00Z",
    "uk_time": "07:30 to 08:00 GMT on Thu 11 Jan"
  },
  "lowest": {
    "actual": 271,
    "forecast": 264,
    "from": "2024-01-11T06:00:00Z",
    "index": "very high",
    "intensity": 271,
    "to": "2024-01-11T06:30:00Z",
    "uk_time": "06:00 to 06:30 GMT on Thu 11 Jan"
  },
  "network_operator": null,
  "period_count": 8,
  "periods": [
    {
      "actual": 271,
      "forecast": 264,
      "from": "2024-01-11T06:00:00Z",
      "index": "very high",
      "intensity": 271,
      "to": "2024-01-11T06:30:00Z",
      "uk_time": "06:00 to 06:30 GMT on Thu 11 Jan"
    },
    {
      "actual": 277,
      "forecast": 263,
      "from": "2024-01-11T06:30:00Z",
      "index": "very high",
      "intensity": 277,
      "to": "2024-01-11T07:00:00Z",
      "uk_time": "06:30 to 07:00 GMT on Thu 11 Jan"
    },
    {
      "actual": 282,
      "forecast": 269,
      "from": "2024-01-11T07:00:00Z",
      "index": "very high",
      "intensity": 282,
      "to": "2024-01-11T07:30:00Z",
      "uk_time": "07:00 to 07:30 GMT on Thu 11 Jan"
    },
    {
      "actual": 283,
      "forecast": 277,
      "from": "2024-01-11T07:30:00Z",
      "index": "very high",
      "intensity": 283,
      "to": "2024-01-11T08:00:00Z",
      "uk_time": "07:30 to 08:00 GMT on Thu 11 Jan"
    },
    {
      "actual": 282,
      "forecast": 287,
      "from": "2024-01-11T08:00:00Z",
      "index": "very high",
      "intensity": 282,
      "to": "2024-01-11T08:30:00Z",
      "uk_time": "08:00 to 08:30 GMT on Thu 11 Jan"
    },
    {
      "actual": 275,
      "forecast": 289,
      "from": "2024-01-11T08:30:00Z",
      "index": "very high",
      "intensity": 275,
      "to": "2024-01-11T09:00:00Z",
      "uk_time": "08:30 to 09:00 GMT on Thu 11 Jan"
    },
    {
      "actual": 276,
      "forecast": 278,
      "from": "2024-01-11T09:00:00Z",
      "index": "very high",
      "intensity": 276,
      "to": "2024-01-11T09:30:00Z",
      "uk_time": "09:00 to 09:30 GMT on Thu 11 Jan"
    },
    {
      "actual": 275,
      "forecast": 274,
      "from": "2024-01-11T09:30:00Z",
      "index": "very high",
      "intensity": 275,
      "to": "2024-01-11T10:00:00Z",
      "uk_time": "09:30 to 10:00 GMT on Thu 11 Jan"
    }
  ],
  "postcode": null,
  "region_id": 18,
  "summary": "Carbon intensity in Great Britain, 06:00 to 10:00 GMT on Thu 11 Jan: 277.6 gCO2/kWh on average over 8 half hours (estimated actuals). Lowest 271 gCO2/kWh (very high) at 06:00 to 06:30 GMT on Thu 11 Jan; highest 283 gCO2/kWh (very high) at 07:30 to 08:00 GMT on Thu 11 Jan.",
  "to": "2024-01-11T10:00:00Z"
}

Get carbon intensity statistics

Get Great Britain's highest, average and lowest carbon intensity over a period of up to 30 days, with the service's index for the average, and optionally the same for each block of 1 to 24 hours in it, such as each day. Past half hours count at NESO's estimated actual and future ones at their forecast. No API key required.

Inputs

Startstartdate and timeRequired
The start of the period. A date alone, such as 2026-09-24, is midnight at the start of that day in the UK, and any date or time written without a time zone is read as UK time.
Endenddate and time
The end of the period, up to 30 days after the start as the hours pass (720 hours), which across the October clock change is an hour short of 30 days on the UK clock. Leave empty for a day after the start on the UK clock, so a date alone gives that whole day.
Block hoursblock_hoursnumber
Also split the period into blocks of this many hours, from 1 to 24, each with its own highest, average and lowest: 24 gives one block a day. When the period does not divide into whole blocks, the last one is shorter. Leave empty for the whole period only.From 1 to 24.

Outputs

averagenumber
The average, in gCO2/kWh.
block_hoursnumber
The block length asked for, or null.
blockslist
Each block, in order, when a block length was given; otherwise empty. The last ends with the period, so it is shorter when the period does not divide into whole blocks.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
indextext
The service's index for the average: 'very low' to 'very high'.
maxnumber
The highest half hour, in gCO2/kWh.
minnumber
The lowest half hour, in gCO2/kWh.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
uk_timetext
The same span on the UK clock, e.g. '14:00 to 14:30 BST on Fri 25 Sep'.
Example output
{
  "average": 134,
  "block_hours": 6,
  "blocks": [
    {
      "average": 159,
      "from": "2026-09-23T23:00:00Z",
      "index": "moderate",
      "max": 173,
      "min": 151,
      "to": "2026-09-24T05:00:00Z",
      "uk_time": "00:00 to 06:00 BST on Thu 24 Sep"
    },
    {
      "average": 130,
      "from": "2026-09-24T05:00:00Z",
      "index": "moderate",
      "max": 176,
      "min": 82,
      "to": "2026-09-24T11:00:00Z",
      "uk_time": "06:00 to 12:00 BST on Thu 24 Sep"
    },
    {
      "average": 106,
      "from": "2026-09-24T11:00:00Z",
      "index": "moderate",
      "max": 169,
      "min": 75,
      "to": "2026-09-24T17:00:00Z",
      "uk_time": "12:00 to 18:00 BST on Thu 24 Sep"
    },
    {
      "average": 142,
      "from": "2026-09-24T17:00:00Z",
      "index": "moderate",
      "max": 171,
      "min": 111,
      "to": "2026-09-24T23:00:00Z",
      "uk_time": "18:00 to 00:00 BST on Thu 24 Sep"
    }
  ],
  "from": "2026-09-23T23:00:00Z",
  "index": "moderate",
  "max": 176,
  "min": 75,
  "summary": "Carbon intensity in Great Britain, 00:00 BST on Thu 24 Sep to 00:00 BST on Fri 25 Sep: 134 gCO2/kWh on average (moderate), highest 176, lowest 75. Lowest 6-hour block: 12:00 to 18:00 BST on Thu 24 Sep, 106 on average.",
  "to": "2026-09-24T23:00:00Z",
  "uk_time": "00:00 BST on Thu 24 Sep to 00:00 BST on Fri 25 Sep"
}

Get the carbon intensity forecast

Get the half-hourly carbon intensity forecast for up to 48 hours ahead, from now or a given start, for Great Britain, a country, a region or a postcode: every half hour with its forecast and index, the average, and the lowest and highest half hours. NESO forecasts about two days ahead, and the result says where the forecast stops. No API key required.

Inputs

Regionregiontext
Where in Great Britain: the whole of Great Britain (the default), England, Scotland or Wales, or one of the 14 regions of the electricity distribution network. To use a postcode instead, leave this on Great Britain.One of: gb (Great Britain), england, scotland, wales, north_scotland (North Scotland), south_scotland (South Scotland), north_west_england (North West England), north_east_england (North East England), yorkshire, north_wales_merseyside (North Wales & Merseyside), and 8 more. Default: gb.
Postcodepostcodetext
A postcode in England, Scotland or Wales, whole or just its first half, such as 'EH1 1YZ' or 'RG10'. The figures are then for the distribution region it is in. Only the first half (the outward code) is sent. Northern Ireland has its own grid and is not covered.
Hours aheadhoursnumber
How many hours of forecast to get, from 1 to 48, starting with the half hour the start falls in (the current one, unless a start is given). Leave empty for 24. NESO forecasts about two days ahead, and the result says where its forecast stops.From 1 to 48. Default: 24.
Startstartdate and time
When the forecast starts: it runs from the half hour this falls in. Leave empty for now. A date or time written without a time zone is read as UK time.

Outputs

areatext
Where the figures are for: 'Great Britain', 'England', 'Scotland', 'Wales' or a region, e.g. 'London'.
average_intensitynumber
The average of the half hours' forecasts, in gCO2/kWh.
completetrue/false
True when the figures cover the whole time asked about; false when the forecast stops short of it or records are missing.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
gapslist
Spans of the time asked about with no figures, in order: where the forecast stops short, or a hole in the service's records. Empty when complete.
highestobject
The half hour with the highest forecast (the earliest, on a tie).
lowestobject
The half hour with the lowest forecast (the earliest, on a tie).
network_operatortext
The region's distribution network operator as the service names it, e.g. 'UKPN London'. Null for Great Britain and the countries.
period_countnumber
How many half hours there are.
periodslist
Every half hour, in order.
postcodetext
The first half of the postcode the figures were asked for with, e.g. 'RG10'. Null when a region was chosen.
region_idnumber
The service's number for the area: 1 to 14 for the regions, 15 to 17 for England, Scotland and Wales, 18 for Great Britain.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
Example output
{
  "area": "Great Britain",
  "average_intensity": 302.3,
  "complete": true,
  "from": "2024-01-12T06:00:00Z",
  "gaps": [],
  "highest": {
    "actual": null,
    "forecast": 306,
    "from": "2024-01-12T07:30:00Z",
    "index": "very high",
    "intensity": 306,
    "to": "2024-01-12T08:00:00Z",
    "uk_time": "07:30 to 08:00 GMT on Fri 12 Jan"
  },
  "lowest": {
    "actual": null,
    "forecast": 293,
    "from": "2024-01-12T06:00:00Z",
    "index": "very high",
    "intensity": 293,
    "to": "2024-01-12T06:30:00Z",
    "uk_time": "06:00 to 06:30 GMT on Fri 12 Jan"
  },
  "network_operator": null,
  "period_count": 6,
  "periods": [
    {
      "actual": null,
      "forecast": 293,
      "from": "2024-01-12T06:00:00Z",
      "index": "very high",
      "intensity": 293,
      "to": "2024-01-12T06:30:00Z",
      "uk_time": "06:00 to 06:30 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 301,
      "from": "2024-01-12T06:30:00Z",
      "index": "very high",
      "intensity": 301,
      "to": "2024-01-12T07:00:00Z",
      "uk_time": "06:30 to 07:00 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 304,
      "from": "2024-01-12T07:00:00Z",
      "index": "very high",
      "intensity": 304,
      "to": "2024-01-12T07:30:00Z",
      "uk_time": "07:00 to 07:30 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 306,
      "from": "2024-01-12T07:30:00Z",
      "index": "very high",
      "intensity": 306,
      "to": "2024-01-12T08:00:00Z",
      "uk_time": "07:30 to 08:00 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 305,
      "from": "2024-01-12T08:00:00Z",
      "index": "very high",
      "intensity": 305,
      "to": "2024-01-12T08:30:00Z",
      "uk_time": "08:00 to 08:30 GMT on Fri 12 Jan"
    },
    {
      "actual": null,
      "forecast": 305,
      "from": "2024-01-12T08:30:00Z",
      "index": "very high",
      "intensity": 305,
      "to": "2024-01-12T09:00:00Z",
      "uk_time": "08:30 to 09:00 GMT on Fri 12 Jan"
    }
  ],
  "postcode": null,
  "region_id": 18,
  "summary": "Carbon intensity forecast for Great Britain, 06:00 to 09:00 GMT on Fri 12 Jan: 302.3 gCO2/kWh on average. Lowest 293 gCO2/kWh (very high) at 06:00 to 06:30 GMT on Fri 12 Jan; highest 306 gCO2/kWh (very high) at 07:30 to 08:00 GMT on Fri 12 Jan.",
  "to": "2024-01-12T09:00:00Z"
}

Get the current carbon intensity

Get the carbon intensity of electricity right now, in grams of CO2 per kilowatt-hour, for Great Britain, England, Scotland, Wales, one of 14 regions or a postcode: the forecast for the half hour happening now, with an index from very low to very high to act on, such as running something only when it is low. No API key required.

Inputs

Regionregiontext
Where in Great Britain: the whole of Great Britain (the default), England, Scotland or Wales, or one of the 14 regions of the electricity distribution network. To use a postcode instead, leave this on Great Britain.One of: gb (Great Britain), england, scotland, wales, north_scotland (North Scotland), south_scotland (South Scotland), north_west_england (North West England), north_east_england (North East England), yorkshire, north_wales_merseyside (North Wales & Merseyside), and 8 more. Default: gb.
Postcodepostcodetext
A postcode in England, Scotland or Wales, whole or just its first half, such as 'EH1 1YZ' or 'RG10'. The figures are then for the distribution region it is in. Only the first half (the outward code) is sent. Northern Ireland has its own grid and is not covered.

Outputs

actualnumber
NESO's estimate of the actual carbon intensity in gCO2/kWh, published after the half hour. Null for the current half hour, the future and every region.
areatext
Where the figures are for: 'Great Britain', 'England', 'Scotland', 'Wales' or a region, e.g. 'London'.
forecastnumber
The forecast carbon intensity, in grams of CO2 per kWh.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
indextext
The service's index for the intensity, the estimated actual where there is one: 'very low', 'low', 'moderate', 'high' or 'very high'.
intensitynumber
The best figure in gCO2/kWh: the estimated actual when there is one, otherwise the forecast.
network_operatortext
The region's distribution network operator as the service names it, e.g. 'UKPN London'. Null for Great Britain and the countries.
postcodetext
The first half of the postcode the figures were asked for with, e.g. 'RG10'. Null when a region was chosen.
region_idnumber
The service's number for the area: 1 to 14 for the regions, 15 to 17 for England, Scotland and Wales, 18 for Great Britain.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
uk_timetext
The same span on the UK clock, e.g. '14:00 to 14:30 BST on Fri 25 Sep'.
Example output
{
  "actual": null,
  "area": "Great Britain",
  "forecast": 293,
  "from": "2024-01-12T06:00:00Z",
  "index": "very high",
  "intensity": 293,
  "network_operator": null,
  "postcode": null,
  "region_id": 18,
  "summary": "Carbon intensity in Great Britain now: 293 gCO2/kWh (very high), the forecast for 06:00 to 06:30 GMT on Fri 12 Jan.",
  "to": "2024-01-12T06:30:00Z",
  "uk_time": "06:00 to 06:30 GMT on Fri 12 Jan"
}

Get the generation mix

Get the mix of fuels electricity is generated from, in percent (wind, solar, nuclear, gas, biomass, hydro, imports, coal and other), for Great Britain, a country, a region or a postcode: for the current half hour, the half hour a given time falls in, or on average over a period of up to 14 days. Also adds up the low-carbon, renewable and fossil shares. No API key required.

Inputs

Regionregiontext
Where in Great Britain: the whole of Great Britain (the default), England, Scotland or Wales, or one of the 14 regions of the electricity distribution network. To use a postcode instead, leave this on Great Britain.One of: gb (Great Britain), england, scotland, wales, north_scotland (North Scotland), south_scotland (South Scotland), north_west_england (North West England), north_east_england (North East England), yorkshire, north_wales_merseyside (North Wales & Merseyside), and 8 more. Default: gb.
Postcodepostcodetext
A postcode in England, Scotland or Wales, whole or just its first half, such as 'EH1 1YZ' or 'RG10'. The figures are then for the distribution region it is in. Only the first half (the outward code) is sent. Northern Ireland has its own grid and is not covered.
Startstartdate and time
Leave empty for the current half hour. Given alone, the mix of the half hour it falls in; with an end, the average mix over the period. A date or time written without a time zone is read as UK time.
Endenddate and time
The end of the period to average the mix over, up to 14 days after the start. Needs a start.

Outputs

areatext
Where the figures are for: 'Great Britain', 'England', 'Scotland', 'Wales' or a region, e.g. 'London'.
completetrue/false
True when the figures cover the whole time asked about; false when the forecast stops short of it or records are missing.
fossil_percentnumber
Gas, coal and oil together, in percent.
fromtext
When it starts, in UTC (ISO 8601), e.g. 2026-09-25T13:00:00Z.
gapslist
Spans of the time asked about with no figures, in order: where the forecast stops short, or a hole in the service's records. Empty when complete.
generation_mixlist
Each fuel and its share, largest first.
largest_fueltext
The fuel with the largest share.
low_carbon_percentnumber
Wind, solar, hydro, biomass and nuclear together, in percent.
network_operatortext
The region's distribution network operator as the service names it, e.g. 'UKPN London'. Null for Great Britain and the countries.
percent_by_fuelobject
Each fuel's share in percent, keyed by the service's fuel names, largest first. Only the fuels the service reports are present.
period_countnumber
How many half hours the mix is over.
periodslist
Each half hour's own mix, in order.
postcodetext
The first half of the postcode the figures were asked for with, e.g. 'RG10'. Null when a region was chosen.
region_idnumber
The service's number for the area: 1 to 14 for the regions, 15 to 17 for England, Scotland and Wales, 18 for Great Britain.
renewable_percentnumber
Wind, solar, hydro and biomass together, in percent.
summarytext
The answer as plain sentences.
totext
When it ends, in UTC (ISO 8601).
uk_timetext
The same span on the UK clock, e.g. '14:00 to 14:30 BST on Fri 25 Sep'.
Example output
{
  "area": "Great Britain",
  "complete": true,
  "fossil_percent": 64.8,
  "from": "2024-01-11T06:00:00Z",
  "gaps": [],
  "generation_mix": [
    {
      "fuel": "gas",
      "percent": 61.9
    },
    {
      "fuel": "wind",
      "percent": 16.7
    },
    {
      "fuel": "nuclear",
      "percent": 7.6
    },
    {
      "fuel": "biomass",
      "percent": 7.6
    },
    {
      "fuel": "coal",
      "percent": 2.9
    },
    {
      "fuel": "hydro",
      "percent": 2.0
    },
    {
      "fuel": "imports",
      "percent": 1.2
    },
    {
      "fuel": "other",
      "percent": 0.0
    },
    {
      "fuel": "solar",
      "percent": 0.0
    }
  ],
  "largest_fuel": "gas",
  "low_carbon_percent": 33.9,
  "network_operator": null,
  "percent_by_fuel": {
    "biomass": 7.6,
    "coal": 2.9,
    "gas": 61.9,
    "hydro": 2.0,
    "imports": 1.2,
    "nuclear": 7.6,
    "other": 0.0,
    "solar": 0.0,
    "wind": 16.7
  },
  "period_count": 4,
  "periods": [
    {
      "from": "2024-01-11T06:00:00Z",
      "percent_by_fuel": {
        "biomass": 8.0,
        "coal": 2.1,
        "gas": 61.8,
        "hydro": 1.5,
        "imports": 0.4,
        "nuclear": 8.0,
        "other": 0.0,
        "solar": 0.0,
        "wind": 18.3
      },
      "to": "2024-01-11T06:30:00Z",
      "uk_time": "06:00 to 06:30 GMT on Thu 11 Jan"
    },
    {
      "from": "2024-01-11T06:30:00Z",
      "percent_by_fuel": {
        "biomass": 7.6,
        "coal": 2.8,
        "gas": 61.6,
        "hydro": 2.2,
        "imports": 1.2,
        "nuclear": 7.6,
        "other": 0.0,
        "solar": 0.0,
        "wind": 16.8
      },
      "to": "2024-01-11T07:00:00Z",
      "uk_time": "06:30 to 07:00 GMT on Thu 11 Jan"
    },
    {
      "from": "2024-01-11T07:00:00Z",
      "percent_by_fuel": {
        "biomass": 7.4,
        "coal": 3.2,
        "gas": 62.4,
        "hydro": 2.2,
        "imports": 1.4,
        "nuclear": 7.5,
        "other": 0.0,
        "solar": 0.0,
        "wind": 15.9
      },
      "to": "2024-01-11T07:30:00Z",
      "uk_time": "07:00 to 07:30 GMT on Thu 11 Jan"
    },
    {
      "from": "2024-01-11T07:30:00Z",
      "percent_by_fuel": {
        "biomass": 7.4,
        "coal": 3.3,
        "gas": 61.8,
        "hydro": 2.2,
        "imports": 2.0,
        "nuclear": 7.4,
        "other": 0.0,
        "solar": 0.0,
        "wind": 15.9
      },
      "to": "2024-01-11T08:00:00Z",
      "uk_time": "07:30 to 08:00 GMT on Thu 11 Jan"
    }
  ],
  "postcode": null,
  "region_id": 18,
  "renewable_percent": 26.3,
  "summary": "Average generation mix over 4 half hours in Great Britain, 06:00 to 08:00 GMT on Thu 11 Jan: gas 61.9%, wind 16.7%, nuclear 7.6%, biomass 7.6%, coal 2.9%. Low carbon 33.9%, fossil 64.8%.",
  "to": "2024-01-11T08:00:00Z",
  "uk_time": "06:00 to 08:00 GMT on Thu 11 Jan"
}

On this page