Skip to main content
Historical series use from, to, and either aggregation or resolution. See each endpoint’s reference for its parameters.

Timestamp format

Send RFC 3339 timestamps with an explicit Z or numeric offset. Fractional seconds are accepted:
  • 2026-09-05T10:00:00Z
  • 2026-09-05T12:00:00+02:00 — the same instant
  • 2026-09-05T10:00:00.125Z
Supply each required parameter once, with from earlier than to. Use curl’s --data-urlencode for query values, especially numeric offsets containing +. Response timestamps are UTC. The timeZone field, Europe/Copenhagen, describes the calendar used for interval boundaries.

Inclusive start, exclusive end

An interval covers [start, end). Requested ranges cover [from, to). Bounds expand outward to complete requested intervals. An already aligned exclusive to does not expand again. For example, an hourly request from 10:15Z to 11:10Z on the same day becomes 10:00Z to 12:00Z. A request ending exactly at 11:00Z ends there. The response’s from and to show these adjusted bounds, even when some readings are missing. Each row’s start and end describe its own interval.

Calendar boundaries and daylight saving

Days, months, and years follow the Europe/Copenhagen calendar. Days around daylight-saving changes have different lengths: In autumn, 2026-10-25T00:00:00Z and 2026-10-25T01:00:00Z are distinct hours even though both display as 02:00 locally with different offsets. Key readings by absolute timestamps, not a local hour label. Do not assume every day contains 24 hourly readings.

Intervals and limits

Caps apply after normalization, using local calendar days or years. Usage, costs, and revenue use the query name aggregation. Historical prices use resolution; spelling and case matter. Expansion can push a short-looking request over its cap. A yearly cost request crossing New Year expands to two whole years and is rejected, even if its original bounds were only days apart. Request each year separately. The available forecast period is described in Forecasts.

Fetch adjacent windows

Split large historical requests into aligned windows:
  1. Request [A, B).
  2. Request [B, C) at the same interval.
  3. Combine rows by absolute start timestamp.
Choose calendar-aligned boundaries before splitting. Splitting at 10:30 and relying on normalization can cause both responses to include the same 10:00 hourly bucket. Retrying or refreshing a window can also return revised data; replace the matching interval rather than adding it again.