Reading values
Read the values of a timeseries, in the latest version or as they were known at a time.
GET /entities/{entity}/timeseries/{name}/values returns the values of
one timeseries from one provider. provider is required, also when only one exists, so a URL never
changes meaning when a second provider arrives.
start and end are ISO 8601 instants with a UTC offset (2026-11-09T00:00:00Z), or bare dates
(2026-11-09), which mean 00:00 UTC that day. A date and time without an offset is a 400.
Points
| Field | Meaning |
|---|---|
valid_time | the start of the interval the value is for, UTC |
value | the number, or null where the provider published no value |
knowledge_time | when the value became known: declared by the provider, or the time it was observed to appear |
annotation | null for a value as published; otherwise a code such as a03_forward_fill (the provider carried the previous value forward), a04_nowcast or a99_retracted |
message | only on points an upstream message stated, today the outage (REMIT unavailability) series: {id, revision, reason, status} of the notice behind the change-point. A cancelled or dismissed notice's point carries that notice, so status says why the capacity came back |
Columns
Most series hold one number per interval, and a point carries it in value. A provider that
publishes a family of numbers together, such as Elia's p10 / p50 / p90 of a forecast, holds them
as one series with several columns, and a point then carries a values object instead of
value, one entry per column. The metadata call lists the columns per provider in columns, and
the values response repeats the columns it returns in its header.
columns on the values call selects a subset, comma-separated; omitted, every column is
returned. Asking for a column the provider does not publish, or passing columns on a series with the
one column value, is 400.
curl "$API/entities/BE/timeseries/production.forecast.solar_generation_forecast.day_ahead/values?provider=elia&columns=p50,p90&start=2026-11-01T00:00:00Z&end=2026-11-02T00:00:00Z" \
-H "X-API-Key: $KEY"r = requests.get(
f"{API}/entities/BE/timeseries/production.forecast.solar_generation_forecast.day_ahead/values",
headers=HEADERS,
params={
"provider": "elia",
"columns": "p50,p90",
"start": "2026-11-01T00:00:00Z",
"end": "2026-11-02T00:00:00Z",
},
)
for p in r.json()["points"]:
print(p["valid_time"], p["values"]["p50"], p["values"]["p90"])Selecting a version with as_of
A value that is published again (a correction, a later estimate, a new forecast run) is kept as a
new version with its own knowledge_time. as_of selects which version is returned. The response
is flat (a points list) when as_of is omitted or an instant, and snapshots (a
snapshots list) when it is a period or rolling.
The examples read SE3 load from ENTSO-E, with V the values path
$API/entities/SE-SE3/timeseries/consumption.realised_load.total_load/values.
Latest
as_of omitted: the latest version of every value. This is the usual read.
curl "$V?provider=entsoe&start=2026-10-01T00:00:00Z&end=2026-10-08T00:00:00Z" -H "X-API-Key: $KEY"r = requests.get(
V,
headers=HEADERS,
params={
"provider": "entsoe",
"start": "2026-10-01T00:00:00Z",
"end": "2026-10-08T00:00:00Z",
},
)
points = r.json()["points"]As known at an instant
as_of an RFC 3339 time: every value as it was known at that instant. Values published later are
absent, and values revised later come in the version known then. This shows the data as a reader saw it at
that time.
curl "$V?provider=entsoe&start=2026-10-08T00:00:00Z&end=2026-10-08T06:00:00Z&as_of=2026-10-08T01:30:00Z" \
-H "X-API-Key: $KEY"r = requests.get(
V,
headers=HEADERS,
params={
"provider": "entsoe",
"start": "2026-10-08T00:00:00Z",
"end": "2026-10-08T06:00:00Z",
"as_of": "2026-10-08T01:30:00Z",
},
)
points = r.json()["points"]One snapshot per period
as_of an ISO 8601 duration (PT1H, PT6H, P1D): one snapshot per period, anchored on start,
or on the time of day given in at. Each snapshot is the whole window as known at its instant. For
example, as_of=P1D&at=10:00 returns the window as it stood at 10:00 each day; the
forecast versions example uses PT1H.
curl "$V?provider=entsoe&start=2026-10-01T00:00:00Z&end=2026-10-08T00:00:00Z&as_of=P1D&at=10:00" \
-H "X-API-Key: $KEY"r = requests.get(
V,
headers=HEADERS,
params={
"provider": "entsoe",
"start": "2026-10-01T00:00:00Z",
"end": "2026-10-08T00:00:00Z",
"as_of": "P1D",
"at": "10:00",
},
)
snapshots = r.json()["snapshots"]One snapshot per step
as_of=rolling: a snapshot at every native step of the series, which is every state a live reader
could have seen.
curl "$V?provider=entsoe&start=2026-10-08T00:00:00Z&end=2026-10-08T06:00:00Z&as_of=rolling" \
-H "X-API-Key: $KEY"r = requests.get(
V,
headers=HEADERS,
params={
"provider": "entsoe",
"start": "2026-10-08T00:00:00Z",
"end": "2026-10-08T06:00:00Z",
"as_of": "rolling",
},
)
snapshots = r.json()["snapshots"]Snapshots at which nothing was known are omitted, and snapshots stop at now even when end is
later. An as_of in the future is 400. Snapshot responses page with next, passed back as
cursor.
Window
start and end are inclusive, UTC. A window holds at most 100,000 points at the series'
resolution; see Limits.