Austria EPEX Day-Ahead Price API

Austria EPEX Day-Ahead Price API

You need the live Austria EPEX Day-Ahead power price in EUR/MWh, and you want to ship a finance integration that reliably fetches, parses, and displays the latest value from a stable API. By the end of this guide, you will query the Energy API for the EPEX_AT_DA symbol, read the fields you actually need (price, unit, valuation date), handle base currency, and build a small parser that’s production-ready.

What the Austria EPEX Day-Ahead symbol provides

The Austria EPEX Day-Ahead instrument tracks day-ahead electricity prices for Austria in EUR per MWh. For finance workflows that model PnL, pass-through costs, or hedging, you’ll typically read a single price per day along with its valuation date and currency.

Illustration: Austria EPEX Day-Ahead Price API
  • Symbol name: Austria EPEX Day-Ahead
  • Symbol code: EPEX_AT_DA
  • Unit: EUR/MWh
  • Endpoint: GET https://energy-api.com/api/v1/latest
  • Auth: api_key query parameter

The response is normalized with a flat rates map keyed by symbol code, a dates map for valuation dates, and a currencies map for quote currency per symbol. You should assume one valuation per calendar day and plan for weekends and holidays to have a published day-ahead price.

Authentication, pricing, and request shape

Authentication is via api_key as a query parameter. Use YOUR_API_KEY as the placeholder in examples. Do not send a base override when you also need TTF_GAS or EUA_CO2; it isn’t required for EPEX_AT_DA anyway.

  • Auth: api_key query parameter (no headers required)
  • Starter plan: $19.99/mo
  • Trial: 7 days / 50 calls
  • No MCP host; use the listed endpoint directly

Request shape for latest quotes: send symbols=EPEX_AT_DA and your api_key. The response includes overall date and base, plus per-symbol entries under rates, dates, and currencies. The base may be MIXED across broader calls; in this single-symbol workflow you’ll typically read currencies.EPEX_AT_DA to confirm the currency (EUR) and parse rates.EPEX_AT_DA as the numeric price.

Quickstart: cURL latest price

Use this copy-pasteable curl to fetch the latest Austria EPEX Day-Ahead price. It returns a compact JSON object you can parse in any finance stack:

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

The following is the official sample cURL and JSON block (verbatim) as provided by the API. The cURL target is the same endpoint and parameters pattern you will use for EPEX_AT_DA.

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

Response formats you will parse

Here is a real response for EPEX_AT_DA. Use these exact field names in your code and read the symbol from the rates, dates, and currencies maps.

{"success":true,"date":"2026-11-03","base":"EUR","rates":{"EPEX_AT_DA":297.6888},"dates":{"EPEX_AT_DA":"2026-11-03"},"currencies":{"EPEX_AT_DA":"EUR"},"base_filter_note":null,"missing_symbols":null}

Fields you will typically use:

  • rates.EPEX_AT_DA: numeric latest price (EUR/MWh)
  • dates.EPEX_AT_DA: valuation date for the symbol
  • currencies.EPEX_AT_DA: quote currency for the symbol (EUR)
  • date: API-wide date context (often matches the symbol date for single-symbol calls)
  • base: overall base context, which may be EUR or MIXED across broader requests. Always confirm currencies.EPEX_AT_DA for safety.

Official sample JSON (verbatim)

The API also provides the following official sample JSON. It demonstrates the same response structure with a different electricity symbol. The structure and field names are identical to EPEX_AT_DA:

{
"success": true,
"date": "2026-11-03",
"base": "EUR",
"rates": {
"OMIE_ES_DA": 186.4867
},
"dates": {
"OMIE_ES_DA": "2026-11-03"
},
"currencies": {
"OMIE_ES_DA": "EUR"
},
"base_filter_note": null,
"missing_symbols": null
}

Cache snapshot example (same symbol and fields)

For testing or cache validation, you may store and re-emit the latest response without changes. Below is the exact EPEX_AT_DA payload again as a reproducible snapshot for unit tests and fixtures:

{"success":true,"date":"2026-11-03","base":"EUR","rates":{"EPEX_AT_DA":297.6888},"dates":{"EPEX_AT_DA":"2026-11-03"},"currencies":{"EPEX_AT_DA":"EUR"},"base_filter_note":null,"missing_symbols":null}

Parse the latest Austria EPEX Day-Ahead price in Python

The snippet below requests the latest EPEX_AT_DA quote and validates the fields that matter to pricing and valuation date alignment in a finance workflow.

import os
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 = "EPEX_AT_DA"

def fetch_latest(symbol):
params = {
"symbols": symbol,
"api_key": API_KEY,
}
url = f"{API_URL}?{urllib.parse.urlencode(params)}"
with urllib.request.urlopen(url, timeout=15) as r:
body = r.read().decode("utf-8")
return json.loads(body)

def read_quote(payload, symbol):
if not payload.get("success"):
raise RuntimeError("API returned success=false")
rates = payload.get("rates", {})
dates = payload.get("dates", {})
currencies = payload.get("currencies", {})

if symbol not in rates:
raise KeyError(f"Missing rate for {symbol}")
if symbol not in dates:
raise KeyError(f"Missing date for {symbol}")
if symbol not in currencies:
raise KeyError(f"Missing currency for {symbol}")

price = float(rates[symbol])
valuation_date = dates[symbol] # YYYY-MM-DD
currency = currencies[symbol] # Expect "EUR" for EPEX_AT_DA

# Optional cross-checks:
# - Ensure currency is EUR for EUR/MWh workflows
# - Confirm payload["date"] == valuation_date for single-symbol calls
# - base can be "EUR" or "MIXED" in general; for single EUR-quoted symbols,
# prefer currencies[symbol] to drive display.
return {
"symbol": symbol,
"price": price,
"currency": currency,
"date": valuation_date,
"unit": "EUR/MWh"
}

if __name__ == "__main__":
try:
data = fetch_latest(SYMBOL)
quote = read_quote(data, SYMBOL)
print(json.dumps(quote, indent=2))
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)

Field-by-field behavior and finance integration notes

Below are the practical details most teams implement before going to production, tailored to EPEX_AT_DA:

  • Symbol map lookups: Always read price from rates.EPEX_AT_DA and date from dates.EPEX_AT_DA. Avoid relying only on the top-level date if you mix symbols later.
  • Currency and unit: For Austria EPEX Day-Ahead, currencies.EPEX_AT_DA is EUR and the unit is EUR/MWh. Display both currency and unit in UI to prevent confusion with kWh-based UIs.
  • Base field: The top-level base can be EUR or MIXED depending on your symbol set. Since you’re requesting one symbol, rely on currencies.EPEX_AT_DA as truth for display and valuation pipelines.
  • Timestamps and timezone: The valuation dates are ISO (YYYY-MM-DD). For finance accruals aligned to local market calendars, you can treat dates.EPEX_AT_DA as the valuation date for the daily mark. If your system stores UTC timestamps, map the valuation date to a midnight UTC anchor or a local trading calendar anchor as per your downstream convention.
  • Weekends/holidays: Day-ahead electricity tends to have published values for each delivery day, including weekends and many holidays. If you see the same date across several hours, that’s normal for a day-ahead daily valuation.
  • Caching: The latest endpoint suits minute-scale caching for dashboards. For server-to-server batch jobs, you can cache by the valuation date and symbol key, invalidating once a new date appears.
  • Error handling: Check success first. If missing_symbols is non-null in broader requests, handle it; for single-symbol requests it’s usually null.

End-to-end example: cURL to JSON to display

Run this exact cURL to get the EPEX_AT_DA quote:

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

A typical parse target will look like this again (kept here for copy-paste tests and schema validation in your CI):

{"success":true,"date":"2026-11-03","base":"EUR","rates":{"EPEX_AT_DA":297.6888},"dates":{"EPEX_AT_DA":"2026-11-03"},"currencies":{"EPEX_AT_DA":"EUR"},"base_filter_note":null,"missing_symbols":null}

From this payload, you’ll commonly persist four values per day: symbol (EPEX_AT_DA), price (297.6888), currency (EUR), and valuation date (2026-11-03). Store the unit (EUR/MWh) alongside the symbol metadata so computations are dimensionally correct.

Validation, reconciliation, and monitoring

For finance-grade robustness, add these checks:

  • Schema assertions: Verify that rates, dates, and currencies all contain the requested symbol.
  • Non-null arithmetic domain: Price should parse as a positive float. Reject NaN, null, or negative values.
  • Monotone date cursor: Keep a last-seen valuation date and alert if the date regresses unexpectedly.
  • Currency invariant: Assert currencies.EPEX_AT_DA == "EUR" for this integration.
  • Idempotent writes: Use a unique key (symbol, date) to avoid duplicates on retried jobs.

If you later expand to multi-symbol pulls that mix EUR power and non-EUR assets (like TTF_GAS or EUA_CO2), do not pass base=USD. Keep currencies per symbol and handle conversions downstream in your own FX pipeline if needed. For the single-symbol EPEX_AT_DA workflow, this concern does not apply.

ORIGIN CATALOG FACTS for quick copy-paste

  • Symbol name: Austria EPEX Day-Ahead
  • Symbol code: EPEX_AT_DA
  • Unit: EUR/MWh
  • Auth: api_key query parameter. Placeholder YOUR_API_KEY only.
  • Do not pass base=USD when you also need TTF_GAS or EUA_CO2.
  • No MCP host. Starter $19.99/mo, trial 7 days / 50 calls.
  • curl: curl -G "https://energy-api.com/api/v1/latest" --data-urlencode "symbols=EPEX_AT_DA" --data-urlencode "api_key=YOUR_API_KEY"
  • Read rates.EPEX_AT_DA, dates.EPEX_AT_DA, currencies.EPEX_AT_DA. base may be MIXED.

FAQ

How often does EPEX_AT_DA update?
You should expect one valuation per calendar day. Treat dates.EPEX_AT_DA as the canonical valuation date and cache per (symbol, date).

What unit is the price in?
EUR/MWh. Confirm currencies.EPEX_AT_DA == "EUR" and keep the unit attached to the symbol metadata in your system.

Do I need to set base=USD?
No. For EPEX_AT_DA, do not pass base=USD. If you also query TTF_GAS or EUA_CO2, still do not set base=USD; handle currency per symbol.

What are the trial limits?
The trial is 7 days with 50 calls total. The Starter plan is $19.99/mo.

Which fields are required to display the price?
rates.EPEX_AT_DA for the numeric price, dates.EPEX_AT_DA for the valuation date, currencies.EPEX_AT_DA for the quote currency. Optionally display the unit (EUR/MWh).

Next steps

Register for an API key and ship your Austria EPEX Day-Ahead integration. Start with the latest endpoint, read rates.EPEX_AT_DA, dates.EPEX_AT_DA, and currencies.EPEX_AT_DA, and cache by valuation date for stability. Explore authentication and field details in the docs, then automate your daily pull:

Ready to get started?

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

Get API Key

Related posts