Sweden Electricity Prices: Nord Pool Spot Prices SE1-SE4 avatar

Sweden Electricity Prices: Nord Pool Spot Prices SE1-SE4

Pricing

$2.00 / 1,000 price rows

Go to Apify Store
Sweden Electricity Prices: Nord Pool Spot Prices SE1-SE4

Sweden Electricity Prices: Nord Pool Spot Prices SE1-SE4

Returns Swedish day-ahead electricity spot prices (Nord Pool) for bidding zones SE1-SE4 in SEK and EUR per kWh, hourly or per 15 minutes, with daily min, max and average. Supports onlyNew for scheduled runs.

Pricing

$2.00 / 1,000 price rows

Rating

0.0

(0)

Developer

Viktor Wiberg

Viktor Wiberg

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Day-ahead electricity spot prices for the four Swedish bidding zones, in SEK and EUR per kWh. You get one row per 15 minute period (or per hour if you ask for hourly averages). You can also get one summary row per zone and day with the lowest, highest and average price and the cheapest and most expensive hour.

The data comes from the open API at Elpriset just nu.se, which publishes the Nord Pool day-ahead prices as reported to the ENTSO-E Transparency Platform (entsoe.eu).

Bidding zones

ZoneAreaLargest city
SE1Northern SwedenLuleå
SE2Northern central SwedenSundsvall
SE3Southern central SwedenStockholm
SE4Southern SwedenMalmö

Example from a real run

This is the input and the first rows of a run on the Apify platform on 3 October 2026 (run vSkdLSjFe6yGAAH12, 25 rows in total). Nothing is edited except that only the first rows are shown.

Input:

{
"areas": [
"SE3"
],
"resolution": "hour",
"includeDailySummary": true,
"currency": "both",
"onlyNew": false,
"maxResults": 50
}

Output (excerpt):

[
{
"area": "SE3",
"date": "2026-10-03",
"timeStart": "2026-10-03T00:00:00+02:00",
"timeEnd": "2026-10-03T01:00:00+02:00",
"resolution": "hour",
"priceSekPerKwh": 0.69154,
"priceEurPerKwh": 0.0612,
"exchangeRateEurSek": 11.299657,
"source": "elprisetjustnu.se"
},
{
"area": "SE3",
"date": "2026-10-03",
"timeStart": "2026-10-03T01:00:00+02:00",
"timeEnd": "2026-10-03T02:00:00+02:00",
"resolution": "hour",
"priceSekPerKwh": 0.65259,
"priceEurPerKwh": 0.05775,
"exchangeRateEurSek": 11.299657,
"source": "elprisetjustnu.se"
},
{
"type": "dailySummary",
"area": "SE3",
"date": "2026-10-03",
"min": {
"sekPerKwh": 0.05599,
"eurPerKwh": 0.00496
},
"max": {
"sekPerKwh": 1.04321,
"eurPerKwh": 0.09232
},
"average": {
"sekPerKwh": 0.59225,
"eurPerKwh": 0.05241
},
"cheapestHourStart": "2026-10-03T23:00:00+02:00",
"mostExpensiveHourStart": "2026-10-03T18:00:00+02:00",
"hours": 24,
"exchangeRateEurSek": 11.299657,
"source": "elprisetjustnu.se"
}
]

Input

FieldTypeDefaultDescription
areasarray["SE3"]Zones to fetch: SE1, SE2, SE3, SE4.
startDatestringtodayFirst day, YYYY-MM-DD in Swedish time. Data is available from 2022-11-01.
endDatestringstart date or todayLast day (inclusive). Can be tomorrow. At most 366 days per run.
resolutionstringhourhour gives the hourly average of the quarter prices, rounded to 5 decimals. quarter gives the 15 minute prices as published.
includeDailySummarybooleantrueAdds one summary row per zone and day.
currencystringbothSEK, EUR or both. Controls which price fields are included.
onlyNewbooleanfalseReturn only rows that earlier runs with the same input did not deliver. See "Monitoring and scheduling".
maxResultsinteger50Maximum number of rows, summary rows included. 1 to 100 000.

A run with empty input returns today's hourly prices for SE3 (Stockholm) and one daily summary: 25 rows.

Example input:

{
"areas": ["SE3", "SE4"],
"startDate": "2026-10-02",
"endDate": "2026-10-03",
"resolution": "quarter",
"includeDailySummary": true,
"currency": "both",
"maxResults": 500
}

Output

Price rows

FieldDescription
areaSE1, SE2, SE3 or SE4
dateDelivery day, YYYY-MM-DD in Swedish time (Europe/Stockholm)
timeStart, timeEndISO 8601 with the Swedish UTC offset, for example 2026-10-03T00:00:00+02:00
resolutionquarter or hour
priceSekPerKwhPrice in SEK per kWh (left out if currency is EUR)
priceEurPerKwhPrice in EUR per kWh (left out if currency is SEK)
exchangeRateEurSekThe EUR/SEK rate the source used for the day
sourceAlways elprisetjustnu.se
{
"area": "SE3",
"date": "2026-10-03",
"timeStart": "2026-10-03T00:00:00+02:00",
"timeEnd": "2026-10-03T00:15:00+02:00",
"resolution": "quarter",
"priceSekPerKwh": 0.80081,
"priceEurPerKwh": 0.07087,
"exchangeRateEurSek": 11.299657,
"source": "elprisetjustnu.se"
}

Daily summary rows

Added when includeDailySummary is true. min, max, cheapestHourStart and mostExpensiveHourStart are based on hourly averages, so a single cheap 15 minute period does not decide the cheapest hour. average is the mean of all prices for the day. hours is the number of hours in the day (23 or 25 on daylight saving days).

{
"type": "dailySummary",
"area": "SE3",
"date": "2026-10-03",
"min": { "sekPerKwh": 0.05599, "eurPerKwh": 0.00496 },
"max": { "sekPerKwh": 1.04321, "eurPerKwh": 0.09232 },
"average": { "sekPerKwh": 0.59225, "eurPerKwh": 0.05241 },
"cheapestHourStart": "2026-10-03T23:00:00+02:00",
"mostExpensiveHourStart": "2026-10-03T18:00:00+02:00",
"hours": 24,
"exchangeRateEurSek": 11.299657,
"source": "elprisetjustnu.se"
}
FieldDescription
typeAlways dailySummary
area, dateZone and delivery day, as for price rows
min, maxLowest and highest hourly average of the day, as { "sekPerKwh", "eurPerKwh" }
averageMean of all prices of the day, same format
cheapestHourStart, mostExpensiveHourStartStart of the cheapest and the most expensive hour, ISO 8601 with UTC offset
hoursNumber of hours in the day (23, 24 or 25)
exchangeRateEurSek, sourceAs for price rows

Price rows have no type field, so you can filter summaries with type = "dailySummary".

Monitoring and scheduling

Set onlyNew to true to use the actor for recurring monitoring. The actor then remembers which rows it has delivered for the same input, in a named key-value store in your Apify account (nightwave-state-sweden-electricity-prices, one record per input). Each run returns and charges only rows that earlier runs did not deliver. The first run returns everything in the selection. A run without news finishes successfully with 0 rows.

A row is identified by zone and start time, and a summary row by zone and day. The input below has no dates, so each run covers the current day in Swedish time. If your client builds the input, set endDate to tomorrow's date and schedule a run after 13:00 to get tomorrow's prices as soon as they are published: with onlyNew the next run skips the hours you already have.

onlyNew and maxResults are not part of the remembered input, so you can change them without starting over. Changing any other field starts a fresh state. To start over with the same input, delete the record in the key-value store.

Example: a daily run at 00:30 Swedish time that returns the new day's hourly prices for all four zones. In Apify Console, open Schedules, create a schedule with the cron expression 30 0 * * * and add this actor with the input below.

{
"areas": ["SE1", "SE2", "SE3", "SE4"],
"resolution": "hour",
"includeDailySummary": true,
"onlyNew": true,
"maxResults": 200
}

The same schedule through the Apify API:

curl -X POST "https://api.apify.com/v2/schedules?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"name": "daily-sweden-electricity-prices", "cronExpression": "30 0 * * *", "timezone": "Europe/Stockholm", "isEnabled": true, "isExclusive": true,
"actions": [{"type": "RUN_ACTOR", "actorId": "nightwave-owner~sweden-electricity-prices",
"runInput": {"contentType": "application/json; charset=utf-8", "body": "<the input above as a JSON string>"}}]}'

Connect a webhook or an integration (Slack, e-mail, Google Sheets) to the actor in Apify Console if you want the new rows sent somewhere when the run finishes.

Good to know

  • Prices exclude VAT, energy tax, grid fees and supplier mark-ups. They are the wholesale spot price only.
  • Tomorrow's prices are published after about 13:00 Swedish time. If you ask for tomorrow before that, the day is skipped with a log message and the run still succeeds.
  • Since 1 October 2025 the day-ahead market uses 15 minute periods, so a normal day has 96 rows per zone. Before that the source has hourly prices (24 rows), which are returned as they are.
  • Daylight saving days have 92 or 100 quarter rows (23 or 25 hours). On the autumn day the repeated hour 02:00 appears twice, once with +02:00 and once with +01:00.
  • Failed requests are retried three times. If the source returns data in an unexpected format the run fails with a clear message instead of storing broken rows.

Use cases

  • Shift flexible loads such as EV charging, heat pumps or batteries to the cheapest hours of tomorrow, using cheapestHourStart and the quarter prices.
  • Show today's and tomorrow's spot price per zone in an app, a dashboard or a Home Assistant setup without running your own Nord Pool integration.
  • Compare price spreads between SE1 and SE4 over a season by running with startDate and endDate and exporting the rows to CSV or Excel.
  • Recalculate a variable electricity contract or an energy report with the actual hourly spot price per zone.
  • Feed a forecasting or trading model with clean, time zone correct history back to November 2022.

FAQ

How often is the data updated? Nord Pool publishes the next day's day-ahead prices once a day, normally around 13:00 Swedish time. Every run reads the source live, so a run after that time can include tomorrow.

What does 1 000 rows cost? 2 USD (0.002 USD per row, event price-row). Platform usage is included. One zone for one day is 25 rows at hourly resolution with a summary, so a year of daily runs for one zone is about 9 000 rows.

Can I schedule it? Yes. Use an Apify schedule with onlyNew: true and you get only the rows you have not received before. See "Monitoring and scheduling" above.

Can I use the data commercially? The source states the data is free to use for any purpose and asks for attribution to Elpriset just nu.se when you show it publicly. See "Data source and license".

Data source and license

Prices are fetched from the Elpriset just nu.se API. According to elprisetjustnu.se/elpris-api the data is free to use by anyone for any purpose. The source asks for attribution when the data is shown publicly, so please credit "Elpriset just nu.se" with a link if you publish the data. The underlying data comes from the ENTSO-E Transparency Platform. The dataset contains no personal data.

This actor is not affiliated with Elpriset just nu.se, Nord Pool or ENTSO-E.

Pricing

Pay per result: 0.002 USD per row returned (event price-row), which is 2 USD per 1 000 price rows. Platform usage is included, so you pay only per result. maxResults caps how many rows a run returns, so you always know the highest possible cost.

Rows are delivered only after they have been charged. If you set a maximum cost per run (maxTotalChargeUsd), the run stops there and its status message says how many rows were delivered.

Contact

Built and maintained by Nightwave AB. Questions, bugs and feature requests: kontakt@nightwave.se

På svenska

Actorn hämtar dagen-före-priser på el (Nord Pool) för elområdena SE1-SE4 i kronor och euro per kWh, per kvart eller som timmedel, med en valfri dygnssammanställning (lägsta, högsta och genomsnittligt pris samt billigaste och dyraste timmen).

  • Priserna är spotpriser exklusive moms, energiskatt, nätavgift och elhandlarens påslag.
  • Morgondagens priser publiceras efter cirka 13:00 svensk tid. Före det hoppas dagen över med en loggrad.
  • Datum och dygnsgränser följer svensk tid. Dagar med sommartidsomställning har 23 eller 25 timmar.
  • Källa: Elpriset just nu.se (data från ENTSO-E). Fri att använda, med önskemål om hänvisning till Elpriset just nu.se när datan visas publikt.
  • Med onlyNew: true levereras bara rader som tidigare körningar med samma input inte har levererat. Det passar för schemalagda körningar i Apify (se "Monitoring and scheduling").
  • Tom input ger dagens timpriser för SE3 och en dygnssammanställning, 25 rader. maxResults är som standard 50.
  • Pris: 0,002 USD per rad (2 USD per 1 000 rader). Plattformsanvändningen ingår.
  • Kontakt: kontakt@nightwave.se