Energi Data Service Scraper - Nordic Power & Balancing
BUSINESSDEVELOPER TOOLSOTHER
Energi Data Service Scraper - Nordic Power & Balancing
Extract electricity and gas data from Energinet's Energi Data Service — Denmark's TSO (Transmission System Operator) public REST API. Covers the full Nordic + Baltic + Central European power market.
No API key required. Free public data. One run = one dataset.
What You Can Get
| Dataset | Records | Description |
|---|---|---|
DayAheadPrices |
~128K+ | Current wholesale spot prices (DK1, DK2, DE, NO1-NO5, SE1-SE4, FI) — EUR/MWh + DKK/MWh, hourly |
Elspotprices |
~1.8M | Historical Elspot prices (discontinued after 2025-09-30, use DayAheadPrices for live data) |
ProductionConsumptionSettlement |
~374K | Hourly generation by technology (offshore wind, onshore wind, solar by size bucket, central power, local power), gross consumption, cross-border exchanges (DE/NO/SE/NL/GB) |
ElectricityBalanceNonv |
~197K | Non-validated electricity balance: total load, offshore wind, onshore wind, solar, fossil, biomass |
PowerSystemRightNow |
~3.9M | 5-minute real-time: CO2 intensity, production >= 100MW / < 100MW, solar, wind, cross-border MW, aFRR + mFRR activated |
mFRRCapacityMarket |
~51K | mFRR balancing market: up/down demand, procured volume, clearing price (EUR/MWh) |
ImbalancePrice |
~83K | Imbalance settlement prices + aFRR/mFRR VWAP prices |
FcrNdDK2 |
~1.77M | FCR-N and FCR-D clearing volume + price in DK2 |
ConsumptionDK3619IndustryHour |
~1.54M | Hourly consumption by industry sector (NACE DK36 + DK19 codes) |
ConsumptionConsumerCategoryHour |
~701K | Hourly consumption by consumer category and grid region |
Gasflow |
~4.5K | Daily Danish gas balance: Tyra, North Sea, biogas, Germany, Sweden, storage |
Input
| Field | Type | Default | Description |
|---|---|---|---|
datasetName |
string | DayAheadPrices |
Which dataset to fetch (see table above) |
startDate |
string | (empty) | Filter from this datetime: YYYY-MM-DDThh:mm e.g. 2026-01-01T00:00. Leave empty for no lower bound |
endDate |
string | (empty) | Filter up to this datetime: YYYY-MM-DDThh:mm. Leave empty for no upper bound |
sortOrder |
string | DESC |
DESC = newest first, ASC = oldest first |
maxItems |
integer | 10 |
Maximum records to return. Datasets have millions of records — use date filters |
Example: Day-Ahead Prices for one month
{
"datasetName": "DayAheadPrices",
"startDate": "2026-01-01T00:00",
"endDate": "2026-02-01T00:00",
"sortOrder": "ASC",
"maxItems": 5000
}
Example: Production by Technology (recent week)
{
"datasetName": "ProductionConsumptionSettlement",
"startDate": "2026-05-01T00:00",
"sortOrder": "DESC",
"maxItems": 2000
}
Example: Balancing Market Clearing
{
"datasetName": "mFRRCapacityMarket",
"startDate": "2026-01-01T00:00",
"endDate": "2026-04-01T00:00",
"maxItems": 10000
}
Output Schema
Each record includes dataset (which dataset it came from) and source_url, plus dataset-specific fields:
| Field | Datasets | Description |
|---|---|---|
hour_utc |
all | Timestamp in UTC |
hour_dk |
most | Timestamp in Danish local time |
price_area |
price datasets | Bidding zone: DK1, DK2, DE, NO1-NO5, SE1-SE4, etc. |
day_ahead_price_eur |
DayAheadPrices, Elspotprices | Price in EUR/MWh |
day_ahead_price_dkk |
DayAheadPrices, Elspotprices | Price in DKK/MWh |
solar_power_mwh |
ProductionConsumptionSettlement | Summed solar production across all size brackets |
offshore_wind_ge100mw_mwh |
ProductionConsumptionSettlement | Large offshore wind (MWh) |
gross_consumption_mwh |
ProductionConsumptionSettlement | Total gross consumption (MWh) |
exchange_no_mwh |
ProductionConsumptionSettlement | Exchange to/from Norway (MWh) |
up_procured_mw |
mFRRCapacityMarket | mFRR up-regulation procured (MW) |
up_price_eur |
mFRRCapacityMarket | mFRR up-regulation clearing price (EUR/MWh) |
co2_emission |
PowerSystemRightNow | CO2 emission intensity (g/kWh) |
industry_code |
ConsumptionDK3619IndustryHour | NACE sector code |
consumption_mwh |
ConsumptionDK3619IndustryHour | Hourly consumption (MWh) |
extra_fields |
all | Additional dataset-specific fields as JSON string |
Use Cases
- Energy trading desks — Pull wholesale prices and balancing market data for spread analysis and real-time position tracking
- Battery / V2G operators — Monitor FCR, aFRR, mFRR clearing prices to optimize charging schedules and bid frequency reserve markets
- Cleantech investors — Track wind/solar penetration and cross-border exchange patterns to evaluate grid integration
- Grid decarbonisation researchers — Hourly CO2 intensity + generation mix + exchange data for lifecycle analysis
- Industrial PPA hedgers — Correlate industrial consumption patterns with wholesale price volatility
Notes
- Date filters: Required for large datasets. Without a date range,
maxItemslimits results from the most recent records. - Elspotprices is discontinued: Data stops at 2025-09-30. Use
DayAheadPricesfor live market data. - PowerSystemRightNow: 5-minute intervals produce ~288 records/day per area — use tight date ranges.
- No proxy needed: Public government API with no rate limiting for normal usage.