# TenneT transparantiedata

TenneT beheert het Nederlandse hoogspanningsnet en publiceert via een API-portaal hoe het net in balans wordt gehouden: onbalansprijzen en -volumes per kwartier, de inzet van reservevermogen (aFRR, mFRR), de biedladder, beschikbare grenscapaciteit en gemeten invoeding. Je hebt een gratis sleutel nodig, per API mag je maar een beperkt aantal verzoeken per dag doen (vaak maar 25) en de voorwaarden verbieden de data aan anderen door te geven. Daarom staan hier geen TenneT-cijfers; de grafiek komt uit de elektriciteitsbalans van het CBS.

- Uitgever: TenneT TSO B.V.
- Gebied: Nederland · Laagste detail: kwartier (onbalansperiode)
- Periode: niet vastgesteld (geen sleutel gebruikt) · Ververst: live
- Toegang: Gratis sleutel · Licentie: Voorwaarden TenneT (geen open licentie; data niet doorgeven)
- Koppelsleutels: datum en tijd (dd-mm-jjjj uu:mm:ss), onbalansperiode (kwartier), grensverbinding
- Status: grijs
- URL: https://developer.tennet.eu/

## Wat kun je ermee?
- **Wanneer was stroom extreem duur of negatief geprijsd?.** settlement-prices geeft de onbalansprijs per kwartier. Zoek de kwartieren met de hoogste en laagste prijs in een maand en zet ze naast het weer.
- **Hoeveel stroom kan er over de grens?.** available-border-capacity geeft per grensverbinding de beschikbare capaciteit. Het CBS telt achteraf wat er echt is ingevoerd: in 2025 kwam 42% van de invoer uit Duitsland (grafiek op deze pagina).
- **Hoe vaak moet TenneT ingrijpen?.** frequency-restoration-reserve-activations en balance-delta-high-res laten zien hoeveel reservevermogen er werd ingezet. Tel per dag het volume op en kijk of het samenhangt met veel zon of wind.

## Zo verwerk je het
1. **Vraag een sleutel aan.** Registreer op developer.tennet.eu. De sleutel gaat mee in de kop apikey. Productie: hoogstens 1 verzoek per seconde, 5 per minuut, 25 per dag (acceptatie: 60 per minuut, 300 per dag).
   `https://developer.tennet.eu/`
2. **Lees de specificatie per endpoint.** Elke API heeft een eigen OpenAPI-specificatie (bv. settlement-prices, versie 1.5.1). Tijden in de vorm dd-mm-jjjj uu:mm:ss, hoogstens een maand per verzoek.
   `https://developer.tennet.eu/specs/v1/settlement-prices`
3. **Een aanroep met sleutel.** Zonder sleutel geeft de gateway 403. Met de kop Accept kies je json, xml, csv of 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"`

## Interessante koppelingen
- Duur stroomnet bij windstilte? → [knmi-daggegevens](https://www.opendataindex.nl/bron/knmi-daggegevens.md) via datum. Zet de onbalansprijzen per dag naast de windsnelheid en zonneschijn van het KNMI. Let op de voorwaarden als je de uitkomst publiceert.
- Welke windparken op zee voeden in? → [emodnet](https://www.opendataindex.nl/bron/emodnet.md) via windpark en aansluitpunt. EMODnet toont de windparken op zee met vermogen en status; metered-injections van TenneT geeft de gemeten invoeding op het net.

## Vergelijkbare bronnen
- [ENTSO-E Transparency Platform](https://transparency.entsoe.eu): Europees platform waar alle netbeheerders, ook TenneT, hun productie-, verbruiks- en grensgegevens melden. Ook die API vraagt een token na registratie (zonder token: 401).
- [ned-energie](https://www.opendataindex.nl/bron/ned-energie.md): Opwek van zon en wind en het gasverbruik, per tien minuten tot per jaar. Een initiatief van Gasunie en TenneT, met eigen voorwaarden.
- [cbs-statline](https://www.opendataindex.nl/bron/cbs-statline.md): Open maand- en jaarcijfers over stroomproductie, verbruik, invoer en uitvoer (tabel 84575NED), maar niets per kwartier.

## Waar je op moet letten
- **Data niet doorgeven.** Volgens de algemene voorwaarden (C.4) mag je data uit de API's niet verspreiden, verkopen of delen met derden, tenzij de API-documentatie dat toestaat. Je krijgt geen rechten op de data (E.3).
- **Weinig verzoeken per dag.** De limiet verschilt per API: 25 per dag voor onder meer settlement-prices, settled-imbalance-volumes en metered-injections, 600 voor de merit-order-list, 1.500 voor FRR-activations en reconciliation-control-data, 5 voor de maandelijkse reconciliation-prices; daarnaast hoogstens 1 per seconde. Over de grens gaan kan tijdelijke blokkering van je sleutel opleveren.
- **Naam en logo niet gebruiken.** De voorwaarden (E.1) verbieden de naam en het logo van TenneT voor promotie of commerciële doelen zonder toestemming. Daarom staat hier geen logo.
- **Niet zelf getest.** Wij hebben geen sleutel aangevraagd. Omvang en historie van de reeksen zijn daarom niet gemeten; alles hier komt uit de specificaties en de voorwaarden (16 oktober 2026).

## API (REST (JSON, XML, CSV, XLSX))

- Basis: https://api.tennet.eu/publications/v1
- Toegang: Registreer op developer.tennet.eu en vraag een sleutel aan. Die gaat mee in de kop apikey, samen met Accept (application/json, application/xml, text/csv of application/xlsx). Zonder sleutel gaf de gateway een HTML-pagina met 403; de specificatie noemt 401 voor een ongeldige sleutel. (getest)
- Formaten: json, xml, csv, xlsx
- Filteren: Geen filters behalve het tijdvak: elke API geeft alle reeksen voor date_from tot date_to.; 

### Endpoints
- `GET /settlement-prices`: Onbalansprijzen per kwartier (isp): shortage, surplus, dispatch_up/down, regeltoestand. Hoogstens 1 maand per verzoek.
- `GET /settled-imbalance-volumes`: Verrekende onbalansvolumes per tijdseenheid met de programmaverantwoordelijken. Hoogstens 1 uur per verzoek.
- `GET /balance-delta-high-res`: Balansdelta in hoge resolutie (geactiveerd regelvermogen); /balance-delta-high-res/latest geeft het nieuwste. Hoogstens 1 dag per verzoek.
- `GET /frequency-restoration-reserve-activations`: Volumes van ingezette balanceringsenergie (aFRR, mFRR), reserve en noodvermogen. Hoogstens 1 dag.
- `GET /merit-order-list`: Biedladder aFRR en mFRRsa: prijzen en volumes van de biedingen per kwartier. Hoogstens 1 uur.
- `GET /merit-order-list-incident-reserve`: Biedladder voor incidentreserve (mFRRda). Tijden in UTC met Z; hoogstens 1 dag.
- `GET /available-border-capacity`: Beschikbare grenscapaciteit per kwartier: import en export totaal, met België en met Duitsland, en de aFRR-profielgrenzen. Tijden in UTC met Z; hoogstens 1 dag.
- `GET /metered-injections`: Gemeten invoeding en geplande uitwisseling per marktperiode (de last die zichtbaar is op het transportnet). Hoogstens 1 dag.
- `GET /reconciliation-prices`: Reconciliatieprijzen per maand (v2 ook /reconciliation-prices/isp per kwartier en /reconciliation-prices/mffbas). Hoogstens 1 jaar.
- `GET /reconciliation-control-data`: Gegevens om de reconciliatieprijzen zelf na te rekenen. Hoogstens 1 jaar.

### Parameters
- `date_from / date_to`: Begin en einde van het tijdvak, verplicht. Maximale lengte verschilt per API (1 uur tot 1 jaar). Bij available-border-capacity en merit-order-list-incident-reserve juist RFC3339 in UTC met Z (2024-01-01T00:00Z). (uit de beschrijving)
- `apikey`: Je persoonlijke sleutel. (uit de beschrijving)
- `Accept`: application/json, application/xml, text/csv of application/xlsx (verplicht). (uit de beschrijving)
- `response_format`: Alleen bij de nieuwere API's (border capacity, incident reserve): formaat als queryparameter, standaard JSON. (uit de beschrijving)
- `x-conversation_id`: Alleen bij de nieuwere API's: verplicht eigen id om het verzoek te volgen. (uit de beschrijving)
- `bidding-zone / start-date / end-date / product`: Alleen /reconciliation-prices/mffbas (v2): biedzone 10YNL----------L, datums JJJJ-MM-DD (max 1 maand), product bv. 023. (uit de beschrijving)

### Velden (volgens de specificaties; niet zelf gezien). Prijzen komen als tekst. (8)
`Response.TimeSeries[].Period.Points[].isp` tekst, `timeInterval_start / timeInterval_end` datetime, `shortage / surplus` tekst (getal), `dispatch_up / dispatch_down` tekst (getal), `incident_reserve_up / incident_reserve_down` tekst, `regulation_state / regulating_condition` getal / tekst, `total_border_capacity_import / _export` getal, `german_border_capacity_import / belgium_border_capacity_import` getal

### Limieten en valkuilen
- Limieten per API (productie): settlement-prices, settled-imbalance-volumes en metered-injections 1 per seconde, 5 per minuut, 25 per dag; reconciliation-prices (maand) 2 per minuut, 5 per dag; merit-order-list 10 per minuut, 600 per dag; frequency-restoration-reserve-activations en reconciliation-control-data 1.500 per dag; balance-delta-high-res 10 per minuut. (uit de beschrijving)
- Over de limiet: 429 "API rate limit exceeded"; herhaald overschrijden kan je sleutel tijdelijk blokkeren. De acceptatieomgeving (api.acc.tennet.eu) heeft ruimere limieten. (uit de beschrijving)
- Antwoorden van de nieuwere API's dragen koppen met de resterende ruimte: X-RateLimit-Limit-Day/-Minute/-Second en X-RateLimit-Remaining-Day …; 204 betekent geen data in het tijdvak. (uit de beschrijving)
- Aanbevolen ophaalritme: available-border-capacity elke 5 minuten vanaf 00:06; balance-delta-high-res vijf keer per minuut, telkens net na seconde 12. (uit de beschrijving)
- Voorwaarden: data niet verspreiden, verkopen of delen met derden tenzij de API-documentatie dat toestaat (C.4); geen rechten op de data (E.3); naam en logo van TenneT niet gebruiken voor promotie zonder toestemming (E.1). (ervaring)
- Twee tijdnotaties door elkaar: de oudere API's willen dd-mm-jjjj uu:mm:ss (spatie als %20 coderen), de nieuwere (border capacity, incident reserve) RFC3339 in UTC met Z, met snake_case-velden en één time_series-object. (uit de beschrijving)
- Geen robots.txt-regels: developer.tennet.eu staat alles toe, api.tennet.eu geeft 403 op robots.txt (de gateway). (getest)
- Open alternatieven: CBS-tabel 84575NED (elektriciteitsbalans per maand, met invoer en uitvoer per land) en het ENTSO-E Transparency Platform (ook met token). (ervaring)


## Voorbeelden met echte cijfers (1)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Stroominvoer naar Nederland per buurland (CBS-elektriciteitsbalans): Duitsland is het grootste deel, 42% in 2025** (2025). Tabel 84575NED. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/tennet-stroominvoer-per-buurland-cbs)
  - `https://opendata.cbs.nl/ODataApi/OData/84575NED/TypedDataSet?$filter=Perioden%20eq%20'2025JJ00'&$select=Duitsland_20,Belgie_18,Noorwegen_22,VerenigdKoninkrijk_21,Denemarken_19`
