Free electricity price API
Day-ahead (spot) electricity prices for all 15 price areas in Norway, Denmark, Sweden, Finland, Estonia, Lithuania and Latvia as plain JSON: 15-minute prices and hourly averages, per kWh in the local currency with and without VAT, and in EUR/MWh. These are the results of the European day-ahead auction (SDAC), the same area prices that Nord Pool shows.
The API is free, including for commercial use, with no key or sign-up. The main condition is a visible link to Spotwatts wherever you show the prices publicly; see the terms of use.
Quick start
Each request returns one day for one price area. Today's prices for SE3 (Stockholm):
curl https://spotwatts.com/api/v1/se3/today.json
A real response, shortened. The full response lists every interval of the day (96 quarters; 92 or 100 on the days the clocks change) and every hour.
{
"zone": "SE3",
"country": "SE",
"timezone": "Europe/Stockholm",
"currency": "SEK",
"unit": "SEK/kWh",
"date": "2026-10-26",
"vat_rate": 25.0,
"exchange_rate": {
"eur": 11.131,
"date": "2026-10-23"
},
"resolution": 15,
"average": {
"price": 0.11547,
"price_vat": 0.14434,
"eur_mwh": 10.37
},
"min": {
"start": "2026-10-26T06:15:00+01:00",
"end": "2026-10-26T06:30:00+01:00",
"price": -0.0197,
"price_vat": -0.02463,
"eur_mwh": -1.77
},
"max": {
"start": "2026-10-26T19:00:00+01:00",
"end": "2026-10-26T19:15:00+01:00",
"price": 0.48286,
"price_vat": 0.60358,
"eur_mwh": 43.38
},
"cheapest_windows": [
{
"hours": 1,
"start": "2026-10-26T05:45:00+01:00",
"end": "2026-10-26T06:45:00+01:00",
"price": -0.00637,
"price_vat": -0.00797,
"eur_mwh": -0.57
}
],
"intervals": [
{
"start": "2026-10-26T00:00:00+01:00",
"end": "2026-10-26T00:15:00+01:00",
"price": 0.0108,
"price_vat": 0.0135,
"eur_mwh": 0.97
},
{
"start": "2026-10-26T00:15:00+01:00",
"end": "2026-10-26T00:30:00+01:00",
"price": 0.00367,
"price_vat": 0.00459,
"eur_mwh": 0.33
}
],
"hours": [
{
"start": "2026-10-26T00:00:00+01:00",
"end": "2026-10-26T01:00:00+01:00",
"price": 0.00632,
"price_vat": 0.0079,
"eur_mwh": 0.57
},
{
"start": "2026-10-26T01:00:00+01:00",
"end": "2026-10-26T02:00:00+01:00",
"price": 0.00331,
"price_vat": 0.00414,
"eur_mwh": 0.3
}
],
"page": "https://spotwatts.com/se/se3",
"source": "ENTSO-E Transparency Platform",
"attribution": {
"text": "Prices: Spotwatts",
"url": "https://spotwatts.com/"
}
}
Endpoints
All addresses are plain paths under https://spotwatts.com/api/v1: no query parameters, no key. Responses are JSON in UTF-8.
| Path | Returns |
|---|---|
/{zone}/{YYYY-MM-DD}.json
|
One price area, one local day, from 1 January 2023. Days before 1 October 2025 are hourly. |
/{zone}/today.json
|
Today in the price area's local time. |
/{zone}/tomorrow.json
|
Tomorrow, once published; 404 until then. |
/{zone}/now.json
|
The price of the current 15-minute interval in one price area. |
/now.json
|
The current price in every price area (null where today's prices are missing). |
| /zones.json | All price areas with their country, currency, time zone, EIC code and today's VAT rate. |
| /openapi.json | The OpenAPI 3.1 description of this API. |
Price area codes: no1–no5, se1–se4, dk1, dk2, fi, ee, lv, lt (lower case in the examples; upper case works too).
What a day contains
| Field | Meaning |
|---|---|
start, end |
Start and end in the price area's local time, with the UTC offset (ISO 8601). |
price |
Price per kWh without VAT, in NOK, SEK, DKK or EUR (not øre or cents). |
price_vat |
The same price with VAT. The rate is in vat_rate; it is 0 in NO4, where households in Nordland, Troms and Finnmark pay no VAT on electricity. |
eur_mwh |
The auction price in EUR/MWh without VAT, the unit ENTSO-E publishes. |
intervals |
Every interval of the day: 15 minutes since 1 October 2025, hours before that (resolution says which). |
hours |
Hourly prices: the average of the hour's four quarters (on hourly days, the price as published). |
average, min, max |
The day's average price, and its cheapest and most expensive interval. |
cheapest_windows |
The cheapest continuous 1, 2, 3 and 4 hours within the day, with their average price (for laundry, the dishwasher or charging a car). |
exchange_rate |
ECB reference rate per 1 EUR (eur) and its date, used for NOK, SEK and DKK: the newest rate dated at least two days before the day, so the one known at its auction. In the euro countries eur is 1 and date is null. |
page |
The price area's page on Spotwatts, in the country's language. |
attribution |
Text and address of the link the terms of use ask for. |
now.json |
The interval running now (start, end, price, price_vat, eur_mwh) with the price area's details. /now.json lists every price area by its code, plus time: when the answer was made, in UTC. |
Price areas
| Code | Price area | Unit | VAT today |
|---|---|---|---|
no1 |
Norway, Eastern Norway | NOK/kWh | 25% |
no2 |
Norway, Southwest Norway | NOK/kWh | 25% |
no3 |
Norway, Central Norway | NOK/kWh | 25% |
no4 |
Norway, Northern Norway | NOK/kWh | 0% |
no5 |
Norway, Western Norway | NOK/kWh | 25% |
dk1 |
Denmark, West Denmark | DKK/kWh | 25% |
dk2 |
Denmark, East Denmark | DKK/kWh | 25% |
se1 |
Sweden, Luleå | SEK/kWh | 25% |
se2 |
Sweden, Sundsvall | SEK/kWh | 25% |
se3 |
Sweden, Stockholm | SEK/kWh | 25% |
se4 |
Sweden, Malmö | SEK/kWh | 25% |
fi |
Finland | EUR/kWh | 25.5% |
ee |
Estonia | EUR/kWh | 24% |
lv |
Latvia | EUR/kWh | 21% |
lt |
Lithuania | EUR/kWh | 21% |
When prices are updated
Tomorrow's prices come from the day-ahead auction and are published around 12:45–13:00 CET (13:45–14:00 Finnish and Baltic time). We check every five minutes, so they are here within minutes. Until then, tomorrow.json returns 404, which is not cached: try again later. Past days only change in the rare case of a correction.
Responses are cached, so the API is fast; please cache them on your side too. One IP address may send up to 60 requests per 10 seconds; above that, it gets 429 for 10 seconds. For day prices, one request per price area per hour is plenty.
Errors come with an HTTP status and a short reason in {"message": "…"}: 404 for an unknown price area or date, or a day that is not published yet; 429 when the limit above is reached (try again after 10 seconds).
Examples
JavaScript
const response = await fetch('https://spotwatts.com/api/v1/no1/today.json');
const day = await response.json();
for (const hour of day.hours) {
console.log(hour.start, hour.price_vat, day.unit);
}
Python
import requests
url = 'https://spotwatts.com/api/v1/fi/today.json'
day = requests.get(url, timeout=10).json()
window = day['cheapest_windows'][2] # 3 hours
print(window['start'], window['price_vat'], day['unit'])
Home Assistant
Two REST sensors (configuration.yaml): the current price including VAT, updated every 5 minutes, and today's average with the hourly prices and cheapest windows as attributes for charts and automations.
rest:
- resource: "https://spotwatts.com/api/v1/se3/now.json"
scan_interval: 300
sensor:
- name: Electricity price SE3
value_template: "{{ value_json.price_vat }}"
availability: "{{ value_json.price_vat is defined }}"
unit_of_measurement: "SEK/kWh"
- resource: "https://spotwatts.com/api/v1/se3/today.json"
scan_interval: 3600
sensor:
- name: Electricity price SE3 today
value_template: "{{ value_json.average.price_vat }}"
availability: "{{ value_json.average is defined }}"
unit_of_measurement: "SEK/kWh"
json_attributes:
- hours
- cheapest_windows
Common daily-file format
Code written for the common daily-file format (one file per day and price area: an array of {currency}_per_kWh and EUR_per_kWh without VAT, EXR, time_start and time_end) works here too: use https://spotwatts.com/api/v1/prices/2026/10-25_SE3.json. There is one entry per interval, and the format is available for all 15 price areas.
Terms of use
You may use the prices for free, including in commercial apps, websites, dashboards and products.
Wherever you show the prices publicly, put a visible link to Spotwatts next to them with the text "Prices: Spotwatts", as below. Any rel value is fine, including rel="nofollow".
Copy this HTML:
<a href="https://spotwatts.com/">Prices: Spotwatts</a>
Fetch only the days you need. Do not download the whole history in bulk or mirror the API; cache what you have fetched. If you need more than a few months of history at once, contact us first.
The prices are day-ahead auction results from the ENTSO-E Transparency Platform. Spotwatts is not affiliated with or endorsed by ENTSO-E or Nord Pool.
The API is provided as is, with no guarantee that it is available or accurate. Do not use it for trading or anywhere an error could cause harm. Version 1 stays stable; any breaking change will come as /api/v2.
Questions or problems: contact us.
Last updated: 26 October 2026