Sweden Nord Pool Day-Ahead Price API
You need a reliable way to fetch the latest Sweden Nord Pool day-ahead electricity price and get it into your finance stack for valuation, hedging, and billing logic. By the end of this guide, you will query the Energy API for the NORDPOOL_SE_DA symbol, parse the fields you actually need (price, unit, date, currency, base), and ship a minimal production integration with caching and guardrails.
What you are fetching: Sweden Nord Pool day-ahead in EUR/MWh
This post covers the Energy API symbol for Sweden’s Nord Pool day-ahead market:
- Symbol name: Sweden Nord Pool Day-Ahead
- Symbol code: NORDPOOL_SE_DA
- Unit: EUR/MWh
- Access: GET https://energy-api.com/api/v1/latest?symbols= via api_key query parameter
- Authentication: api_key as a query parameter (use YOUR_API_KEY placeholder in examples)
- Plan details: Starter $19.99/mo; trial is 7 days / 50 calls
- No MCP host; standard Energy API host only
The endpoint returns a consolidated latest price payload with these fields: success, date, base, rates, dates, currencies, base_filter_note. For financial uses, you will primarily read rates.NORDPOOL_SE_DA (numeric price), dates.NORDPOOL_SE_DA (price date), currencies.NORDPOOL_SE_DA (expected “EUR”), and base (may be “EUR” or “MIXED,” depending on the symbol set requested).
Endpoint, method, and authentication
The Energy API latest-price endpoint for this symbol is:
- HTTP method: GET
- Endpoint: https://energy-api.com/api/v1/latest
- Query parameters:
- symbols=NORDPOOL_SE_DA
- api_key=YOUR_API_KEY
Important base-currency note: When querying symbols like TTF_GAS or EUA_CO2, do not pass base=USD because those can require base=MIXED. For this guide, we stay focused on the Sweden Nord Pool day-ahead symbol and do not add mixed-base commodities to the request.
Refer to the official Documentation if you need broader symbol coverage.
Copy-paste cURL quickstart
Use this exact cURL request, which includes the correct endpoint, symbol, and api_key parameter. Replace YOUR_API_KEY with your actual key.
curl -G "https://energy-api.com/api/v1/latest" --data-urlencode "symbols=NORDPOOL_SE_DA" --data-urlencode "api_key=YOUR_API_KEY"
Official sample payloads you should expect to parse
Below are complete JSON examples for reference. The first block is an official sample illustrating the response contract (fields, shapes). The second block is the real Sweden Nord Pool Day-Ahead sample response you will use in your integration tests. Include strict field parsing to avoid surprises if you later request multiple symbols.
Official sample (structure reference)
{
"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
}
Real Sweden Nord Pool Day-Ahead example (use these values)
{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_SE_DA":26.1929},"dates":{"NORDPOOL_SE_DA":"2026-10-03"},"currencies":{"NORDPOOL_SE_DA":"EUR"},"base_filter_note":null}
Same real payload for parsing demonstration
{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_SE_DA":26.1929},"dates":{"NORDPOOL_SE_DA":"2026-10-03"},"currencies":{"NORDPOOL_SE_DA":"EUR"},"base_filter_note":null}
Field-by-field: what you actually use in finance workflows
For pricing models and downstream finance systems that require a clean price and timestamp, read these fields:
- rates.NORDPOOL_SE_DA: The latest Sweden Nord Pool day-ahead price as a float. Unit is EUR/MWh.
- dates.NORDPOOL_SE_DA: The price’s market date (ISO-8601, e.g., “2026-10-03”). Treat as the valuation date.
- currencies.NORDPOOL_SE_DA: The currency for this symbol, typically “EUR”.
- base: The response base currency context. For this single symbol, base is “EUR” in the sample. It may be “MIXED” if you request symbols spanning multiple currencies. Always check this field before doing FX conversions or aggregations.
Other fields:
- success: Boolean indicating the request outcome. Always guard against false.
- date: A top-level date often reflecting the batch or snapshot date. Use the per-symbol dates map for the final source-of-truth price date in multi-symbol scenarios.
- base_filter_note: Can be null or may include notes when filtering or base handling is applied. Log it for diagnostics if present.
Python example: fetch and parse NORDPOOL_SE_DA
This Python sample calls the latest endpoint, validates the response, and extracts price, unit, currency, and market date for insertion into your pricing engine or PnL pipeline.
import sys
import json
import urllib.parse
import urllib.request
API_URL = "https://energy-api.com/api/v1/latest"
API_KEY = "YOUR_API_KEY"
SYMBOL = "NORDPOOL_SE_DA"
def fetch_latest(symbol):
params = {
"symbols": symbol,
"api_key": API_KEY
}
url = API_URL + "?" + urllib.parse.urlencode(params)
req = urllib.request.Request(url, method="GET")
with urllib.request.urlopen(req, timeout=15) as resp:
data = resp.read().decode("utf-8")
return json.loads(data)
def parse_price(payload, symbol):
if not payload.get("success"):
raise ValueError("API returned success=false")
rates = payload.get("rates", {})
dates = payload.get("dates", {})
currencies = payload.get("currencies", {})
base = payload.get("base")
if symbol not in rates or symbol not in dates or symbol not in currencies:
raise KeyError(f"Missing fields for {symbol}")
# Extract required fields
price = float(rates[symbol])
market_date = dates[symbol] # ISO string, e.g., "2026-10-03"
currency = currencies[symbol] # "EUR"
unit = "EUR/MWh" # From the symbol catalog for NORDPOOL_SE_DA
# Validate that base is suitable for your aggregation logic
if base not in ("EUR", "MIXED"):
raise ValueError(f"Unexpected base: {base}")
return {
"symbol": symbol,
"price": price,
"market_date": market_date,
"currency": currency,
"unit": unit,
"base": base
}
if __name__ == "__main__":
try:
payload = fetch_latest(SYMBOL)
record = parse_price(payload, SYMBOL)
print(json.dumps(record, indent=2))
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
JavaScript example: minimal integration with field checks
This JavaScript snippet uses fetch to retrieve the latest price and confirm that base and currency are as expected before posting into a finance service.
const API_URL = "https://energy-api.com/api/v1/latest";
const API_KEY = "YOUR_API_KEY";
const SYMBOL = "NORDPOOL_SE_DA";
async function getLatest(symbol) {
const params = new URLSearchParams({
symbols: symbol,
api_key: API_KEY
});
const url = `${API_URL}?${params.toString()}`;
const res = await fetch(url, { method: "GET" });
if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
const body = await res.json();
if (!body.success) {
throw new Error("API returned success=false");
}
const price = body?.rates?.[symbol];
const date = body?.dates?.[symbol];
const currency = body?.currencies?.[symbol];
const base = body?.base;
if (price == null || !date || !currency) {
throw new Error("Missing required fields for NORDPOOL_SE_DA");
}
if (base !== "EUR" && base !== "MIXED") {
console.warn(`Unexpected base: ${base}`);
}
return {
symbol,
price,
marketDate: date,
currency,
unit: "EUR/MWh",
base
};
}
getLatest(SYMBOL)
.then(data => {
console.log("Latest Sweden Nord Pool Day-Ahead:", data);
})
.catch(err => {
console.error("Failed to load latest price:", err);
});
Validation with known-good JSON
Use these payloads for contract tests. The first block is the official structure sample (different market), while the second and third blocks are the real NORDPOOL_SE_DA example you can match in parsing tests to ensure correct field extraction.
Structure sample
{
"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
}
Real symbol payload
{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_SE_DA":26.1929},"dates":{"NORDPOOL_SE_DA":"2026-10-03"},"currencies":{"NORDPOOL_SE_DA":"EUR"},"base_filter_note":null}
Real symbol payload (duplicate for parser tests)
{"success":true,"date":"2026-10-03","base":"EUR","rates":{"NORDPOOL_SE_DA":26.1929},"dates":{"NORDPOOL_SE_DA":"2026-10-03"},"currencies":{"NORDPOOL_SE_DA":"EUR"},"base_filter_note":null}
How to think about time, days, and finance-specific alignment
Day-ahead auctions produce a daily price schedule and a market date. In the latest endpoint, you consume a single daily value per symbol for most finance workflows where one representative daily value is sufficient. Align this market date (dates.NORDPOOL_SE_DA) with your valuation date or as-of timestamp in your ledger or PnL calculations.
There can be non-trading days or holidays; the latest endpoint will still return the most recent available value for the symbol. If you need strict day-over-day deltas, store yesterday’s successful payload and compare its dates map to today’s before computing changes or running risk checks.
Units, base, and currency handling
For NORDPOOL_SE_DA:
- Unit: EUR/MWh. Keep this consistent in your downstream schema so conversions remain explicit.
- Currency: currencies.NORDPOOL_SE_DA is “EUR”. If you do internal FX conversion, do it outside this call. Do not set base=USD for mixed baskets that include TTF_GAS or EUA_CO2.
- Base: The response base can be “EUR” or “MIXED”. Always check base before aggregating multiple symbols or computing cross-commodity indices.
Production considerations: caching, retries, and idempotence
Suggested practical rules to save integration time:
- Cache: Cache successful responses for several minutes or for the remainder of the trading day, depending on your refresh policy. For day-ahead prices, a per-day cache keyed by dates.NORDPOOL_SE_DA is common.
- Retries: Implement a short retry with backoff on transient HTTP errors. Do not retry on success=false without investigating cause.
- Idempotence: Your ingestion step should be idempotent—if you receive the same date and price again, skip duplicate writes to prevent double counting in PnL.
- Monitoring: Log base, currency, and the symbol key used. Alert if currency != “EUR” for NORDPOOL_SE_DA or if base not in {“EUR”, “MIXED”}.
- Schema: Store fields explicitly: symbol, price (decimal), unit, currency, market_date, base, and the raw JSON blob for audit.
End-to-end testing checklist
- Connectivity: Verify a 200 status from the endpoint and success=true in payload.
- Field presence: Confirm rates.NORDPOOL_SE_DA, dates.NORDPOOL_SE_DA, currencies.NORDPOOL_SE_DA exist and are non-null.
- Type checks: Ensure price is parsed as decimal/float; dates parsed as ISO-8601 string.
- Unit/currency: Validate unit=EUR/MWh (from catalog) and currency=EUR (from payload).
- Base policy: Enforce base in {EUR, MIXED} before aggregations or comparisons across symbols.
- Persistence: Insert with a unique key on (symbol, market_date) to ensure idempotence.
Rate limits, plan, and cost guardrails
The Starter plan is $19.99/month, and the trial provides 7 days / 50 calls. For finance workloads pulling a day-ahead price once or a few times per day, this is typically sufficient. To avoid unnecessary usage, implement caching and avoid polling more frequently than needed for your valuation cadence.
Troubleshooting common integration issues
- Unexpected base: If base is “MIXED”, confirm you did not include additional symbols that require mixed currency handling. For this guide’s single-symbol request, you should see “EUR”.
- Missing rates field: Check that you spelled the symbol code exactly as NORDPOOL_SE_DA and that you passed api_key as a query parameter.
- Stale data concerns: Compare top-level date and dates.NORDPOOL_SE_DA. Use the per-symbol date as your authoritative price date.
- FX conversions: Keep them outside this call. Do not add base=USD when also requesting TTF_GAS or EUA_CO2 in the same call.
FAQ
Q: What is the exact symbol and unit for Sweden’s Nord Pool day-ahead price?
A: Symbol code is NORDPOOL_SE_DA and the unit is EUR/MWh.
Q: Which fields should my finance system store?
A: rates.NORDPOOL_SE_DA (price), dates.NORDPOOL_SE_DA (market date), currencies.NORDPOOL_SE_DA (currency), and base. Also store the unit (EUR/MWh) from the catalog.
Q: How do I authenticate?
A: Use the api_key query parameter. Example: api_key=YOUR_API_KEY.
Q: Can I request multiple symbols at once?
A: Yes, but always check base. If you include symbols that differ by currency, base may be “MIXED”. For this post we focus solely on NORDPOOL_SE_DA.
Q: What are the plan and trial details?
A: Starter is $19.99/month. Trial is 7 days / 50 calls.
Register and build your finance integration
Create an account to get your API key and ship your NORDPOOL_SE_DA integration. Start with the latest endpoint, read the per-symbol fields, and wire it directly into your pricing and PnL workflow. Use the following links to get started:
Ready to get started?
Get your API key and start querying energy commodity prices in minutes.
Get API KeyRelated posts
Discover how to use the Finance API to access Norway Nord Pool day-ahead prices. Enhance your finance workflow...
Read more →
Discover how to streamline petabyte-scale meter data with Energy API and Apache Iceberg. Learn effective strea...
Read more →
Discover how to leverage Energy API for backtesting renewable hedging strategies. Simulate volatility and opti...
Read more →
Discover how to design a reproducible backtesting framework for power trading strategies using Energy API time...
Read more →
Discover how Energy API can automate regulatory compliance reporting for utilities, streamlining FERC and EU R...
Read more →