FPRates API

Free JSON API for EDF FreePhase Dynamic rates across all GB regions. Updated daily. Ideal for battery storage systems, home automation, and energy optimisation.

Base URL: https://fprates.online

Not a developer? Use the CSV download page instead.


Endpoints

GET /api/rates/<region>

Returns the current 48 half-hourly slots for the specified region, ordered most recent first.

Example: /api/rates/G

[
  {
    "slot_time_utc": "2026-06-15T22:00:00Z",
    "fp_rate": 17.052,
    "cost_price": 17.052,
    "period_class": "green",
    "source": "edf"
  },
  ...
]

GET /api/ha/<region>/standard-unit-rates/

Same current-48-slot data as /api/rates/<region>, reshaped to match the industry-standard Octopus/Kraken tariff-rates format used by home-automation tools (e.g. predbat). Use this if your tool expects an Octopus-style rates feed rather than fprates' native shape.

Example: /api/ha/G/standard-unit-rates/

{
  "count": 48,
  "next": null,
  "previous": null,
  "results": [
    {
      "value_exc_vat": 16.105,
      "value_inc_vat": 16.9103,
      "valid_from": "2026-06-15T22:00:00Z",
      "valid_to": "2026-06-15T22:30:00Z",
      "payment_method": null
    },
    ...
  ]
}

GET /api/rates/<region>/best

Returns the cheapest N slots of the day, sorted by price ascending. Free (0p) slots always appear first. Ideal for scheduling battery charging.

Parameter: slots — number of half-hour slots to return (default: 8 = 4 hours)

Example: /api/rates/G/best?slots=8

[
  {
    "slot_time_utc": "2026-06-13T11:00:00Z",
    "fp_rate": 0.0,
    "cost_price": 0.0,
    "period_class": "amber",
    "source": "edf"
  },
  ...
]

GET /api/rates/<region>/history

Returns all stored EDF half-hourly slots for a date range, ordered chronologically. Data available from 29th October 2025 onwards.

Parameters:

Example: /api/rates/G/history?start=2026-06-01&end=2026-06-15

[
  {
    "slot_time_utc": "2026-06-01T00:00:00Z",
    "fp_rate": 7.53,
    "period_class": "green"
  },
  ...
]

💡 Excel Power Query: Use the history endpoint to pull data automatically into Excel. See the download page for a ready-to-use Power Query script.

GET /api/rates/<region>/download

Downloads a CSV file of all stored EDF half-hourly slots for a date range. Data available from 29th October 2025 onwards.

Parameters:

Example: /api/rates/G/download?start=2026-06-01&end=2026-06-15

CSV columns: slot_time_utc, local_time, fp_rate, period_class

Prefer a user-friendly interface? Use the CSV download page.

GET /api/forecast/<region>

Returns today + 3 days of predicted rates with wind, solar and demand forecast data. Used to power the forecast charts.

Example: /api/forecast/G

[
  {
    "time": "15 Jun 06:00",
    "fp_rate": 20.602,
    "band": "amber",
    "wind": 1823,
    "solar": 4521,
    "demand": 22100
  },
  ...
]

GET /api/wholesale/<region>

Half-hourly wholesale price comparison: Elexon market index prices (MID) alongside the wholesale cost implied by EDF's published FreePhase rates, back-calculated using EDF's published regional coefficients (C & P). Data available from 29th October 2025 onwards. Add /download to the path for CSV.

Parameters:

Example: /api/wholesale/G?date=2026-06-27

[
        {
        "slot_time_utc": "2026-06-27T12:00:00Z",
        "local_time": "2026-06-27 13:00:00",
        "fp_rate": 10.7741,
        "band": "amber",
        "edf_implied_wholesale": 5.1799,
        "flag": "ok",
        "mid_wholesale": 2.2853
        },
        ...
        ]

Each slot carries a flag: ok (back-calculation valid), free (0p free period — implies nothing about wholesale), capped (rate hit the 75p ceiling — wholesale not recoverable), missing (no published rate).

Worth knowing: implied wholesale assumes EDF's published formula (rate = wholesale x C, plus P at peak) per half-hour. EDF actually sets one price per band per day from day-ahead wholesale, so implied values reflect the band-level figure EDF used, not the half-hourly market. The gap between the two columns is real and informative — that's rather the point.


History & Download Response Fields

FieldTypeDescription
slot_time_utcstringStart time of the half-hour slot in UTC (ISO 8601)
local_timestringStart time in UK local time — BST in summer, GMT in winter (CSV only)
fp_ratefloatEDF FreePhase rate in pence per kWh (inc. VAT)
period_classstringTime band — green, amber or red

Time Bands

BandHours (UK local time)
🟢 green23:00 – 06:00
🟡 amber06:00 – 16:00 and 19:00 – 23:00
🔴 red16:00 – 19:00

Regions

CodeRegion
GNorth West England
AEastern
BEast Midlands
CLondon
DMerseyside & North Wales
EMidlands
FNorthern
HSouthern
JSouth Eastern
KSouth Wales
LSouth Western
MYorkshire
NSouth of Scotland
PNorth of Scotland

Data is updated daily. Rates come from EDF's published prices once available (usually around midday), and before that are calculated from the same Nord Pool day-ahead wholesale prices EDF price from. This API is provided free of charge with no guarantees.

Terms & Conditions

⬇ CSV Download Page

← Back to rate viewer


FPRates is an independent service and is not affiliated with, endorsed by, or connected to EDF Energy in any way. EDF and FreePhase are trademarks of EDF Energy.

100% score in internet.nl website test 100% score in internet.nl email test