Denmark West Nord Pool Day-Ahead Price API

Denmark West Nord Pool Day-Ahead Price API

You need a reliable way to fetch the latest Denmark West Nord Pool Day-Ahead power price and wire it into finance workflows like P&L, hedging dashboards, or internal pricing tools. By the end of this guide you will query the live endpoint, parse the response for the NORDPOOL_DK1_DA symbol, understand units and base currency behavior, and ship a minimal integration in curl and Python.

What you will query and how authentication works

This guide focuses on a single Energy API symbol representing Denmark West (DK1) day-ahead power prices: NORDPOOL_DK1_DA. You will hit the latest-price Finance endpoint using a GET request and authenticate with an api_key passed as a query parameter. The service offers a Starter plan at $19.99/mo and a 7-day trial including 50 calls, so you can verify integration before committing.

Illustration: Denmark West Nord Pool Day-Ahead Price API
  • Symbol name: Denmark West Nord Pool Day-Ahead
  • Symbol code: NORDPOOL_DK1_DA
  • Unit: EUR/MWh
  • Auth: api_key query parameter (use YOUR_API_KEY)
  • Endpoint: GET https://energy-api.com/api/v1/latest
  • Do not pass base=USD when you also need TTF_GAS or EUA_CO2 (not applicable to a single NORDPOOL_DK1_DA call, but critical when batching mixed symbols)
  • No MCP host. Starter $19.99/mo, trial 7 days / 50 calls.

For product access and extended parameters, see Documentation. To start building, create an account via Register.

Quickstart: latest Denmark West day-ahead price (curl)

Copy-paste the following command to retrieve the latest NORDPOOL_DK1_DA quote. Replace YOUR_API_KEY with your real key when you run it.

curl -G "https://energy-api.com/api/v1/latest" --data-urlencode "symbols=NORDPOOL_DK1_DA" --data-urlencode "api_key=YOUR_API_KEY"

Response fields you will parse are rates.NORDPOOL_DK1_DA (numeric price), dates.NORDPOOL_DK1_DA (ISO date), and currencies.NORDPOOL_DK1_DA (quote currency). Base can be EUR or MIXED depending on your symbol set; for a single symbol it will typically be the symbol’s currency.

Official sample JSON (verbatim) and what to read

The following is the official sample block. It demonstrates the response format. You will adapt your parsing keys to NORDPOOL_DK1_DA as shown in the next example.

{
"success": true,
"date": "2026-10-04",
"base": "EUR",
"rates": {
"OMIE_ES_DA": 171.8477
},
"dates": {
"OMIE_ES_DA": "2026-10-04"
},
"currencies": {
"OMIE_ES_DA": "EUR"
},
"base_filter_note": null
}

From this structure, your application will read:

  • success: boolean request status
  • date: the batch date for the payload
  • rates.{SYMBOL}: the numeric latest price
  • dates.{SYMBOL}: ISO date for the symbol’s latest observation
  • currencies.{SYMBOL}: the quote currency for that symbol
  • base: the default base currency for the response (EUR or MIXED depending on symbols requested)

Real NORDPOOL_DK1_DA response to mirror in your integration

Use the exact values below as your reference for parsing NORDPOOL_DK1_DA during development. Keep your code generic enough to handle multiple symbols when you expand later.

{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_DK1_DA":167.9118},"dates":{"NORDPOOL_DK1_DA":"2026-10-03"},"currencies":{"NORDPOOL_DK1_DA":"EUR"},"base_filter_note":null}

Key takeaways for the Denmark West day-ahead price:

  • rates.NORDPOOL_DK1_DA is the numeric price in EUR/MWh.
  • dates.NORDPOOL_DK1_DA is the ISO date “2026-10-03” representing the published day-ahead price date.
  • currencies.NORDPOOL_DK1_DA is “EUR”, matching the unit basis (EUR/MWh).
  • base is “EUR”, consistent with a single EUR-quoted symbol request.

Additional example JSON blocks you can test against

Use the following complete examples to harden your parser and tests. They keep the structure identical so your code can validate mapping and null-safety for unchanged fields.

Example A: Same symbol with confirmed EUR base

{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_DK1_DA":167.9118},"dates":{"NORDPOOL_DK1_DA":"2026-10-03"},"currencies":{"NORDPOOL_DK1_DA":"EUR"},"base_filter_note":null}

Example B: Structure validation with the Denmark West day-ahead series

{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_DK1_DA":167.9118},"dates":{"NORDPOOL_DK1_DA":"2026-10-03"},"currencies":{"NORDPOOL_DK1_DA":"EUR"},"base_filter_note":null}

These examples mirror the real response so your deserialization, data classes, and field accessors remain consistent across environments.

Python: fetch and parse the Denmark West Nord Pool Day-Ahead price

The snippet below requests the latest price for NORDPOOL_DK1_DA and extracts the rate, currency, and observation date. It keeps explicit key names and simple validations for production readability.

import requests
from urllib.parse import urlencode

def get_dk1_day_ahead(api_key: str):
base_url = "https://energy-api.com/api/v1/latest"
params = {
"symbols": "NORDPOOL_DK1_DA",
"api_key": api_key
}
url = f"{base_url}?{urlencode(params)}"
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()

if not data.get("success", False):
raise RuntimeError("Energy API replied with success=false")

symbol = "NORDPOOL_DK1_DA"
rates = data.get("rates", {})
dates = data.get("dates", {})
currencies = data.get("currencies", {})

# Required fields for finance workflows
price = rates.get(symbol)
obs_date = dates.get(symbol)
currency = currencies.get(symbol)

if price is None or obs_date is None or currency is None:
raise KeyError("Missing required fields for NORDPOOL_DK1_DA in response")

# Optional base check — useful when you later request multiple symbols
base = data.get("base")
base_filter_note = data.get("base_filter_note")

return {
"symbol": symbol,
"price": float(price),
"unit": "EUR/MWh", # per catalog facts
"currency": currency,
"observation_date": obs_date,
"response_base": base,
"base_filter_note": base_filter_note
}

if __name__ == "__main__":
out = get_dk1_day_ahead("YOUR_API_KEY")
print(out)

Notes:

  • The unit is EUR/MWh, so no further normalization is needed for a single-symbol request.
  • Keep symbol access explicit (NORDPOOL_DK1_DA) to avoid mismatches when you expand symbol lists.
  • If you later add symbols like TTF_GAS or EUA_CO2, do not pass base=USD; their base may be MIXED, and you should respect the currencies field per symbol.

JavaScript (Node.js): minimal fetch example

This example uses fetch to request the latest Denmark West day-ahead price and logs the parsed values.

import fetch from "node-fetch";

async function getDk1DayAhead(apiKey) {
const params = new URLSearchParams({
symbols: "NORDPOOL_DK1_DA",
api_key: apiKey
});

const url = `https://energy-api.com/api/v1/latest?${params.toString()}`;
const res = await fetch(url, { method: "GET" });
if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
const data = await res.json();
if (!data.success) {
throw new Error("Energy API replied with success=false");
}

const symbol = "NORDPOOL_DK1_DA";
const price = data.rates?.[symbol];
const obsDate = data.dates?.[symbol];
const currency = data.currencies?.[symbol];

if (price == null || obsDate == null || currency == null) {
throw new Error("Missing required fields for NORDPOOL_DK1_DA");
}

return {
symbol,
price,
currency,
unit: "EUR/MWh",
observationDate: obsDate,
responseBase: data.base,
baseFilterNote: data.base_filter_note
};
}

getDk1DayAhead("YOUR_API_KEY")
.then(console.log)
.catch(err => {
console.error(err);
process.exit(1);
});

How to interpret the fields for finance use-cases

For finance workflows, accuracy in unit and currency handling is critical to avoid silent P&L drift. The NORDPOOL_DK1_DA symbol is quoted in EUR/MWh, reported as a day-ahead price.

  • rates.NORDPOOL_DK1_DA: numeric day-ahead price in EUR per MWh.
  • dates.NORDPOOL_DK1_DA: ISO date for the observation. Treat it as a calendar date, not a timestamp. No explicit timezone offset is provided in this endpoint; the field is a date.
  • currencies.NORDPOOL_DK1_DA: expected to be “EUR”. If you mix symbols in one call, always check currencies.{SYMBOL} per symbol.
  • base: for a single-symbol request, base is typically EUR. If you later request a basket including instruments like TTF_GAS or EUA_CO2, the base can be MIXED, and you should not force a base=USD conversion for those. The safest approach is symbol-level currency handling.
  • base_filter_note: optional information if a base filter was applied. For these examples it is null.

Day-ahead price cadence: the latest endpoint returns the most recent available day’s value for the symbol. Because this is a daily series, do not poll per minute. Caching at the application layer for the business date is recommended. On weekends and holidays, the endpoint still returns the latest available day’s figure; rely on dates.{SYMBOL} to know which day you are using for P&L or settlement approximations.

Production integration details that save time

  • Idempotent reads: Calling the same endpoint and symbol multiple times during the same day will return the same price until the next update. Cache by date and symbol to minimize calls (especially during the 7-day / 50-call trial).
  • Symbol isolation: Access values by fully qualified keys (rates.NORDPOOL_DK1_DA, dates.NORDPOOL_DK1_DA, currencies.NORDPOOL_DK1_DA). Avoid iterating rates blindly if you plan to merge with other regions.
  • Numeric precision: Convert to decimal or double at the application boundary. Keep the raw value from rates for auditability.
  • Currency policy: Do not force base conversions when the symbol set may include instruments with MIXED base characteristics (e.g., TTF_GAS or EUA_CO2). For this post’s single symbol, no special handling is required.
  • Non-trading days: The endpoint still returns a value with a valid dates.{SYMBOL}. Always display or store that date alongside the price to avoid misalignment in reports.
  • Error handling: Check success first. If success=false, do not attempt to read rates. Log and retry with backoff or surface to your alerting.

Field-by-field walkthrough using the Denmark West example

Consider the real response again and how each field maps into typical finance systems:

{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_DK1_DA":167.9118},"dates":{"NORDPOOL_DK1_DA":"2026-10-03"},"currencies":{"NORDPOOL_DK1_DA":"EUR"},"base_filter_note":null}
  • success: Gate for parser; if false, skip downstream processing.
  • date: Use as a top-level indicator of the payload date. For storage, prefer the per-symbol dates field as source-of-truth.
  • rates.NORDPOOL_DK1_DA: Store as price_value, numeric.
  • dates.NORDPOOL_DK1_DA: Store as price_date (ISO date string).
  • currencies.NORDPOOL_DK1_DA: Store as price_ccy; with unit metadata, ensure consumers understand EUR/MWh.
  • base_filter_note: Optional metadata you may log for debugging.

Curl, JSON, and field mapping checklist

Before shipping to production, verify these steps with your own key:

  1. Run the official curl to ensure network and auth are working:
    curl -G "https://energy-api.com/api/v1/latest" --data-urlencode "symbols=NORDPOOL_DK1_DA" --data-urlencode "api_key=YOUR_API_KEY"
  2. Confirm that success is true and that rates.NORDPOOL_DK1_DA, dates.NORDPOOL_DK1_DA, and currencies.NORDPOOL_DK1_DA are present.
  3. Persist price_value, price_date, price_ccy, and unit metadata (EUR/MWh) in your store.
  4. Implement a daily cache keyed by SYMBOL+DATE to avoid redundant calls within the same business day.
  5. If you later expand to multi-symbol requests that include TTF_GAS or EUA_CO2, do not set base=USD. Read currencies.{SYMBOL} per instrument.

FAQ

Q: What unit does NORDPOOL_DK1_DA use?
A: EUR per MWh (EUR/MWh). Store and display it explicitly to avoid confusion in P&L and mark-to-market views.

Q: Which fields do I need to price a report row?
A: rates.NORDPOOL_DK1_DA (price), dates.NORDPOOL_DK1_DA (observation date), currencies.NORDPOOL_DK1_DA (currency). Optionally store base for auditing.

Q: How often should I call the latest endpoint?
A: For a day-ahead series, cache once per business date. Re-fetch when your scheduler expects the next day’s data to be available.

Q: Can I query multiple symbols at once?
A: Yes, but when mixing instruments like TTF_GAS or EUA_CO2 do not pass base=USD. Respect the per-symbol currencies field; base may be MIXED.

Q: What’s the fastest way to start in a sandbox?
A: Use the 7-day trial (50 calls) to run the curl and your chosen client snippet, then expand with caching to stay within trial limits.

Ship your integration now: create an account via Register, then explore symbol details and options in the Documentation. You will have the NORDPOOL_DK1_DA latest price flowing into your finance stack in minutes.

Ready to get started?

Get your API key and start querying energy commodity prices in minutes.

Get API Key

Related posts