TenneT transparency data
TenneT operates the Dutch high-voltage grid and publishes through an API portal how the grid is kept in balance: imbalance prices and volumes per quarter hour, the activation of reserve power (aFRR, mFRR), the merit order list, available cross-border capacity and metered injections. You need a free key, each API allows only a limited number of requests a day (often only 25), and the terms forbid passing the data on to others. That is why there are no TenneT figures here; the chart comes from the CBS electricity balance.
Electricity imports into the Netherlands by neighbouring country (CBS electricity balance): Germany is the largest part, 42% in 2025
Breakdown in 2025: Germany 42%, Norway 17%, United Kingdom 15%, Belgium 14%, Denmark 12%. Total: 16,307 million kWh.
What can you do with it?3 ideas
When was power extremely expensive or negatively priced?
settlement-prices gives the imbalance price per quarter hour. Find the quarters with the highest and lowest price in a month and compare with the weather.
How much power can cross the border?
available-border-capacity gives the available capacity per interconnector. CBS counts afterwards what was actually imported: in 2025, 42% of imports came from Germany (chart on this page).
How often does TenneT have to step in?
frequency-restoration-reserve-activations and balance-delta-high-res show how much reserve power was used. Add up the volume per day and see whether it relates to lots of sun or wind.
How to process it3 steps
Request a key
Register on developer.tennet.eu. The key goes in the apikey header. Production: at most 1 request per second, 5 per minute, 25 per day (acceptance: 60 per minute, 300 per day).
https://developer.tennet.eu/
Read the specification per endpoint
Every API has its own OpenAPI specification (e.g. settlement-prices, version 1.5.1). Times as dd-mm-yyyy hh:mm:ss, at most one month per request.
https://developer.tennet.eu/specs/v1/settlement-prices
A call with a key
Without a key the gateway returns 403. With the Accept header you choose json, xml, csv or xlsx.
curl -H "apikey: <sleutel>" -H "Accept: application/json" "https://api.tennet.eu/publications/v1/settlement-prices?date_from=15-10-2026%2000:00:00&date_to=15-10-2026%2001:00:00"
Interesting combinations

Expensive grid at times of no wind?
Compare the daily imbalance prices with KNMI wind speed and sunshine. Mind the terms if you publish the result.

Which offshore wind farms feed in?
EMODnet shows the offshore wind farms with capacity and status; TenneT's metered-injections gives the measured injection into the grid.
Similar sources
- EEENTSO-E Transparency Platform not in the index yet
European platform where all grid operators, including TenneT, report their generation, load and cross-border data. Its API also needs a token after registration (without one: 401).
National Energy Dashboard (NED)Solar and wind generation and gas use, from ten minutes to a year. An initiative of Gasunie and TenneT, with its own terms.
CBS StatLineOpen monthly and annual figures on electricity generation, consumption, imports and exports (table 84575NED), but nothing per quarter hour.
What to watch out for
- Do not pass the data on
According to the general terms (C.4) you may not distribute, sell or share data from the APIs with third parties unless the API documentation allows it. You get no rights to the data (E.3).
- Few requests a day
The limit differs per API: 25 a day for settlement-prices, settled-imbalance-volumes and metered-injections among others, 600 for the merit-order-list, 1,500 for FRR-activations and reconciliation-control-data, 5 for the monthly reconciliation-prices; on top of that at most 1 per second. Going over can get your key temporarily blocked.
- Do not use name and logo
The terms (E.1) forbid using TenneT's name and logo for promotional or commercial purposes without permission. That is why there is no logo here.
- Not tested ourselves
We did not request a key. Size and history of the series are therefore not measured; everything here comes from the specifications and the terms (16 October 2026).
APIREST (JSON, XML, CSV, XLSX) · read 16 Oct 2026
Register on developer.tennet.eu and request a key. It goes in the apikey header, together with Accept (application/json, application/xml, text/csv or application/xlsx). Without a key the gateway returned an HTML page with 403; the specification lists 401 for an invalid key. tested
jsonxmlcsvxlsx
Base URL
https://api.tennet.eu/publications/v1
Endpoints 10
- GET
/settlement-pricesImbalance prices per quarter hour (isp): shortage, surplus, dispatch_up/down, regulation state. At most 1 month per request. - GET
/settled-imbalance-volumesSettled imbalance volumes per time unit with the balance responsible parties. At most 1 hour per request. - GET
/balance-delta-high-resBalance delta in high resolution (activated balancing power); /balance-delta-high-res/latest returns the newest. At most 1 day per request. - GET
/frequency-restoration-reserve-activationsVolumes of activated balancing energy (aFRR, mFRR), reserve and emergency energy. At most 1 day. - GET
/merit-order-listMerit order list aFRR and mFRRsa: prices and volumes of the bids per quarter hour. At most 1 hour. - GET
/merit-order-list-incident-reserveMerit order list for incident reserve (mFRRda). Times in UTC with Z; at most 1 day. - GET
/available-border-capacityAvailable border capacity per quarter hour: total import and export, with Belgium and with Germany, and the aFRR profile limits. Times in UTC with Z; at most 1 day. - GET
/metered-injectionsMetered injections and scheduled exchanges per market time unit (the load visible on the transmission grid). At most 1 day. - GET
/reconciliation-pricesReconciliation prices per month (v2 also /reconciliation-prices/isp per quarter hour and /reconciliation-prices/mffbas). At most 1 year. - GET
/reconciliation-control-dataData to recalculate the reconciliation prices yourself. At most 1 year.
Filtering from the description
No filters besides the time frame: each API returns all series from date_from to date_to.
Parameters 6
date_from / date_to | Start and end of the time frame, required. Maximum length differs per API (1 hour to 1 year). For available-border-capacity and merit-order-list-incident-reserve RFC3339 in UTC with Z instead (2024-01-01T00:00Z). | from the description |
apikey | Your personal key. | from the description |
Accept | application/json, application/xml, text/csv or application/xlsx (required). | from the description |
response_format | Only on the newer APIs (border capacity, incident reserve): format as query parameter, default JSON. | from the description |
x-conversation_id | Only on the newer APIs: required caller id for tracing the request. | from the description |
bidding-zone / start-date / end-date / product | Only /reconciliation-prices/mffbas (v2): bidding zone 10YNL----------L, dates YYYY-MM-DD (max 1 month), product e.g. 023. | from the description |
Fields (per the specifications; not seen ourselves). Prices come as text. 8
| Name | Type | Meaning |
|---|---|---|
Response.TimeSeries[].Period.Points[].isp | tekst | Nummer van het kwartier (onbalansperiode) op de dag |
timeInterval_start / timeInterval_end | datetime · UTC | Begin en einde van het kwartier |
shortage / surplus | tekst (getal) · EUR/MWh | Onbalansprijs bij tekort en bij overschot (settlement-prices) |
dispatch_up / dispatch_down | tekst (getal) · EUR/MWh | Prijs van op- en afregelen |
incident_reserve_up / incident_reserve_down | tekst | YES/NO: of incidentreserve is ingezet |
regulation_state / regulating_condition | getal / tekst | Regeltoestand van het kwartier (bv. 1, DOWN) |
total_border_capacity_import / _export | getal · MW (veld quantity_measurement_unit_name = MAW) | Beschikbare grenscapaciteit totaal (available-border-capacity) |
german_border_capacity_import / belgium_border_capacity_import | getal · MW (MAW) | Idem per buurland, ook _export |
Limits and pitfalls
- Limits per API (production): settlement-prices, settled-imbalance-volumes and metered-injections 1 per second, 5 per minute, 25 per day; reconciliation-prices (month) 2 per minute, 5 per day; merit-order-list 10 per minute, 600 per day; frequency-restoration-reserve-activations and reconciliation-control-data 1,500 per day; balance-delta-high-res 10 per minute. from the description
- Over the limit: 429 "API rate limit exceeded"; repeatedly exceeding it can temporarily block your key. The acceptance environment (api.acc.tennet.eu) has wider limits. from the description
- Responses of the newer APIs carry headers with the remaining room: X-RateLimit-Limit-Day/-Minute/-Second and X-RateLimit-Remaining-Day …; 204 means no data in the time frame. from the description
- Recommended polling: available-border-capacity every 5 minutes from 00:06; balance-delta-high-res five times a minute, just after second 12. from the description
- Terms: do not distribute, sell or share data with third parties unless the API documentation allows it (C.4); no rights to the data (E.3); do not use TenneT's name and logo for promotion without permission (E.1). experience
- Two time notations side by side: the older APIs want dd-mm-yyyy hh:mm:ss (encode the space as %20), the newer ones (border capacity, incident reserve) RFC3339 in UTC with Z, with snake_case fields and one time_series object. from the description
- No robots.txt rules: developer.tennet.eu allows everything, api.tennet.eu returns 403 on robots.txt (the gateway). tested
- Open alternatives: CBS table 84575NED (monthly electricity balance, with imports and exports per country) and the ENTSO-E Transparency Platform (also with a token). experience
Try it
No call: we have no key (without a key 403), and the terms forbid passing the data on to third parties.
Read from OpenAPI 3.0 specification per API, embedded in the page (settlement-prices 1.5.1 and nine others under /specs/v1/ and /specs/v2/) · Overview of all ten APIs with a short description · Fair use policy and general terms. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
More in this topic
See how this page is built
bron: tennet
blokken: []
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
cache:
tag: bron:tennet
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: specificatiepagina op developer.tennet.eu bereikbaar (geen data
opgehaald; sleutel en voorwaarden)
verwacht: live
Source: content/bronnen/tennet.yaml · Markdown