/v1/zonesNo key neededPublic. 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.
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/v1Authentication header
Authorization: Bearer YOUR_KEYSend 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.
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.spotforecast.eu/v1/forecast?zone=CZ&horizon=7&unit=EUR/MWh"/v1/zonesNo key neededPublic. 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.
Request URL
https://api.spotforecast.eu/v1/zonesResponse
Fill in the parameters and send the request to see the answer.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.Use the code in the zone parameter.
ALATBEBGHRCZDK2DK1EEFIFRDEGRHUIE-SEMIT-CALAIT-CNORIT-CSUDIT-NORDIT-SARDIT-SICIIT-SUDXKLVLTMENLMKNO1NO2NO3NO4NO5PLPTRORSSKSIESSE1SE2SE3SE4CHSpot electricity market price data, forecasts included, follows the local time of the zone it belongs to. Timestamps are always given in UTC.
{
"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 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.
Create an account with your e-mail and issue a key on the account page.
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.
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.
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.
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.
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.