Estonia grid frequency

Real-time AC frequency on the Estonian grid, which has been part of the Continental European Synchronous Area since 9 February 2025. The whole CESA shares one frequency in real time — Estonia and Portugal see the same number. Sourced from Elering, downsampled to 5-min mean and refreshed hourly.

Endpoints

Row schema

ColumnTypeUnitNullableDescription
mtu_start string (date-time) no Sample timestamp (ISO 8601 UTC). Frequency is sampled at fixed intervals from Elering telemetry.
frequency_hz number Hz yes System frequency for the Baltic LFC block within the Continental European Synchronous Area. Nominal 50.000 Hz.

Top-level response: { schema_version, generated_at, meta, rows: [...] }

Code samples

curl
curl https://public-data.volton.energy/v1/grid-frequency/latest.json
DuckDB
SELECT * FROM read_json_auto(
  'https://public-data.volton.energy/v1/grid-frequency/latest.json',
  records = false
);
Python (pandas)
import pandas as pd

resp = pd.read_json('https://public-data.volton.energy/v1/grid-frequency/latest.json')
df = pd.DataFrame(resp['rows'])
R (jsonlite)
library(jsonlite)
data <- fromJSON('https://public-data.volton.energy/v1/grid-frequency/latest.json')
df <- data$rows
JavaScript (fetch)
const r = await fetch('https://public-data.volton.energy/v1/grid-frequency/latest.json');
const { rows, meta } = await r.json();
Excel Power Query (M)
let
    Source = Json.Document(Web.Contents("https://public-data.volton.energy/v1/grid-frequency/latest.json")),
    Rows = Source[rows],
    AsTable = Table.FromRecords(Rows)
in
    AsTable

Methodology

AC frequency is the heartbeat of the grid: nominal 50 Hz means generation exactly matches consumption. When generation exceeds consumption, frequency rises; shortage pushes it down. FCR responds within 30 s to keep the system inside ±200 mHz; aFRR brings it back to 50.000.

Sample rate here is downsampled to 5-min averages so the page is light to load. Volton samples at higher resolution internally for trading; the public feed is the 5-min mean.

FAQ

Why is the value sometimes a few mHz off 50?
Even tiny imbalances move frequency: a 100 MW shortage in CESA shifts it about 5 mHz. FCR / aFRR continuously correct, so the value stays in a tight band around 50 Hz under normal conditions.
Why is this Estonia-only when CESA shares one frequency?
CESA is synchronous, so any one PMU in the area gives a representative number. We publish the Estonian PMU value (sourced from Elering); Portugal would publish a virtually identical curve.

License + citation

Source: Elering via Volton, CC-BY-4.0. CC-BY-4.0.

Volton Technology OÜ (2026). Estonia grid frequency.
CC-BY-4.0. https://public-data.volton.energy/grid-frequency/

Related