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

FieldMeaning
valid_timethe start of the interval the value is for, UTC
valuethe number, or null where the provider published no value
knowledge_timewhen the value became known: declared by the provider, or the time it was observed to appear
annotationnull 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
messageonly 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.

On this page