Finland grid frequency
Real-time AC frequency on the Finnish grid, part of the Nordic synchronous area (Finland, Sweden, Norway and eastern Denmark), a different synchronous area from the Baltics, which joined Continental Europe in February 2025. Sourced from Fingrid, downsampled to 5-min mean and refreshed hourly.
Endpoints
- Latest (rolling 7-day):
https://public-data.volton.energy/v1/grid-frequency-fi/latest.json - Per-day archive:
https://public-data.volton.energy/v1/grid-frequency-fi/{YYYY-MM-DD}.json— immutable, available from2025-02-09
Row schema
| Column | Type | Unit | Nullable | Description |
|---|---|---|---|---|
mtu_start |
string (date-time) | — | no | Sample timestamp (ISO 8601 UTC). Frequency is sampled at fixed intervals from Fingrid 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-fi/latest.json
DuckDB
SELECT * FROM read_json_auto(
'https://public-data.volton.energy/v1/grid-frequency-fi/latest.json',
records = false
);
Python (pandas)
import pandas as pd
resp = pd.read_json('https://public-data.volton.energy/v1/grid-frequency-fi/latest.json')
df = pd.DataFrame(resp['rows'])
R (jsonlite)
library(jsonlite)
data <- fromJSON('https://public-data.volton.energy/v1/grid-frequency-fi/latest.json')
df <- data$rows
JavaScript (fetch)
const r = await fetch('https://public-data.volton.energy/v1/grid-frequency-fi/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-fi/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 small imbalances move frequency. FCR and aFRR continuously correct it, so under normal conditions it stays in a tight band around 50 Hz across the Nordic synchronous area.
- Is this the same as the Estonian / Baltic frequency?
- No. Finland is in the Nordic synchronous area; the Baltic states joined the Continental European area in February 2025. The two areas hold independent frequencies, so the Finnish value differs from the Baltic one.
License + citation
Source: Fingrid Open Data via Volton, CC-BY-4.0. CC-BY-4.0.
Volton Technology OÜ (2026). Finland grid frequency.
CC-BY-4.0. https://public-data.volton.energy/grid-frequency-fi/