BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://api.octopus.energy/v1/products/'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://api.octopus.energy/v1/products/", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "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",
          "r

Parameters

ParameterTypeRequiredDescription
/products/pathRequiredLists every published product with its code, type and availability window.
/products/{code}/pathOptionalFull detail for one product, including the tariff codes for each region. AGILE-24-10-01
/products/{code}/electricity-tariffs/{tariff_code}/standard-unit-rates/pathOptionalUnit rates for a specific regional tariff.
period_from / period_toqueryOptionalISO 8601 window for rate queries, used to fetch one day of Agile prices. 2026-08-20T00:00Z
page_sizequeryOptionalResults 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

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.