Environment — entry 005 of 18
Danish data service Energi
Energi Data Service is the Danish transmission system operator Energinet's open-data platform, publishing dozens of live datasets — day-ahead power prices, grid emissions, consumption, and more — as a free public JSON API with no key required. Its older Elspotprices dataset was retired after the Nordic market's move to 15-minute settlement on 2025-09-30, superseded by the still-live DayAheadPrices dataset.
Energi Data Service is the Danish transmission system operator Energinet's open-data platform, publishing dozens of live datasets — day-ahead power prices, grid CO2 emissions, consumption, and more — as free, keyless JSON. A live GET this run against /dataset/CO2Emis?limit=2 returned two genuine current-window emissions records (one per Danish price area, DK1 and DK2) with real timestamps.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required — a live GET this run returned real records with zero credentials. There's no key to add for browser use either: see the CORS gotcha below, since a plain server-side GET and a browser
fetch()behave differently here even though both are equally keyless.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Fetch the latest grid CO2 emissions
GEThttps://api.energidataservice.dk/dataset/CO2Emis?limit=2
{"total":2,"filters":"","limit":2,"dataset":"CO2Emis","records":[{"Minutes5UTC":"2026-07-31T12:05:00","Minutes5DK":"2026-07-31T14:05:00","PriceArea":"DK1","CO2Emission":131.0},{"Minutes5UTC":"2026-07-31T12:05:00","Minutes5DK":"2026-07-31T14:05:00","PriceArea":"DK2","CO2Emission":96.0}]}Every dataset route shares this same envelope (total, filters, limit, dataset, records), confirmed live this run. CO2Emission is grams CO2 per kWh, refreshed every 5 minutes — treat the exact figures above as a shape example, not a fixed fact.
Try it
Developer reference
https://api.energidataservice.dk- GET/dataset/{dataset}?limit={n}
- GET/dataset/{dataset}?columns={cols}&sort={sort}
Gotchas & limits
- The API is keyless from any client but effectively unusable from a browser: a live GET this run with no
Originheader returned real records, but the identical request sent WITH anOriginheader got back HTTP 200 with a zero-byte body and noAccess-Control-Allow-Originheader at all — a real browserfetch()from another origin gets nothing usable, silently. Server-side requests (curl, backend HTTP clients) are unaffected since they don't sendOrigin. - An unknown dataset name doesn't return JSON — a live GET this run against
/dataset/NotARealDatasetreturned HTTP 404 withcontent-type: text/plainand the plain-text bodydataset not found NotARealDataset, not the usual{records: [...]}envelope. Code that always calls.json()on the response without checking status first will throw on a typo'd dataset name. Elspotprices, the historically most-used dataset, is retired — Energinet's own ROADMAP notes it was superseded byDayAheadPricesafter the Nordic market's move to 15-minute settlement on 2025-09-30. Reach forDayAheadPrices(orCO2Emisfor emissions, used above) in new code.sortandcolumnsare real, separate query parameters, not something you compose fromlimit/filter— a live GET this run against/dataset/CO2Emis?limit=1&columns=Minutes5UTC,PriceArea,CO2Emission&sort=Minutes5UTC%20DESCreturned only the three named columns, confirming both params work independently of any filter.