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 `Origin` header returned real records, but the identical request sent WITH an `Origin` header got back **HTTP 200 with a zero-byte body** and no `Access-Control-Allow-Origin` header at all -- a real browser `fetch()` from another origin gets nothing usable, silently. Server-side requests (curl, backend HTTP clients) are unaffected since they don't send `Origin`.
- An unknown dataset name doesn't return JSON -- a live GET this run against `/dataset/NotARealDataset` returned **HTTP 404** with `content-type: text/plain` and the plain-text body `dataset 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 by `DayAheadPrices` after the Nordic market's move to 15-minute settlement on 2025-09-30. Reach for `DayAheadPrices` (or `CO2Emis` for emissions, used above) in new code.
- `sort` and `columns` are real, separate query parameters, not something you compose from `limit`/`filter` -- a live GET this run against `/dataset/CO2Emis?limit=1&columns=Minutes5UTC,PriceArea,CO2Emission&sort=Minutes5UTC%20DESC` returned only the three named columns, confirming both params work independently of any filter.