Skip to content

API documentation

An ordinary REST API: one address, a key in a header, JSON back. You can try every endpoint right here on the page, before writing a line of code.

Base URL

https://api.spotforecast.eu/v1

Authentication header

Authorization: Bearer YOUR_KEY

Authentication

Send the key in a header, not in the URL. Whatever is in the URL ends up in the log of every server along the way and stays in the browser's history - the key can reach places you do not control and where it has no business being.

bash
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.spotforecast.eu/v1/forecast?zone=CZ&horizon=7&unit=EUR/MWh"

Endpoints

GET/v1/zonesNo key needed

Public. Lists the bidding zones we serve: has_forecast says whether a forecast exists for each, latest_as_of_utc carries the time of the last run and is null where nothing has been published for that zone yet.

Try it

Request URL

https://api.spotforecast.eu/v1/zones

Response

Fill in the parameters and send the request to see the answer.

Units

Prices are in EUR/MWh unless the API request asks for another unit. Every response states the unit its prices are in. Prices are always for the energy alone, before tax and before any fixed charges (distribution, your spot tariff provider's fees, and so on).

  • EUR/MWhThe default. The forecast models work in it, on the way in and on the way out.
  • EUR/kWhThe unit evcc works in, for one.
  • ct/kWhThe unit the Home Assistant energy dashboard uses.

Bidding zones

Use the code in the zone parameter.

  • AlbaniaAL
  • AustriaAT
  • BelgiumBE
  • BulgariaBG
  • CroatiaHR
  • Czech RepublicCZ
  • Denmark EastDK2
  • Denmark WestDK1
  • EstoniaEE
  • FinlandFI
  • FranceFR
  • Germany-LuxembourgDE
  • GreeceGR
  • HungaryHU
  • Ireland (SEM)IE-SEM
  • Italy CalabriaIT-CALA
  • Italy Centre-NorthIT-CNOR
  • Italy Centre-SouthIT-CSUD
  • Italy NorthIT-NORD
  • Italy SardiniaIT-SARD
  • Italy SicilyIT-SICI
  • Italy SouthIT-SUD
  • KosovoXK
  • LatviaLV
  • LithuaniaLT
  • MontenegroME
  • NetherlandsNL
  • North MacedoniaMK
  • Norway NO1 (Oslo)NO1
  • Norway NO2 (Kristiansand)NO2
  • Norway NO3 (Trondheim)NO3
  • Norway NO4 (Tromso)NO4
  • Norway NO5 (Bergen)NO5
  • PolandPL
  • PortugalPT
  • RomaniaRO
  • SerbiaRS
  • SlovakiaSK
  • SloveniaSI
  • SpainES
  • Sweden SE1 (Lulea)SE1
  • Sweden SE2 (Sundsvall)SE2
  • Sweden SE3 (Stockholm)SE3
  • Sweden SE4 (Malmo)SE4
  • SwitzerlandCH

Spot electricity market price data, forecasts included, follows the local time of the zone it belongs to. Timestamps are always given in UTC.

Example response

json
{
  "zone": "CZ",
  "as_of_utc": "2026-08-10T13:00:00Z",
  "model_version": "v3-CZ-D7-20260810-0835",
  "unit": "EUR/MWh",
  "resolution": "PT60M",
  "horizon_days": 7,
  "points": [
    {
      "start": "2026-08-10T22:00:00Z",
      "value": 141.86,
      "p10": 112.9,
      "p90": 205.06,
      "origin": "forecast"
    }
  ],
  "attribution": {
    "market_data": "Source of underlying market data: ENTSO-E Transparency Platform."
  }
}

Errors

Errors are sent as problem details (RFC 9457). Each has a type field with a link to the page that describes it. Error text is English.

API errors

Frequently asked questions

How do I get a key?

Create an account with your e-mail and issue a key on the account page.

What happens if I go over the limit?

The request comes back as a 429 with a Retry-After header telling you when the window resets. Every API response also carries how many requests you have left.

What is the forecast history for?

Backtesting. Ask for a past date and you get the forecast as it stood for that day. It also lets you judge for yourself how accurate our models are and whether they fit your purpose.

How do 15-minute and hourly intervals differ?

The models produce the forecast in hourly intervals by default, and 15-minute intervals are derived from them by interpolation. Settled market prices are available in both as well.

What unit do I get the data in?

The default unit is EUR/MWh, but the API request can also ask for EUR/kWh or ct/kWh - and the response always states the unit. A different unit can be handy when integrating with smart control systems.

How accurate are the forecasts?

Accuracy can differ for every zone in Europe, because each zone has its own specifics. In some zones it is very high, in others we are still working on improving the models. We measure the error as MAE (Mean Absolute Error) and it is available in the forecast chart for every zone and day. Alongside the forecast curve we also give a band bounded by the P10-P90 percentiles, which additionally shows how far the real market price can swing from the forecast at the extremes.