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.
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"
},
...
]
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
},
...
]
}
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"
},
...
]
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.
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.
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
},
...
]
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.
| Field | Type | Description |
|---|---|---|
| slot_time_utc | string | Start time of the half-hour slot in UTC (ISO 8601) |
| local_time | string | Start time in UK local time — BST in summer, GMT in winter (CSV only) |
| fp_rate | float | EDF FreePhase rate in pence per kWh (inc. VAT) |
| period_class | string | Time band — green, amber or red |
| Band | Hours (UK local time) |
|---|---|
| 🟢 green | 23:00 – 06:00 |
| 🟡 amber | 06:00 – 16:00 and 19:00 – 23:00 |
| 🔴 red | 16:00 – 19:00 |
| Code | Region |
|---|---|
| G | North West England |
| A | Eastern |
| B | East Midlands |
| C | London |
| D | Merseyside & North Wales |
| E | Midlands |
| F | Northern |
| H | Southern |
| J | South Eastern |
| K | South Wales |
| L | South Western |
| M | Yorkshire |
| N | South of Scotland |
| P | North 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.
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.