Om Elpris

Aktuelle elpriser (spotpriser) for Danmark hentet fra Energi Data Service.

DK1 = Vestdanmark   DK2 = Østdanmark

Pristyper:
Elspot inkl moms = Spotpris + 25% moms
Inkl alt = Spot + moms + nettarif + system + transmission + elafgift
Inkl tarif = Som ovenfor, uden elafgift

GPS-funktionen finder dit netselskab via OpenStreetMap og Green Power Denmark.

Data fra energidataservice.dk

Gratis JSON API — ingen nøgle, fuld CORS, OpenAPI 3.1

elpriser.org API

Alle integrationer og bibliotekerFærdige plugins og klienter i Python, JavaScript og MCP, så du slipper for selv at kalde API’et.

Alle data på elpriser.org er tilgængelige via et public JSON API. Kalder du fra en browser, Shelly, Home Assistant, en LLM-agent eller et eget script, så slipper du for et abonnement — bare hit en URL.

Hovedpunkter

  • Ingen nøgle, ingen fast rate limit — Cloudflare-edge cacher svarene, så hyppige kald koster ikke noget. De giver bare det samme svar.
  • Hvor ofte skal du spørge? Priserne ændrer sig få gange i døgnet:
    • /api/now og /api/schedule skifter ved hver hele time (Cache-Control: max-age er sekunderne til næste time). Spørg en gang i timen, et minut eller to over, og ikke oftere end hvert 5. minut.
    • /api/prices for i dag ligger fast hele dagen: hent den en gang efter midnat. I morgen-priserne offentliggøres omkring kl. 12.30-13.00 og ændres aldrig bagefter: hent dem fra kl. 13, gentag hvert 1-5. minut, til priserne er der, og stop så.
    • /api/prices for en dag, der er gået, er uforanderlig: hent den en gang og gem den.
    • /api/forecast ændres højst nogle få gange i døgnet: en gang i timen er rigeligt.
    • Respektér Cache-Control og Age, og vent Retry-After sekunder efter et 503 i stedet for at gentage i en løkke. "Upstream rate limit" betyder, at Energi Data Service afviste vores egen forespørgsel om en dag, der endnu ikke ligger i arkivet. Det går over efter sekunder til minutter.
    • Hver forskellig start/end eller date er sin egen cache-post og rammer oftere Energi Data Service end standardvinduet. Bed om ét interval i stedet for ét kald pr. dag.
  • Fuld CORS (Access-Control-Allow-Origin: *) — kald direkte fra en webapp uden proxy.
  • Send en User-Agent — Cloudflares botbeskyttelse svarer 403 på Pythons standard-urllib (Python-urllib/3.x). Alt andet virker: curl, requests eller dit eget, fx my-app/1.0. I Python: Request(url, headers={"User-Agent": "my-app/1.0"}).
  • OpenAPI 3.1 spec på /api/openapi.json — importér i Postman, Bruno eller en ChatGPT/MCP-klient.
  • Tibber-kompatibel JSON for HA / Shelly via /api/shelly/tariff.
  • Discovery: hver /api/*-response sender et Link: </api/openapi.json>; rel="describedby" header.

Endpoints

GET /api/now?area=DK1&mode=inkl_alt

Aktuel pris (DKK/kWh) for nuværende time + om en schedule-strategi siger ON eller OFF.

GET /api/prices?area=DK1&mode=inkl_alt[&date=YYYY-MM-DD]

24 timepriser for én dato (default i dag, dansk lokaltid). Historik tilbage til 2000.

GET /api/prices?area=DK1&start=YYYY-MM-DD&end=YYYY-MM-DD

Hele perioden i ét svar, op til 1150 døgn — tre år koster ét kald i stedet for tusind.

GET /api/schedule?area=DK1&strategy=cheapest_n&hours=6

Hele døgnets ON/OFF-plan for den valgte strategi (se Smart hjem-siden).

GET /api/forecast?area=DK1&mode=inkl_alt[&gln=…]

Prognose time for time for i dag og de næste 9 døgn — faktiske day-ahead-priser, hvor de er offentliggjort (type: actual), og ellers en maskinlæringsmodel med vejrprognoser (source: model).

Med mode=net_inkl_alt og gln lægges netselskabets nettarif til, som den er gældende på hver dags egen dato — så en prognose hen over et tarifskifte (1. oktober / 1. april) skifter ved midnat. Så er prognosen lig /api/prices på en offentliggjort dag.

Hvor meget kan du stole på den? Gennemsnitlig absolut fejl på spotprisen (DKK/MWh, ekskl. moms) i en tilbagetest over 486 dage (1. april 2025 – 30. juli 2026), pr. prognosedag D+h regnet fra den dag, kørslen laves (D+1 er allerede offentliggjort om eftermiddagen). Til sammenligning rammer et 4-ugers ugedagsgennemsnit ca. 35–38 % ved siden af.

DagDK1DK2
D+2149 (23,3 %)165 (25,2 %)
D+3155 (24,2 %)169 (25,9 %)
D+4166 (25,9 %)180 (27,5 %)
D+5179 (27,9 %)192 (29,4 %)
D+6190 (29,7 %)203 (31,0 %)
D+7195 (30,4 %)207 (31,8 %)
D+8195 (30,4 %)207 (31,7 %)
D+9197 (30,7 %)211 (32,2 %)

Arkiv: GET /api/forecast/archive?area=DK1 lister de kørsler, der er gemt; med &issued=2026-10-06 får du den kørsel, som den lød dengang (rå spotpris i DKK/MWh ekskl. moms). Så kan du selv måle fejlen pr. horisont på de prognoser, der faktisk blev leveret. Arkivet starter 6. oktober 2026.

min og max er modellens P10 og P90, udvidet til at dække 80 % af udfaldene i tilbagetest — ca. hver femte time falder uden for. På source: heuristic-dage er det i stedet laveste og højeste pris for samme ugedag og time de seneste fire uger. model i svaret angiver kørslen (generatedAt) bag prognosedagene.

GET /api/shelly/tariff?area=DK1&mode=inkl_alt

Tibber-kompatibel JSON med i dag + i morgen — drop-in til alle Tibber-aware integrationer.

GET /api/supplierlookup?lat=…&lng=…

Reverse-geocode af koordinater til adresse + netselskab (CORS-fri proxy over OpenStreetMap Nominatim + GPD).

GET /api/raw/{prices,encharges,tariff,tariffs}

Rå EDS-data (DayAheadPrices, DatahubPricelist) som CORS-proxy. Mest for udviklere der vil egne beregninger.

GET /api/openapi.json

Maskin-læsbar OpenAPI 3.1-spec for alle endpoints — denne side i JSON-form.

Priser, afgifter og tariffer

mode bestemmer, hvad der er lagt oven i spotprisen. Et ukendt mode afvises med 400 — det bliver ikke tavst til spot inkl. moms.

  • spot_ex / spot_inkl — ren spotpris, uden og med moms.
  • inkl_alt — spot + systemtarif + transmissionstarif + elafgift, inkl. moms.
  • inkl_alt_minus — som ovenfor, men uden elafgift.
  • net_inkl_tarif / net_inkl_alt — med nettarif; net_inkl_alt er den fulde forbrugerpris. Kræver gln.
  • inkl_alt_elvarme / net_inkl_alt_elvarme — bruger den reducerede elafgift for forbrug over 4.000 kWh/år i elopvarmede boliger. Forskellen er stor: 0,8 mod 72,0 øre/kWh i 2025.

Nettariffen hentes for den dato, der spørges om — med tidsbånd og sommer-/vinterforskel. Netselskabet vælges med gln; bemærk at fx N1 optræder som tre selvstændige netområder med hver sin GLN og hver sine satser. Svaret oplyser grid_tariff: hourly, flat for selskaber der kun udgiver én døgnsats, eller null hvis selskabet ikke har udgivet nogen — og så er dagens priser null frem for at mangle tariffen i tavshed.

charges afgør, hvilke satser en historisk dato prissættes med. historical (default) bruger de satser, der faktisk gjaldt på datoen. current omregner samme prisforløb til nutidens satser — nyttigt til at sammenligne år, men det er ikke, hvad timen kostede.

Eksempel — curl

curl -sS "https://elpriser.org/api/now?area=DK1&mode=inkl_alt"

Returnerer:

{
  "on": true,
  "price": 1.23,
  "hour": 14,
  "area": "DK1",
  "mode": "inkl_alt",
  "strategy": "cheapest_n"
}

Brug i LLM / AI-agent

Spørg en LLM "hvad er elprisen lige nu i Danmark?" og giv den denne URL:

https://elpriser.org/api/now?area=DK1&mode=inkl_alt

For Claude Desktop, ChatGPT plugins, og MCP-klienter kan du pege på OpenAPI-spec'en på /api/openapi.json — den indeholder alle endpoints og parametre.

🔌 MCP-server (open source)

Vil du give Claude Desktop direkte adgang til danske elpriser? Brug elpriser-mcp — en gratis Model Context Protocol-server. Tilføj til din claude_desktop_config.json:

{
  "mcpServers": {
    "elpriser": { "command": "npx", "args": ["-y", "elpriser-mcp"] }
  }
}

Uden installation: tilføj https://elpriser.org/mcp som eksternt værktøj (connector) i Claude, ChatGPT eller en anden MCP-klient. Samme værktøjer, ingen nøgle.

Så kan du spørge "hvornår er strøm billigst i morgen?" og få live-svar. Kode + dokumentation på GitHub.

📦 JavaScript-klient (open source)

Bygger du en app eller et dashboard? elpriser-client er en lille, typet, zero-dependency JS/TS-klient (browser + Node):

import { createElpriserClient } from 'elpriser-client';
const elpriser = createElpriserClient();
const nu = await elpriser.now({ area: 'DK1' });

Historiske data

Skal du træne en model eller lave analyse? Historiske spotpriser, produktions- og CO₂-data for Danmark er åbne hos Energi Data Service (Energinet, CC BY 4.0), og nabolandenes priser findes på ENTSO-E Transparency Platform. Vores egen samling i Parquet-format er foreløbig ikke offentlig.

🤗 Prognosemodeller (Hugging Face)

Modellerne bag prognoserne ligger åbent på Hugging Face med vægte, kode og model-kort (nøjagtighed, begrænsninger og datalicenser): Danmark, DK1/DK2 og Norden og Holland, 13 prisområder (gentrænet og genudgivet dagligt, nøjagtigt de vægte der kører her), Europa, 25 prisområder og Storbritannien samt Portugal og Irland (skøn for timer, der endnu ikke har en pris); de to sidste er øjebliksbilleder af vægtene. Bemærk for Europa: den åbne model er en variant uden to prisinput, som produktionsmodellen også bruger (model-kortet på Hugging Face har detaljerne); den har i en bagudrettet test ca. 3 % højere fejl.

Vilkår

  • Gratis for ethvert brug (kommercielt eller ej)
  • Datakilde: Energi Data Service (Energinet) — egen licens
  • Best-effort uptime — ingen SLA. Edge-cacher graceful, så kortvarige udfald hos EDS påvirker ikke API'et
  • Spørgsmål / fejl: brug GitHub-issues (link i footeren) eller skriv direkte

Hvor er du?

Finder dit netselskab ud fra din position. Positionen bruges kun én gang og gemmes aldrig.

Danmark

Andre lande

Norden · alle 13 prisområder

Privatliv · Om elpriser · Udseendet følger din enheds lyse eller mørke indstilling.