Finland mFRR clearing prices
Finland's mFRR balancing-energy market price, the marginal price of manually-activated balancing energy, up and down, published by Fingrid every 15 minutes. Finland is in the Nordic balancing market and participates in the EU MARI platform. Refreshed hourly.
Endpoints
- Latest (rolling 7-day):
https://public-data.volton.energy/v1/mfrr-clearing-price-fi/latest.json - Per-day archive:
https://public-data.volton.energy/v1/mfrr-clearing-price-fi/{YYYY-MM-DD}.json— immutable, available from2024-10-09
Row schema
| Column | Type | Unit | Nullable | Description |
|---|---|---|---|---|
mtu_start |
string (date-time) | — | no | Market Time Unit start (ISO 8601 UTC). Each MTU is a 15-minute settlement interval. |
direction |
string enum: up | down | — | no | Activation direction: up = TSO buys energy from BSP, down = TSO sells back. |
price_eur_mwh |
number | EUR/MWh | yes | Marginal clearing price for activated balancing energy in this direction. Null when no activation cleared in this MTU. |
Top-level response: { schema_version, generated_at, meta, rows: [...] }
Code samples
curl
curl https://public-data.volton.energy/v1/mfrr-clearing-price-fi/latest.json
DuckDB
SELECT * FROM read_json_auto(
'https://public-data.volton.energy/v1/mfrr-clearing-price-fi/latest.json',
records = false
);
Python (pandas)
import pandas as pd
resp = pd.read_json('https://public-data.volton.energy/v1/mfrr-clearing-price-fi/latest.json')
df = pd.DataFrame(resp['rows'])
R (jsonlite)
library(jsonlite)
data <- fromJSON('https://public-data.volton.energy/v1/mfrr-clearing-price-fi/latest.json')
df <- data$rows
JavaScript (fetch)
const r = await fetch('https://public-data.volton.energy/v1/mfrr-clearing-price-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/mfrr-clearing-price-fi/latest.json")),
Rows = Source[rows],
AsTable = Table.FromRecords(Rows)
in
AsTable
Methodology
mFRR (manual Frequency Restoration Reserve) is the slower balancing product the TSO activates by hand to restore frequency. Fingrid publishes the marginal balancing-energy price in each direction at 15-minute resolution, up means the TSO buys energy, down means it sells.
Finland runs in the Nordic balancing market and joined the EU mFRR platform (MARI) in March 2025. The series shown here is Fingrid's published balancing-energy market price, defined slightly differently from the Baltic feed's cross-zonal MARI marginal clearing price.
FAQ
- How is this different from the Baltic mFRR price?
- Both are 15-minute mFRR energy prices, but sourced differently: the Baltic feed is the cross-zonal MARI marginal clearing price (via the Baltic Transparency Dashboard), while Finland's is Fingrid's published balancing-energy market price.
- Why are some values missing?
- When no up- or down-regulation is priced in a 15-minute period, there is no value to publish for that direction.
License + citation
Source: Fingrid Open Data via Volton, CC-BY-4.0. CC-BY-4.0.
Volton Technology OÜ (2026). Finland mFRR clearing prices.
CC-BY-4.0. https://public-data.volton.energy/mfrr-clearing-price-fi/