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/nowog/api/scheduleskifter ved hver hele time (Cache-Control: max-ageer sekunderne til næste time). Spørg en gang i timen, et minut eller to over, og ikke oftere end hvert 5. minut./api/pricesfor 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/pricesfor 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-ContrologAge, og ventRetry-Aftersekunder efter et503i 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/endellerdateer 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 svarer403på Pythons standard-urllib(Python-urllib/3.x). Alt andet virker:curl,requestseller dit eget, fxmy-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 etLink: </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.
| Dag | DK1 | DK2 |
|---|---|---|
| D+2 | 149 (23,3 %) | 165 (25,2 %) |
| D+3 | 155 (24,2 %) | 169 (25,9 %) |
| D+4 | 166 (25,9 %) | 180 (27,5 %) |
| D+5 | 179 (27,9 %) | 192 (29,4 %) |
| D+6 | 190 (29,7 %) | 203 (31,0 %) |
| D+7 | 195 (30,4 %) | 207 (31,8 %) |
| D+8 | 195 (30,4 %) | 207 (31,7 %) |
| D+9 | 197 (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_alter den fulde forbrugerpris. Krævergln.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
Se også: