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
| Action | What it does |
|---|---|
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
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
- Time
timedate 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.
- Start
startdate 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.
- End
enddate 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.
- Region
regiontext - 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. - Postcode
postcodetext - 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.
- Region
regiontext - 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. - Postcode
postcodetext - 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 start
earliest_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 finish
latest_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
- Start
startdate 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.
- End
enddate 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.
- Region
regiontext - 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. - Postcode
postcodetext - 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
- Start
startdate 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.
- End
enddate 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 hours
block_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
- Region
regiontext - 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. - Postcode
postcodetext - 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 ahead
hoursnumber - 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. - Start
startdate 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
- Region
regiontext - 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. - Postcode
postcodetext - 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
- Region
regiontext - 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. - Postcode
postcodetext - 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.
- Start
startdate 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.
- End
enddate 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"
}