API
A public JSON API for the same Agile prices this site shows. No account and no key. It is unofficial and not affiliated with Octopus Energy.
Machine-readable description: OpenAPI 3.1. The examples below are pinned to 18:15 UTC on 2 Nov 2026 so this page stays stable. A live call returns the cached figures.
Limits
Each IP gets a bucket of 60 requests, refilled at one per second. History and forecast use a separate bucket of 10 per minute (/api/v1/prices/history and /api/v1/prices/forecast). HTML pages do not share either bucket, so API traffic cannot use up the site.
A 429 response includes Retry-After, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, and the X-RateLimit-* equivalents. On Railway the client address is X-Real-IP, which the public edge sets and overwrites. A client-supplied X-Forwarded-For does not choose the bucket while that header is present, because the last forwarded hop can be a proxy address that changes on each request. If X-Real-IP is missing, X-Envoy-External-Address is used, then the last forwarded hop for a local proxy. The standalone server is one Node process per container, and these buckets live in that process. HTML pages never use them. A second replica counts separately. There is no API key.
Successful responses send ETag and Cache-Control with s-maxage set to the seconds until the next half-hour, so a CDN can hold a response until the price can change. GET allows any origin. Responses are capped at 512 KiB. Only GET is supported.
Calls read the server cache the website already fills. A fresh cache entry does not call Octopus or AgilePredict. A miss or a stale copy is filled once through that shared cache, and a failed upstream is not retried on every poll.
Shape
Slot times are ISO 8601 in UTC (start, end) and in Europe/London with a numeric offset (start_uk, end_uk). value_inc_vat and value_exc_vat are copied from Octopus’s fields of those names, in pence per kWh. While household electricity VAT in Great Britain is 0%, Octopus publishes the same number in both, and source.vat_rate is 0 with a note that says so. This API does not add VAT. status is cheap, normal, expensive, or negative. Cheap means at least 15% under that London day’s average. Below 0p is negative: you get paid for the units. fetched_at is when this server stored the upstream response. Every payload carries the unofficial-use notice.
Endpoints
Regions
GET /api/v1/regions
The 14 GB distribution regions. Letters I and O are not used.
Params. None.
curl -sS "https://rillbates.com/api/v1/regions"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Rill Bates",
"note": "The 14 GB distribution regions used for Octopus Agile. Letters I and O are not used."
},
"count": 14,
"regions": [
{
"code": "A",
"slug": "eastern-england",
"name": "Eastern England",
"short_name": "Eastern",
"dno": "UK Power Networks",
"cities": "Norwich, Ipswich, Cambridge, Chelmsford"
},
{
"code": "B",
"slug": "east-midlands",
"name": "East Midlands",
"short_name": "East Midlands",
"dno": "National Grid Electricity Distribution",
"cities": "Nottingham, Leicester, Derby"
},
{
"code": "C",
"slug": "london",
"name": "London",
"short_name": "London",
"dno": "UK Power Networks",
"cities": "Greater London"
},
{
"code": "D",
"slug": "merseyside-and-north-wales",
"name": "Merseyside and North Wales",
"short_name": "Merseyside & N. Wales",
"dno": "SP Energy Networks",
"cities": "Liverpool, Chester, Wrexham"
},
{
"code": "E",
"slug": "west-midlands",
"name": "West Midlands",
"short_name": "West Midlands",
"dno": "National Grid Electricity Distribution",
"cities": "Birmingham, Coventry, Wolverhampton"
},
{
"code": "F",
"slug": "north-east-england",
"name": "North East England",
"short_name": "North East",
"dno": "Northern Powergrid",
"cities": "Newcastle, Sunderland, Middlesbrough"
},
{
"code": "G",
"slug": "north-west-england",
"name": "North West England",
"short_name": "North West",
"dno": "Electricity North West",
"cities": "Manchester, Preston, Carlisle"
},
{
"code": "H",
"slug": "southern-england",
"name": "Southern England",
"short_name": "Southern",
"dno": "SSEN",
"cities": "Oxford, Reading, Southampton, Portsmouth"
},
{
"code": "J",
"slug": "south-east-england",
"name": "South East England",
"short_name": "South East",
"dno": "UK Power Networks",
"cities": "Brighton, Canterbury, Guildford"
},
{
"code": "K",
"slug": "south-wales",
"name": "South Wales",
"short_name": "South Wales",
"dno": "National Grid Electricity Distribution",
"cities": "Cardiff, Swansea, Newport"
},
{
"code": "L",
"slug": "south-west-england",
"name": "South West England",
"short_name": "South West",
"dno": "National Grid Electricity Distribution",
"cities": "Bristol, Exeter, Plymouth"
},
{
"code": "M",
"slug": "yorkshire",
"name": "Yorkshire",
"short_name": "Yorkshire",
"dno": "Northern Powergrid",
"cities": "Leeds, Sheffield, York"
},
{
"code": "N",
"slug": "southern-scotland",
"name": "Southern Scotland",
"short_name": "South Scotland",
"dno": "SP Energy Networks",
"cities": "Glasgow, Edinburgh"
},
{
"code": "P",
"slug": "northern-scotland",
"name": "Northern Scotland",
"short_name": "North Scotland",
"dno": "SSEN",
"cities": "Aberdeen, Inverness, Dundee"
}
]
}Current price
GET /api/v1/prices/current?region=london
The half-hour in progress, with a cheap, normal, expensive, or negative status against today’s average.
Params. region (required): a letter A–P excluding I and O, or a slug such as london.
curl -sS "https://rillbates.com/api/v1/prices/current?region=london"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Octopus Energy public API",
"url": "https://developer.octopus.energy/guides/rest/api-endpoints/",
"product_code": "AGILE-24-10-01",
"tariff_code": "E-1R-AGILE-24-10-01-C",
"unit": "p/kWh",
"field": "value_inc_vat",
"vat_rate": 0,
"vat_note": "value_exc_vat is Octopus's published field, copied through unchanged. It matches value_inc_vat. Household electricity VAT in Great Britain is 0% for this period, so the two figures are equal. Rill Bates does not add VAT."
},
"fetched_at": "2026-11-02T18:10:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"average_inc_vat": 29,
"slot": {
"start": "2026-11-02T18:00:00.000Z",
"end": "2026-11-02T18:30:00.000Z",
"start_uk": "2026-11-02T18:00:00+00:00",
"end_uk": "2026-11-02T18:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
}
}Today
GET /api/v1/prices/today?region=london
Every published half-hour for the London civil day in progress. partial is true when the day is not complete.
Params. region (required).
curl -sS "https://rillbates.com/api/v1/prices/today?region=london"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Octopus Energy public API",
"url": "https://developer.octopus.energy/guides/rest/api-endpoints/",
"product_code": "AGILE-24-10-01",
"tariff_code": "E-1R-AGILE-24-10-01-C",
"unit": "p/kWh",
"field": "value_inc_vat",
"vat_rate": 0,
"vat_note": "value_exc_vat is Octopus's published field, copied through unchanged. It matches value_inc_vat. Household electricity VAT in Great Britain is 0% for this period, so the two figures are equal. Rill Bates does not add VAT."
},
"fetched_at": "2026-11-02T18:10:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"date": "2026-11-02",
"published": true,
"partial": true,
"average_inc_vat": 29,
"slot_count": 14,
"slots": [
{
"start": "2026-11-02T17:00:00.000Z",
"end": "2026-11-02T17:30:00.000Z",
"start_uk": "2026-11-02T17:00:00+00:00",
"end_uk": "2026-11-02T17:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 20,
"value_exc_vat": 20,
"unit": "p/kWh",
"status": "cheap"
},
{
"start": "2026-11-02T17:30:00.000Z",
"end": "2026-11-02T18:00:00.000Z",
"start_uk": "2026-11-02T17:30:00+00:00",
"end_uk": "2026-11-02T18:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 20,
"value_exc_vat": 20,
"unit": "p/kWh",
"status": "cheap"
},
{
"start": "2026-11-02T18:00:00.000Z",
"end": "2026-11-02T18:30:00.000Z",
"start_uk": "2026-11-02T18:00:00+00:00",
"end_uk": "2026-11-02T18:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T18:30:00.000Z",
"end": "2026-11-02T19:00:00.000Z",
"start_uk": "2026-11-02T18:30:00+00:00",
"end_uk": "2026-11-02T19:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T19:00:00.000Z",
"end": "2026-11-02T19:30:00.000Z",
"start_uk": "2026-11-02T19:00:00+00:00",
"end_uk": "2026-11-02T19:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T19:30:00.000Z",
"end": "2026-11-02T20:00:00.000Z",
"start_uk": "2026-11-02T19:30:00+00:00",
"end_uk": "2026-11-02T20:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T20:00:00.000Z",
"end": "2026-11-02T20:30:00.000Z",
"start_uk": "2026-11-02T20:00:00+00:00",
"end_uk": "2026-11-02T20:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T20:30:00.000Z",
"end": "2026-11-02T21:00:00.000Z",
"start_uk": "2026-11-02T20:30:00+00:00",
"end_uk": "2026-11-02T21:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T21:00:00.000Z",
"end": "2026-11-02T21:30:00.000Z",
"start_uk": "2026-11-02T21:00:00+00:00",
"end_uk": "2026-11-02T21:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T21:30:00.000Z",
"end": "2026-11-02T22:00:00.000Z",
"start_uk": "2026-11-02T21:30:00+00:00",
"end_uk": "2026-11-02T22:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T22:00:00.000Z",
"end": "2026-11-02T22:30:00.000Z",
"start_uk": "2026-11-02T22:00:00+00:00",
"end_uk": "2026-11-02T22:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T22:30:00.000Z",
"end": "2026-11-02T23:00:00.000Z",
"start_uk": "2026-11-02T22:30:00+00:00",
"end_uk": "2026-11-02T23:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T23:00:00.000Z",
"end": "2026-11-02T23:30:00.000Z",
"start_uk": "2026-11-02T23:00:00+00:00",
"end_uk": "2026-11-02T23:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 8,
"value_exc_vat": 8,
"unit": "p/kWh",
"status": "cheap"
},
{
"start": "2026-11-02T23:30:00.000Z",
"end": "2026-11-03T00:00:00.000Z",
"start_uk": "2026-11-02T23:30:00+00:00",
"end_uk": "2026-11-03T00:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 8,
"value_exc_vat": 8,
"unit": "p/kWh",
"status": "cheap"
}
]
}Tomorrow
GET /api/v1/prices/tomorrow?region=london
Tomorrow once Octopus has published it. An empty slots array and published: false is the honest answer before that. Nothing is estimated.
Params. region (required).
curl -sS "https://rillbates.com/api/v1/prices/tomorrow?region=london"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Octopus Energy public API",
"url": "https://developer.octopus.energy/guides/rest/api-endpoints/",
"product_code": "AGILE-24-10-01",
"tariff_code": "E-1R-AGILE-24-10-01-C",
"unit": "p/kWh",
"field": "value_inc_vat",
"vat_rate": 0,
"vat_note": "value_exc_vat is Octopus's published field, copied through unchanged. It matches value_inc_vat. Household electricity VAT in Great Britain is 0% for this period, so the two figures are equal. Rill Bates does not add VAT."
},
"fetched_at": "2026-11-02T18:10:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"date": "2026-11-03",
"published": false,
"partial": false,
"average_inc_vat": null,
"slot_count": 0,
"slots": []
}History
GET /api/v1/prices/history?region=london&days=7
London civil days ending today. days=1 is today. Longer ranges use the history cache. This route is on the heavy limit.
Params. region (required). days: a whole number from 1 to 30, default 1. Values above 30 are rejected. Heavy limit.
curl -sS "https://rillbates.com/api/v1/prices/history?region=london&days=7"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Octopus Energy public API",
"url": "https://developer.octopus.energy/guides/rest/api-endpoints/",
"product_code": "AGILE-24-10-01",
"tariff_code": "E-1R-AGILE-24-10-01-C",
"unit": "p/kWh",
"field": "value_inc_vat",
"vat_rate": 0,
"vat_note": "value_exc_vat is Octopus's published field, copied through unchanged. It matches value_inc_vat. Household electricity VAT in Great Britain is 0% for this period, so the two figures are equal. Rill Bates does not add VAT."
},
"fetched_at": "2026-11-02T18:10:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"days": 1,
"from": "2026-11-02",
"to": "2026-11-02",
"slot_count": 14,
"slots": [
{
"start": "2026-11-02T17:00:00.000Z",
"end": "2026-11-02T17:30:00.000Z",
"start_uk": "2026-11-02T17:00:00+00:00",
"end_uk": "2026-11-02T17:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 20,
"value_exc_vat": 20,
"unit": "p/kWh",
"status": "cheap"
},
{
"start": "2026-11-02T17:30:00.000Z",
"end": "2026-11-02T18:00:00.000Z",
"start_uk": "2026-11-02T17:30:00+00:00",
"end_uk": "2026-11-02T18:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 20,
"value_exc_vat": 20,
"unit": "p/kWh",
"status": "cheap"
},
{
"start": "2026-11-02T18:00:00.000Z",
"end": "2026-11-02T18:30:00.000Z",
"start_uk": "2026-11-02T18:00:00+00:00",
"end_uk": "2026-11-02T18:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T18:30:00.000Z",
"end": "2026-11-02T19:00:00.000Z",
"start_uk": "2026-11-02T18:30:00+00:00",
"end_uk": "2026-11-02T19:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T19:00:00.000Z",
"end": "2026-11-02T19:30:00.000Z",
"start_uk": "2026-11-02T19:00:00+00:00",
"end_uk": "2026-11-02T19:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T19:30:00.000Z",
"end": "2026-11-02T20:00:00.000Z",
"start_uk": "2026-11-02T19:30:00+00:00",
"end_uk": "2026-11-02T20:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T20:00:00.000Z",
"end": "2026-11-02T20:30:00.000Z",
"start_uk": "2026-11-02T20:00:00+00:00",
"end_uk": "2026-11-02T20:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T20:30:00.000Z",
"end": "2026-11-02T21:00:00.000Z",
"start_uk": "2026-11-02T20:30:00+00:00",
"end_uk": "2026-11-02T21:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T21:00:00.000Z",
"end": "2026-11-02T21:30:00.000Z",
"start_uk": "2026-11-02T21:00:00+00:00",
"end_uk": "2026-11-02T21:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T21:30:00.000Z",
"end": "2026-11-02T22:00:00.000Z",
"start_uk": "2026-11-02T21:30:00+00:00",
"end_uk": "2026-11-02T22:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T22:00:00.000Z",
"end": "2026-11-02T22:30:00.000Z",
"start_uk": "2026-11-02T22:00:00+00:00",
"end_uk": "2026-11-02T22:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T22:30:00.000Z",
"end": "2026-11-02T23:00:00.000Z",
"start_uk": "2026-11-02T22:30:00+00:00",
"end_uk": "2026-11-02T23:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 35,
"value_exc_vat": 35,
"unit": "p/kWh",
"status": "expensive"
},
{
"start": "2026-11-02T23:00:00.000Z",
"end": "2026-11-02T23:30:00.000Z",
"start_uk": "2026-11-02T23:00:00+00:00",
"end_uk": "2026-11-02T23:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 8,
"value_exc_vat": 8,
"unit": "p/kWh",
"status": "cheap"
},
{
"start": "2026-11-02T23:30:00.000Z",
"end": "2026-11-03T00:00:00.000Z",
"start_uk": "2026-11-02T23:30:00+00:00",
"end_uk": "2026-11-03T00:00:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 8,
"value_exc_vat": 8,
"unit": "p/kWh",
"status": "cheap"
}
]
}Forecast
GET /api/v1/prices/forecast?region=C
AgilePredict’s central estimate with a p10–p90 band. This is not a published Octopus price. If the upstream is down and nothing is cached, the response is still HTTP 200 with availability “unavailable” and forecast null. Heavy limit.
Params. region (required). Heavy limit.
curl -sS "https://rillbates.com/api/v1/prices/forecast?region=C"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "AgilePredict",
"url": "https://agilepredict.com/",
"note": "Community forecast with a p10–p90 band. Not a published Octopus price."
},
"fetched_at": "2026-11-02T16:05:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"availability": "available",
"forecast": {
"name": "AgilePredict",
"created_at": "2026-11-02T16:00:00.000Z",
"stale": false,
"points": [
{
"start": "2026-11-03T00:00:00.000Z",
"end": "2026-11-03T00:30:00.000Z",
"start_uk": "2026-11-03T00:00:00+00:00",
"end_uk": "2026-11-03T00:30:00+00:00",
"timezone": "Europe/London",
"value_inc_vat": 11.2,
"p10": 9.1,
"p90": 14.4,
"unit": "p/kWh"
}
]
}
}Cheapest window
GET /api/v1/windows/cheapest?region=london&hours=2&within=24h
The lowest-average contiguous block that starts now or later and finishes inside 24 hours. Gaps are not bridged. window is null when there is not a full block.
Params. region (required). hours: 1, 2, 3, or 4. within: 24h only.
curl -sS "https://rillbates.com/api/v1/windows/cheapest?region=london&hours=2&within=24h"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Octopus Energy public API",
"url": "https://developer.octopus.energy/guides/rest/api-endpoints/",
"product_code": "AGILE-24-10-01",
"tariff_code": "E-1R-AGILE-24-10-01-C",
"unit": "p/kWh",
"field": "value_inc_vat",
"vat_rate": 0,
"vat_note": "value_exc_vat is Octopus's published field, copied through unchanged. It matches value_inc_vat. Household electricity VAT in Great Britain is 0% for this period, so the two figures are equal. Rill Bates does not add VAT."
},
"fetched_at": "2026-11-02T18:10:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"hours": 1,
"within": "24h",
"window": {
"start": "2026-11-02T23:00:00.000Z",
"end": "2026-11-03T00:00:00.000Z",
"start_uk": "2026-11-02T23:00:00+00:00",
"end_uk": "2026-11-03T00:00:00+00:00",
"timezone": "Europe/London",
"hours": 1,
"average_inc_vat": 8,
"min_inc_vat": 8,
"max_inc_vat": 8,
"slot_count": 2,
"unit": "p/kWh",
"status": "cheap"
}
}Best time for an appliance
GET /api/v1/appliances/best-time?region=london&appliance=washing-machine
The cheapest run inside 48 hours for a typical duration, plus a cost in pounds. dryer is the tumble dryer. The kWh figures are assumptions, the same ones the site starts from. A negative cost means you would be paid for the units.
Params. region (required). appliance: washing-machine, dishwasher, dryer, ev, oven, heat-pump, or immersion.
curl -sS "https://rillbates.com/api/v1/appliances/best-time?region=london&appliance=washing-machine"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"source": {
"name": "Octopus Energy public API",
"url": "https://developer.octopus.energy/guides/rest/api-endpoints/",
"product_code": "AGILE-24-10-01",
"tariff_code": "E-1R-AGILE-24-10-01-C",
"unit": "p/kWh",
"field": "value_inc_vat",
"vat_rate": 0,
"vat_note": "value_exc_vat is Octopus's published field, copied through unchanged. It matches value_inc_vat. Household electricity VAT in Great Britain is 0% for this period, so the two figures are equal. Rill Bates does not add VAT."
},
"fetched_at": "2026-11-02T18:10:00.000Z",
"stale": false,
"region": {
"code": "C",
"slug": "london",
"name": "London"
},
"appliance": {
"id": "washing-machine",
"name": "Washing machine",
"assumed_kwh": 0.8,
"hours": 1
},
"horizon": "48h",
"window": {
"start": "2026-11-02T23:00:00.000Z",
"end": "2026-11-03T00:00:00.000Z",
"start_uk": "2026-11-02T23:00:00+00:00",
"end_uk": "2026-11-03T00:00:00+00:00",
"timezone": "Europe/London",
"hours": 1,
"average_inc_vat": 8,
"min_inc_vat": 8,
"max_inc_vat": 8,
"slot_count": 2,
"unit": "p/kWh",
"status": "cheap"
},
"cost_gbp": 0.064,
"cost_note": "Estimate is the average unit rate times the assumed kWh. A negative figure means you would be paid for those units. Standing charge is not included. The kWh figure is a typical assumption, not a measurement of your appliance."
}Status
GET /api/v1/status
Whether the product, recent rates, history, and forecast are in the server cache, and how old that copy is. This route does not call Octopus or AgilePredict.
Params. None.
curl -sS "https://rillbates.com/api/v1/status"
{
"notice": "Unofficial. Not affiliated with, endorsed by, or speaking for Octopus Energy. No warranty. Attribute the source if you republish the figures.",
"generated_at": "2026-11-02T18:15:00.000Z",
"version": "1",
"limits": {
"standard": {
"requests": 60,
"window_seconds": 60,
"burst": 60
},
"heavy": {
"requests": 10,
"window_seconds": 60,
"burst": 10,
"paths": [
"/api/v1/prices/history",
"/api/v1/prices/forecast"
]
},
"note": "Limits are per IP. HTML pages do not use these buckets. There is no API key."
},
"cache": {
"product": {
"state": "fresh",
"fetched_at": "2026-11-02T18:00:00.000Z",
"age_seconds": 900,
"product_code": "AGILE-24-10-01"
},
"regions": [
{
"code": "A",
"slug": "eastern-england",
"name": "Eastern England",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "B",
"slug": "east-midlands",
"name": "East Midlands",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "C",
"slug": "london",
"name": "London",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "D",
"slug": "merseyside-and-north-wales",
"name": "Merseyside and North Wales",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "E",
"slug": "west-midlands",
"name": "West Midlands",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "F",
"slug": "north-east-england",
"name": "North East England",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "G",
"slug": "north-west-england",
"name": "North West England",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "H",
"slug": "southern-england",
"name": "Southern England",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "J",
"slug": "south-east-england",
"name": "South East England",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "K",
"slug": "south-wales",
"name": "South Wales",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "L",
"slug": "south-west-england",
"name": "South West England",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "M",
"slug": "yorkshire",
"name": "Yorkshire",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "N",
"slug": "southern-scotland",
"name": "Southern Scotland",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
},
{
"code": "P",
"slug": "northern-scotland",
"name": "Northern Scotland",
"rates": {
"state": "fresh",
"fetched_at": "2026-11-02T18:10:00.000Z",
"age_seconds": 300
},
"history": {
"state": "stale",
"fetched_at": "2026-11-02T12:00:00.000Z",
"age_seconds": 22500
},
"forecast": {
"state": "empty",
"fetched_at": null,
"age_seconds": null
}
}
]
}
}Terms
Fair use only. Do not poll faster than the rate limit, and do not use this API to mirror the upstreams for someone else. Attribute Octopus Energy for published rates and AgilePredict for forecasts if you republish the figures. Rill Bates is an independent tool. It is not affiliated with, endorsed by, or speaking for Octopus Energy. There is no warranty. Prices can be missing, delayed, or wrong, and a forecast is not a promise. Standing charges, export tariffs, and your actual appliance are not included in the cost estimate.