Glossary
A reference for the domain concepts and project-specific terms used throughout
smard-cli. The SMARD domain is German; this glossary gives the English term
used in the CLI/library (where one exists) alongside the original German.
Translation table (the labels the
filterscatalogue carries). The CLI’s filter labels are German with an English gloss in parentheses:
German English Stromerzeugung (electricity) generation Stromverbrauch (electricity) consumption Residuallast residual load Großhandelspreis wholesale price Prognose forecast Braunkohle / Steinkohle lignite / hard coal Kernenergie nuclear Wasserkraft / Pumpspeicher hydropower / pumped storage Erdgas natural gas Photovoltaik photovoltaics
SMARD & the platform
SMARD — Strommarktdaten (“electricity market data”). The German power-market
data platform operated by the Bundesnetzagentur (the Federal Network Agency)
at smard.de. It publishes electricity generation,
consumption, residual load and wholesale market prices.
Bundesnetzagentur (BNetzA). The German Federal Network Agency, regulator of the electricity, gas, telecommunications, post and railway markets, and operator of SMARD.
chart-data API. The open, no-authentication HTTP interface this tool wraps.
It is not a query API but a static file tree: for each
(filter, region, resolution) combination SMARD publishes an index of
available window timestamps plus one data file per window. The base URL is
https://www.smard.de.
Read-only, no auth. The chart-data endpoints require no API key. This client
only performs GET requests and never writes. No credential header is ever
constructed. Redirects are not followed — a 3xx surfaces as a
SmardApiError — and only http:/https: base URLs are accepted (enforced in
the default transport). See DEVELOPING.md “Design notes” for these deliberate
divergences from the workspace blueprint.
The request triple
Almost every data call is addressed by three coordinates — a filter, a region and a resolution — plus, for a specific window, a timestamp.
filter. A numeric series id identifying what time series you want
(e.g. 410 = total grid load, 4068 = photovoltaic generation,
4169 = DE/LU wholesale price). The API accepts any integer filter id, so
the CLI and client accept any integer; the bundled FILTERS catalogue (see
smard filters) documents the well-known ones but is not exhaustive.
region. A market or grid area code. See smard regions; the valid set
(RegionValues) is DE, AT, LU, DE-LU, DE-AT-LU, 50Hertz, Amprion,
TenneT, TransnetBW, APG, Creos.
resolution. The temporal granularity of a series: one of hour,
quarterhour, day, week, month, year (ResolutionValues). See
smard resolutions.
timestamp. An epoch-millisecond value marking the start of one data
window. Obtain valid values from smard timestamps; pass one to series. Each
data file covers a fixed window (e.g. one week of hourly values).
Filter groups
The FILTERS catalogue tags each documented filter with one of four groups
(smard filters --group <group>):
generation (Stromerzeugung). Realised electricity generation by source, e.g.
Braunkohle/lignite (1223), Kernenergie/nuclear (1224), Wind Offshore
(1225), Wasserkraft/hydropower (1226), Biomasse (4066), Wind Onshore
(4067), Photovoltaik (4068), Steinkohle/hard coal (4069),
Pumpspeicher/pumped storage (4070), Erdgas/natural gas (4071).
consumption (Stromverbrauch). Total grid load (410), residual load
(4359) and pumped-storage consumption (4387).
forecast (Prognose). Forecasted generation, e.g. Wind Offshore (3791),
Wind Onshore (123), Photovoltaik (125), combined Wind & PV (5097) and
total (122).
price (Großhandelspreis). Day-ahead wholesale market prices for Germany/
Luxembourg (4169) and neighbouring bidding zones (e.g. Austria 4170,
France 254, Netherlands 256, Switzerland 259). Since 1 October 2025 the
day-ahead market sets a price per quarter-hour, and the hour series holds the
mean of the four quarter-hour prices (before that, the quarterhour series
repeats the hourly price). The next day’s prices are published after the midday
auction, so from the afternoon on the newest window already contains tomorrow’s
values.
Regions in detail
DE / AT / LU. Germany, Austria and Luxembourg.
DE-LU. The German–Luxembourg bidding zone, the price area used for most current wholesale-price series.
DE-AT-LU. The former combined Germany–Austria–Luxembourg bidding zone (split in 2018), used for historical data.
TSO control areas (Regelzonen). 50Hertz, Amprion, TenneT and
TransnetBW are the four German transmission-system-operator control areas.
APG / Creos. The Austrian (Austrian Power Grid) and Luxembourg (Creos) TSOs.
Resolutions
hour / quarterhour / day / week / month / year. The supported aggregation
intervals for a series. quarterhour (15-minute) is also the granularity of the
richer table_data response.
Data shapes
index (TimestampIndex). The response of an index_{resolution}.json
request: { timestamps: number[] } — the epoch-millisecond start of each
available data window. Surfaced by client.timestamps() / smard timestamps.
series (SeriesResult). The response of a chart_data request:
{ meta_data, series } where series is an array of SeriesPoints. Returned by
client.series() / client.latest().
SeriesPoint. A single [timestampMs, value] tuple. The second element is
null for a gap (no data for that point).
SeriesMetaData (meta_data). { version, created } — the data version and
its creation time accompanying a series/table response.
table_data (TableResult). A richer quarter-hour response
(smard table). Its series is an array of TableSeriesEntry objects, each
nesting the actual points under a values array of TablePoints.
TablePoint. { timestamp, versions } — one quarter-hour point carrying
multiple versioned values.
TableVersion. One versioned value of a table point: { value, name }. Note
that name identifies the data version and is a number at runtime, not a
label string. Either field may be null.
Units & semantics
MWh — megawatt-hour. The unit for generation and consumption series (energy per window). Note: values are unitless numbers in the JSON; the unit is implied by the chosen filter.
EUR/MWh — euro per megawatt-hour. The unit for the wholesale-price filters
(the price group).
Residual load (Residuallast). Total grid load minus generation from
fluctuating renewables (wind + solar) — the load that must be met by other
sources. Filter 4359.
Total grid load (Gesamtstromverbrauch). Overall electricity consumption in a
region. Filter 410.
Window / data file. The fixed time span covered by one *_{timestamp}.json
data file (e.g. one week of hourly values). To read the newest data you fetch
the index, take the last timestamp, then fetch that file — what latest does in
one call.
Commands & methods
timestamps. smard timestamps <filter> <region> <resolution> /
client.timestamps(...) — list a series’ available window timestamps.
series. smard series <filter> <region> <resolution> <timestamp> /
client.series(...) — fetch one window’s data.
latest. smard latest <filter> <region> <resolution> /
client.latest(...) — convenience that reads the index, picks the newest
timestamp and fetches that window in one call.
table. smard table <filter> <region> <timestamp> /
client.tableData(...) — quarter-hour table_data for one window. Its valid
timestamps are a different set from those returned by timestamps (which
lists chart_data windows); there is no discovery endpoint for table_data
timestamps, so a table call may 404 for a timestamp valid for series.
filters / regions / resolutions. Catalogue commands that print the
documented filter ids (optionally one --group), the valid region codes and the
valid resolution values — served locally from the bundled enums, no network call.
Library & internals. Terms for the TypeScript client and its internals —
SmardClient, the request engine, transport, retry/backoff, error types,FILTERS/RegionValues/ResolutionValues, and the validation boundary — now live in DEVELOPING.md.