SMARD APIsmard.de ↗
Retrieve German day-ahead electricity spot prices at 15-minute resolution from SMARD (Bundesnetzagentur). Returns EUR/MWh prices with UTC timestamps.
What is the SMARD API?
The SMARD.de API exposes one endpoint — get_spot_prices — that returns German EPEX SPOT day-ahead electricity prices at 15-minute resolution. Each response includes timestamped price entries with Unix millisecond timestamps, ISO 8601 UTC datetimes, and prices denominated in EUR/MWh. You can query any date range and bidding zone, making it practical for energy market analysis, cost modeling, and grid research.
curl -X GET 'https://api.parse.bot/scraper/c55baad5-bf80-4113-82fa-eb7a076ee660/get_spot_prices?date_to=2026-09-21&date_from=2026-09-20®ion=DE' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace smard-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: SMARD German Energy Spot Prices — bounded, re-runnable."""
from parse_apis.smard_de_api import Smard, Region, InvalidInput
client = Smard()
# Fetch 15-minute spot prices for Germany over a one-day window.
for price in client.spot_prices.list(
region=Region.DE, date_from="2026-08-07", date_to="2026-08-08", limit=5
):
print(price.datetime_utc, price.price_eur_mwh, "EUR/MWh")
# Get the full report object to access metadata (region, resolution, count).
try:
report = client.spot_price_reports.get(
region=Region.DE, date_from="invalid-date", date_to="2026-08-08"
)
except InvalidInput as e:
print(f"Caught expected error for bad date: {e.message}")
report = client.spot_price_reports.get(
region=Region.DE, date_from="2026-08-07", date_to="2026-08-08"
)
print(f"Region: {report.region}, Resolution: {report.resolution}, Count: {report.count}")
# Drill into the first price entry from the report's typed list.
if report.prices:
first = report.prices[0]
print(f"First interval: {first.datetime_utc} -> {first.price_eur_mwh} {report.unit}")
print("exercised: spot_prices.list / spot_price_reports.get")
Fetch German energy day-ahead spot prices at 15-minute resolution for a given date range. Returns timestamped prices in EUR/MWh from the EPEX SPOT market for the specified bidding zone. Data is sourced weekly; the endpoint fetches all relevant weekly chunks and filters to the requested range. Each request makes 1 index call plus 1 data call per overlapping week (typically 1-2 for a week-long range).
| Param | Type | Description |
|---|---|---|
| region | string | Bidding zone or TSO area. Omitting defaults to DE (Germany). |
| date_to | string | End date in ISO format YYYY-MM-DD (UTC, inclusive of the full day). Omitting defaults to today. |
| date_from | string | Start date in ISO format YYYY-MM-DD (UTC). Omitting defaults to 7 days before today. |
{
"type": "object",
"fields": {
"unit": "always 'EUR/MWh'",
"count": "number of price entries returned",
"prices": "array of price objects, each with timestamp_ms (Unix ms), datetime_utc (ISO string), and price_eur_mwh (number)",
"region": "bidding zone code used for the query",
"resolution": "always '15min'"
},
"sample": {
"data": {
"unit": "EUR/MWh",
"count": 192,
"prices": [
{
"datetime_utc": "2026-08-07T00:00:00Z",
"timestamp_ms": 1786060800000,
"price_eur_mwh": 137.76
},
{
"datetime_utc": "2026-08-07T00:15:00Z",
"timestamp_ms": 1786061700000,
"price_eur_mwh": 130.76
},
{
"datetime_utc": "2026-08-07T00:30:00Z",
"timestamp_ms": 1786062600000,
"price_eur_mwh": 127.59
}
],
"region": "DE",
"resolution": "15min"
},
"status": "success"
}
}About the SMARD API
What the API Returns
The get_spot_prices endpoint returns an array of price objects covering the requested date range, each carrying three fields: timestamp_ms (Unix milliseconds), datetime_utc (ISO 8601 string), and price_eur_mwh (a number). The response envelope also includes unit (always EUR/MWh), resolution (always 15min), region (the bidding zone code used), and count (the number of price entries returned). Negative prices — which occur in the German electricity market during periods of oversupply — are returned as negative numbers.
Query Parameters
Three optional inputs control the query. date_from and date_to accept ISO dates in YYYY-MM-DD format (UTC-based); omitting them defaults to a 7-day window ending today. The region parameter selects the bidding zone or TSO area; omitting it defaults to DE (Germany as a whole). Data on SMARD is published in weekly chunks, so the endpoint assembles all relevant weekly segments and filters them to the precise date range you request.
Data Source and Freshness
SMARD is operated by the Bundesnetzagentur (Federal Network Agency) and aggregates electricity market data including EPEX SPOT day-ahead prices. The underlying data is updated on a weekly publication cadence, so very recent days may not yet appear. Prices reflect the day-ahead auction results for the DE bidding zone unless another region is specified.
Coverage Scope
The API covers day-ahead spot prices only. Intraday prices, balancing energy prices, generation capacity by source, and grid load data that SMARD publishes separately are not included in the current endpoint set. The resolution is fixed at 15 minutes; hourly aggregation is not available as a parameter but can be computed client-side from the returned data.
The SMARD API is a managed, monitored endpoint for smard.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when smard.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official smard.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Calculate average daily or weekly electricity procurement costs using
price_eur_mwhfor energy-intensive manufacturing. - Detect negative price windows from
price_eur_mwhvalues to schedule flexible industrial loads or EV charging. - Build historical backtests for algorithmic energy trading strategies using 15-minute granularity price series.
- Correlate German spot prices with renewable generation forecasts to model grid stress periods.
- Feed
datetime_utcandprice_eur_mwhinto dashboards for real-time cost monitoring in building energy management systems. - Supply price time-series data to academic research on European electricity market dynamics.
- Alert procurement teams when spot prices cross threshold values by polling the endpoint for the current day.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does SMARD have an official developer API?+
What does the `get_spot_prices` endpoint return for each price entry?+
prices array contains timestamp_ms (Unix time in milliseconds), datetime_utc (ISO 8601 string in UTC), and price_eur_mwh (the day-ahead auction price as a float). Negative values are valid and reflect periods where the market cleared below zero.How current is the data — can I get today's prices?+
Does the API cover bidding zones outside Germany, such as Austria or Luxembourg?+
region parameter supports the bidding zones SMARD exposes, which are centered on Germany and adjacent TSO areas. Coverage of other European countries' spot prices (e.g., France, Poland, Nordics) is not currently included. You can fork the API on Parse and revise it to target additional bidding zones if the underlying source publishes them.