API
Endpoints
GET /v1/forecast?zone=EE&resolution=15min&hours=168 # settled prices from today 00:00 + p10/p50/p90 forecast, k = horizon in days GET /v1/prices?zone=FI&resolution=hour&start=2026-09-10&end=2026-09-14 # settled day-ahead prices (max 31 days) GET /v1/now?zone=LV # current 15-min and hourly price, next hour GET /v1/cheapest?zone=LT&minutes=120&count=3&scope=tomorrow # cheapest non-overlapping windows (known = settled vs forecast) GET /v1/accuracy?zone=EE&days=14 # cross-validated MAE and band hit rate per horizon + live MAE / hit rate GET /v1/commentary?zone=EE&lang=et # written daily outlook (title + Markdown), falls back to en GET /v1/levels?zone=EE&days=30 # p25/p50/p75 of the last 30 days: cheap / normal / high / expensive thresholds GET /v1/forecast?zone=EE&adjusted=false # pure model output; by default the online level correction (lvl, p50Model; level=false to skip) and the outlook adjustments (adj, p50Raw) are applied GET /v1/zones · GET /v1/status # zones, time zones, VAT rates · data freshness
EE FI LV LT — Nord Pool bidding zones; time zones are EET/EEST.hour or 15min. Settled 15-minute prices exist since 2025-10-01; older history is hourly (served as four equal quarters)./v1/zones if you need gross prices./v1/accuracy reports the achieved hit rate per horizon.level in the response lists the shift per block and the window). p50Model is the pure model value; level=false serves without this layer.p50Raw is p50 before the delta, adjRef points into adjustments.entries. adjusted=false serves the pure model./v1/cheapest: the whole window lies inside settled prices (true) or uses the forecast (false).Limits and caching
- Free tier: 60 requests per minute per IP. With an
X-API-Keyheader: 600 per minute (keys on request). - Responses carry
Cache-Control: public, max-age=60. Settled prices change once a day (Nord Pool publishes around 13:45–14:45 EET), the forecast once an hour; poll accordingly. - Over the limit you get
429withRetry-After: 60.
Accuracy
The model is a set of gradient-boosted trees per zone and horizon, trained on settled prices, calendar features and
weather forecasts (wind at 100 m, temperature, solar radiation over the Baltics, Finland and Sweden), retrained weekly.
/v1/accuracy returns the cross-validated mean absolute error per horizon from training and the live error
of the forecasts actually published in the last days, plus how often the settled price fell inside the p10–p90 band:
backtest[k].cv_cov80 on the most recent cross-validation fold (band calibrated on the earlier folds) and
live[k].coverage80 on the published forecasts; the target is 80 %.
The written outlook adds what the model cannot see: nuclear outages, interconnector maintenance, fuel and CO₂ prices.
/v1/accuracy?zone=EE · FI · LV · LT
Home Assistant
The Wattcast integration for Home Assistant exposes the current price, today/tomorrow averages, the cheapest windows, a price level and the full 7-day forecast as entities — one device per bidding zone. Install it through HACS as a custom repository:
- HACS → three-dot menu → Custom repositories → add
https://github.com/SectorTll/wattcast-homeassistant, category Integration. - Install Wattcast and restart Home Assistant.
- Settings → Devices & services → Add integration → Wattcast → pick your zone.
Entities per zone: current 15-minute and hourly price, today/tomorrow average, cheapest 1/2/3 h windows, a cheap / normal / high / expensive price level, a forecast sensor (p10/p50/p90) and the daily written outlook. Full entity list and automation examples are in the repository README.
Prefer not to use HACS? A plain REST sensor works too:
sensor:
- platform: rest
name: Electricity price now
resource: https://wattcast.eu/v1/now?zone=EE
value_template: "{{ value_json.current15min.ctKwh }}"
unit_of_measurement: ct/kWh
scan_interval: 900
Attribution and terms
Prices: Nord Pool day-ahead via Elering / Nord Pool Data Portal. Weather: Open-Meteo.com, CC BY 4.0. Forecast: Wattcast, unofficial and informational, no guarantee. When you show the data, attribute it as “Wattcast” with these sources. Full API terms, terms of use and privacy.