SpotWave API

The prices on SpotWave come from a small, read-only JSON API. You're welcome to use it for personal projects, dashboards and home automation, within the fair-use terms below.

Basics

Endpoints

GET /meta/markets

Every supported market (bidding zone) with its display name, currency and fixed monthly costs (incl. VAT), which are never folded into the per-kWh price.

curl https://spotwave.eu/api/meta/markets
[
  {
    "code": "NL",
    "name": "Netherlands",
    "currency": "EUR",
    "fees": {
      "gridFixedPerMonth": 39.83,
      "energyTaxCreditPerMonth": 52.41,
      "netPerMonth": -12.58,
      "native": { "currency": "EUR", "gridFixedPerMonth": 39.83, "energyTaxCreditPerMonth": 52.41, "netPerMonth": -12.58 }
    }
  },
  …
]

GET /spotprice?country=…&from=…&to=…

The all-in price breakdown for each period in a range. from and to are ISO timestamps (inclusive); a range longer than 92 days is cut to the last 92 days.

curl "https://spotwave.eu/api/spotprice?country=NL&from=2026-10-20T00:00:00Z&to=2026-10-20T23:59:59Z"
[
  {
    "periodUtc": "2026-10-20T12:00:00Z",
    "country": "NL",
    "spotEurPerKwh": 0.10301,
    "energyTaxEurPerKwh": 0.0916,
    "gridFeeEurPerKwh": 0.0,
    "vatEurPerKwh": 0.0408681,
    "totalEurPerKwh": 0.2354781,
    "native": { "currency": "EUR", "spotPerKwh": 0.10301, "energyTaxPerKwh": 0.0916, "gridFeePerKwh": 0.0, "vatPerKwh": 0.0408681, "totalPerKwh": 0.2354781 }
  },
  …
]

GET /forecast?country=…&from=…&to=…

Same parameters and response shape as /spotprice, used for tomorrow's window. It returns an empty array until tomorrow's day-ahead prices are published, usually around 13:00 CET.

curl "https://spotwave.eu/api/forecast?country=DE&from=2026-10-21T00:00:00Z&to=2026-10-21T23:59:59Z"

GET /spotprice/current?country=…

The most recent stored wholesale price for a market — the raw spot price only, without taxes or fees. hourUtc is the start of the period. Returns 404 when the market has no data.

curl "https://spotwave.eu/api/spotprice/current?country=NL"
{ "id": 3179619, "country": "NL", "hourUtc": "2026-10-20T15:45:00Z", "eurPerKwh": 0.25471 }

GET /spotprice/stats?country=…

Percentiles of the wholesale price over the trailing 30 days — what SpotWave uses to call a price cheap or expensive.

curl "https://spotwave.eu/api/spotprice/stats?country=SE3"
{
  "p25": 0.0401, "median": 0.0825, "p75": 0.1208, "avg": 0.0842,
  "native": { "currency": "SEK", "p25": 0.4452, "median": 0.9165, "p75": 1.3411, "avg": 0.9352 }
}

GET /spotprice/context?country=…

Long-run reference levels: the rolling yearly average all-in price, last year's, and a typical band (low/mid/high per hour of the day, UTC) built from the same time of year over recent years. Fields are null until enough history exists.

curl "https://spotwave.eu/api/spotprice/context?country=NL"
{
  "yearAvg": 0.2409, "lastYearAvg": 0.2219,
  "typical": [ { "i": 0, "low": 0.1694, "mid": 0.2172, "high": 0.2650 }, … ],
  "native": { "currency": "EUR", "yearAvg": 0.2409, "lastYearAvg": 0.2219, "typical": [ … ] }
}

GET /compare

A snapshot of every market: the current all-in and spot price, today's range so far, tax share, VAT rate and an hourly sparkline, sorted cheapest first. This feeds the markets page.

curl https://spotwave.eu/api/compare
{
  "asOf": "2026-10-20T15:58:49Z",
  "euAvgSpot": 0.1596,
  "zones": [
    {
      "country": "NL", "name": "Netherlands",
      "currentAllIn": 0.4012, "spot": 0.2400, "taxShare": 40.19, "vatRate": 21.0,
      "todayMin": 0.2307, "todayMax": 0.4012, "isNegative": false,
      "sparkline": [0.1701, 0.1681, 0.1722, …],
      "native": { "currency": "EUR", "currentAllIn": 0.4012, "spot": 0.2400, "todayMin": 0.2307, "todayMax": 0.4012, "sparkline": [ … ] }
    },
    …
  ]
}

GET /meta/status

When the data was last updated, and per market whether tomorrow's prices are in yet. Useful to decide when to fetch /forecast.

curl https://spotwave.eu/api/meta/status
{ "lastUpdated": "2026-10-20T13:05:12Z", "tomorrowPublished": { "NL": true, "DE": true, "SE3": false, … } }

Fair use

Attribution

If you publish something built on this data, please credit SpotWave with a link to spotwave.eu. The wholesale prices come from the ENTSO-E Transparency Platform; taxes and fees are SpotWave's own indicative figures, documented on the data sources page.

Home Assistant

A Home Assistant integration that reads this API lives in the SpotWave repository, under integrations/home-assistant.

Data sources