Octopus Energy Products API
Free Octopus Energy REST API with no key for public data: every published tariff, its unit rates and standing charges, including half-hourly Agile prices. Tested example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Octopus Energy Products API?
Octopus Energy publishes its tariff catalogue through a free REST API whose public product endpoints need no key. It lists every product with its type and availability, and each product exposes unit rates and standing charges by region.
Very few energy retailers publish their tariffs as an API at all, which makes this unusual and genuinely useful: the full product catalogue, its half-hourly Agile rates and its export tariffs, all readable without an account. Account-specific endpoints — your own consumption, your meter readings — do require credentials, but nothing in the product catalogue does.
Prices are region-specific and that is not incidental detail. Every rate endpoint needs a tariff code carrying a single-letter GSP group (`A` through `P`) identifying the distribution region, and the same product costs meaningfully different amounts in different ones. Rates come as `value_exc_vat` and `value_inc_vat` pairs in **pence per kWh**, and Agile rates are half-hourly with `valid_from` and `valid_to` windows — next-day prices typically appear in the late afternoon rather than at a fixed hour.
Quick facts
- Base URL
https://api.octopus.energy/v1- Authentication
- Public product and tariff endpoints need no key. Account, consumption and meter endpoints require an API key tied to an Octopus account.
- Rate limit
- No published limit on public endpoints. Tariff rates change at most daily.
- Pricing
- Free for public tariff data.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Octopus Energy Products API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Every published Octopus Energy product
GET https://api.octopus.energy/v1/products/
curl 'https://api.octopus.energy/v1/products/'const res = await fetch("https://api.octopus.energy/v1/products/");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.octopus.energy/v1/products/", timeout=20)
res.raise_for_status()
print(res.json()){
"count": 39,
"next": null,
"previous": null,
"results": [
{
"code": "AGILE-24-10-01",
"direction": "IMPORT",
"full_name": "Agile Octopus October 2024 v1",
"display_name": "Agile Octopus",
"description": "With Agile Octopus, you get access to half-hourly energy prices, tied to wholesale prices and updated daily. The unit rate is capped at 100p/kWh (including VAT).",
"is_variable": true,
"is_green": true,
"is_tracker": false,
"is_prepay": false,
"is_business": false,
"is_restricted": false,
"term": 12,
"available_from": "2024-10-01T00:00:00+01:00",
"available_to": null,
"links": [
{
"href": "https://api.octopus.energy/v1/products/AGILE-24-10-01/",
"method": "GET",
"rel": "self"
}
],
"brand": "OCTOPUS_ENERGY"
},
{
"code": "AGILE-OUTGOING-19-05-13",
"direction": "EXPORT",
"full_name": "Agile Outgoing Octopus May 2019",
"display_name": "Agile Outgoing Octopus",
"description": "Outgoing Octopus Agile rate pays you for all your exported energy based on the day-ahead wholesale rate.",
"is_variable": true,
"is_green": true,
"is_tracker": false,
"is_prepay": false,
"is_business": false,
"is_restricted": false,
"term": 12,
"available_from": "2018-01-01T00:00:00Z",
"available_to": null,
"links": [
{
"href": "https://api.octopus.energy/v1/products/AGILE-OUTGOING-19-05-13/",
"method": "GET",
"rParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
/products/ | path | Required | Lists every published product with its code, type and availability window. |
/products/{code}/ | path | Optional | Full detail for one product, including the tariff codes for each region. AGILE-24-10-01 |
/products/{code}/electricity-tariffs/{tariff_code}/standard-unit-rates/ | path | Optional | Unit rates for a specific regional tariff. |
period_from / period_to | query | Optional | ISO 8601 window for rate queries, used to fetch one day of Agile prices. 2026-08-20T00:00Z |
page_size | query | Optional | Results per page on paginated collections. 100 |
Response fields
count / next / previousinteger|string- Standard pagination envelope. Follow `next` rather than constructing page URLs.
results[].codestring- Product code such as `AGILE-24-10-01`, used to build tariff URLs.
results[].display_name / full_namestring- Marketing and full names for the product.
results[].directionstring- `IMPORT` for consumption tariffs, `EXPORT` for what you are paid for generation.
results[].is_variable / is_tracker / is_green / is_prepayboolean- Product characteristics, useful for filtering the catalogue.
results[].terminteger|null- Contract length in months, or null for products with no fixed term.
results[].available_from / available_tostring- Availability window. `available_to` is null for products still on sale.
results[].brandstring- Which brand the product belongs to — Octopus operates several.
(rate endpoints) value_exc_vat / value_inc_vatnumber- Rate in pence per kWh, excluding and including VAT.
(rate endpoints) valid_from / valid_tostring- Half-hourly window a rate applies to on Agile tariffs.
What you can build with the Octopus Energy Products API
- Compare published UK electricity tariffs programmatically
- Fetch half-hourly Agile rates to schedule high-consumption appliances
- Show export tariff rates alongside import rates for a solar setup
- Filter the catalogue for green or fixed-term products
Common errors and how to fix them
404 on a tariff code
The regional GSP group letter is missing or wrong.
Fix: Tariff codes embed a region letter `A`–`P`. Fetch the product detail to get the exact codes for each region.
401
You called an account or consumption endpoint.
Fix: Those require an API key tied to an Octopus account. The product catalogue does not.
Empty Agile rates for tomorrow
Next-day prices have not published yet.
Fix: They appear in the late afternoon rather than on a fixed schedule. Handle the empty case rather than retrying tightly.
Prices look 100x too high
Values are in pence, not pounds.
Fix: Divide by 100 for pounds, and decide explicitly whether you are showing the inc-VAT or exc-VAT figure.
Octopus Energy Products API — frequently asked questions
Do I need an API key for Octopus Energy tariff data?
No. The product catalogue and tariff rate endpoints are public and need no key. Only account-specific data such as your own consumption requires credentials.
What is the Agile tariff?
A tariff whose unit rate changes every half hour based on wholesale prices. The API exposes each half-hourly rate with its `valid_from` and `valid_to` window, which is what makes automated load shifting possible.
Why do I need a region code?
Because UK electricity distribution is regional and the same product costs different amounts in different areas. The GSP group letter in the tariff code identifies which region a rate applies to.
Are the rates inclusive of VAT?
Both are given. Each rate carries `value_exc_vat` and `value_inc_vat` in pence per kWh. Pick one deliberately and label it, rather than letting a deserialiser choose.
Tools that pair with this API
Electricity Cost Calculator
Calculate what appliances cost to run: enter watts, hours per day and days per week to get kWh and cost per day, month and year, for a whole list of devices.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Time Zone Converter
Convert any date and time between world time zones. See UTC offsets, daylight saving handled automatically, and compare multiple zones at once.
Octopus Energy Products is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.