gaspeil.nl
Voor ontwikkelaars

Gaspeil API

Twee publieke endpoints. Het eerste beantwoordt één vraag: hoeveel dagen nog totdat Nederland zonder gas zit, als de trends van recente jaren zich herhalen? Het tweede geeft elke gevolgde LNG-aankomst uit de LNG Radar, met per record of de lading geschat, gemeten of bevestigd is. Gratis, geen API-key. Voor de actuele scheepsdata per haven is er een API met sleutel, ook gratis.

GEThttps://www.gaspeil.nl/api/v1/dagen-tot-leeg

Geen request body. Geen authenticatie. CORS staat open. Response is JSON, cached voor 1 uur op de edge.

Voorbeeld-aanroep

curl https://www.gaspeil.nl/api/v1/dagen-tot-leeg

Voorbeeld-response

{
  "ok": true,
  "asOf": "2026-05-19",
  "daysUntilEmpty": 187,
  "emptyDate": "2026-11-22",
  "currentFullPct": 12.91,
  "currentGasInStorageTwh": 17.4,
  "method": "historical-replay",
  "basedOnYears": [2023, 2024, 2025],
  "scenarios": {
    "earliest": {
      "basedOnYear": 2025,
      "emptyDate": "2026-11-08",
      "daysUntilEmpty": 173
    },
    "central": {
      "emptyDate": "2026-11-22",
      "daysUntilEmpty": 187
    },
    "latest": {
      "basedOnYear": 2024,
      "emptyDate": "2026-12-04",
      "daysUntilEmpty": 199
    }
  },
  "source": "https://www.gaspeil.nl",
  "documentation": "https://www.gaspeil.nl/api-docs",
  "license": "CC BY 4.0"
}

Velden

asOfISO date (YYYY-MM-DD)

Laatste gas-dag waarvan AGSI+ data beschikbaar was bij het bouwen van de prognose.

daysUntilEmptyinteger | null

Kalenderdagen vanaf asOf tot waarop de centrale prognose de gas-in-storage op 0 plaatst. null als opslag binnen de 3-jaars horizon niet leeg raakt.

emptyDateISO date | null

De datum waarop de centrale prognose voorspelt dat opslag leeg is. null wanneer geen leegloop wordt voorspeld.

currentFullPctnumber

Procentuele vulgraad van de Nederlandse gasopslagen op asOf, op 2 decimalen.

currentGasInStorageTwhnumber

Absolute hoeveelheid gas in opslag (TWh) op asOf.

methodstring

Welk forecastmodel is gebruikt. Momenteel altijd "historical-replay": neemt per kalenderdag de gemiddelde netto opslag-flow uit de drie meest recente jaren en past dat toe vanaf vandaag.

basedOnYearsinteger[]

De jaren waarover de centrale schatting is gemiddeld.

scenarios.earliestobject | null

Het historische jaar met het zwakste injectie-patroon, geeft de vroegste empty-date in de bandbreedte.

scenarios.centralobject

De centrale schatting (gemiddelde van basedOnYears).

scenarios.latestobject | null

Het historische jaar met het sterkste injectie-patroon, geeft de laatste empty-date in de bandbreedte.

Caching en limieten

De response wordt 1 uur gecached op de Vercel edge (Cache-Control: public, max-age=3600). De achterliggende data wordt één keer per dag rond 12:00 UTC ververst via een geautomatiseerde sync naar onze data-store.

Er is geen harde rate limit, maar respect graag de cache: als je vaker dan elk uur polling doet krijg je dezelfde JSON terug.

Foutafhandeling

Succes-responses zijn altijd HTTP 200 met "ok": true. Bij problemen krijg je 503 (data nog niet gevuld in de KV-store) of 500 (onverwacht), met "ok": false en een error-veld.

Methodologie

De prognose gebruikt een opslag-replay model: voor elk van de drie meest recente jaren wordt per kalenderdag de werkelijke netto-flow (injectie minus onttrekking) berekend, en dat patroon wordt vanaf de huidige voorraad doorgetrokken. De centrale schatting middelt over de drie jaren. De vroegste en laatste scenario's tonen de bandbreedte.

Wat het niet vangt: koude winter, beleidsingreep, LNG-spike, Noorse uitval. De cijfers zijn een indicatie van het ritme, geen voorspelling van de werkelijkheid. Zie de disclaimer voor de volledige aannames.

Licentie en attributie

De data wordt gepubliceerd onder Creative Commons CC BY 4.0. Gebruik vrij voor publicaties, dashboards, persberichten, hobby-projecten, scripts, alarmclocks. Vermeld als bron "Gaspeil.nl op basis van GIE AGSI+" en link waar mogelijk terug naar gaspeil.nl.

De onderliggende bronnen (GIE AGSI+, NED.nl) hebben hun eigen voorwaarden, die zijn van toepassing op afgeleide werken die hun ruwe data publiceren.

Voorbeelden in code

JavaScript / Node:

const r = await fetch("https://www.gaspeil.nl/api/v1/dagen-tot-leeg");
const data = await r.json();
console.log(`Nog ${data.daysUntilEmpty} dagen tot ${data.emptyDate}`);

Python:

import requests
r = requests.get("https://www.gaspeil.nl/api/v1/dagen-tot-leeg").json()
print(f"Nog {r['daysUntilEmpty']} dagen tot {r['emptyDate']}")

Shell + jq:

curl -s https://www.gaspeil.nl/api/v1/dagen-tot-leeg \
  | jq '{days: .daysUntilEmpty, when: .emptyDate}'

Tweede endpoint: LNG-lossingen

GEThttps://www.gaspeil.nl/api/v1/lng/lossingen

Alle LNG-tankers die sinds september 2026 bij Gate (Rotterdam) of EemsEnergy (Eemshaven) zijn aangekomen, nieuwste eerst. JSON of CSV, geen authenticatie, CORS open, 5 minuten gecached.

Elk record draagt een status in drie trappen, zodat je weet hoe hard het getal is:

geschatstatus

Aangekomen volgens de havenlijst van Rotterdam of AIS. De lading is een schatting op scheepslengte (of op eerdere gemeten ladingen van hetzelfde schip).

gemetenstatus

Gelost: de sprong in de tankvoorraad van de terminal (GIE ALSI+) is aan dit schip gekoppeld. Verschijnt een dag na aankomst. measuredGwh en measuredGasDay zijn dan gevuld.

bevestigdstatus

De Amerikaanse exportlijst van het ministerie van Energie (DOE) noemt deze lading: vertrekdatum, exportterminal en geladen volume. Komt ongeveer twee maanden na vertrek. Alleen voor Amerikaans LNG.

Parameters (allemaal optioneel):

formatjson | csv

Standaard JSON. Met format=csv krijg je een CSV met kopregel, komma als scheidingsteken, één regel per aankomst.

terminalgate | eems

Alleen aankomsten bij die terminal.

from, toISO date (YYYY-MM-DD)

Aankomstdatum vanaf en tot en met.

Voorbeeld-response (ingekort):

{
  "ok": true,
  "generatedAt": "2026-09-11T14:00:00.000Z",
  "count": 23,
  "filters": { "terminal": null, "from": null, "to": null },
  "statuses": { "geschat": "...", "gemeten": "...", "bevestigd": "..." },
  "lossingen": [
    {
      "key": "9876543|2026-09-10",
      "ship": "VOORBEELD SHIP",
      "imo": "9876543",
      "terminal": "gate",
      "arrivedAt": "2026-09-10T04:20:00.000Z",
      "status": "gemeten",
      "cargoGwh": 990,
      "estimatedGwh": 1015,
      "measuredGwh": 990,
      "measuredGasDay": "2026-09-10",
      "origin": { "label": "Verenigde Staten", "iso": "US", "likely": false, "basis": "AIS-spoor begint bij Sabine Pass" },
      "doe": null,
      "co2T": 3575,
      "ttfEurMwh": 34.57,
      "valueEur": 34224000,
      "recordedAt": "2026-09-10T05:00:00.000Z"
    }
  ],
  "source": "https://www.gaspeil.nl/radar",
  "documentation": "https://www.gaspeil.nl/api-docs",
  "license": "CC BY 4.0"
}
cargoGwhinteger

Beste beschikbare lading in GWh: de gemeten waarde als die er is, anders de schatting. estimatedGwh is altijd de oorspronkelijke schatting.

originobject | null

Waar de lading is geladen, met de basis van die afleiding (AIS-spoor, positie bij een exportterminal, rederij of DOE-historie). likely=true betekent: vermoeden, geen waarneming.

doeobject | null

Koppeling aan de DOE-exportlijst: departedAt, terminal, loadedGwh. Alleen bij status bevestigd.

co2Tinteger

Geschatte CO2 van de overtocht in ton (alleen brandstof van het schip, geen vloeibaar maken of terugreis).

ttfEurMwh, valueEurnumber | null

TTF-prijs op de dag van aankomst en de lading maal die prijs. Indicatief; null als de prijs toen niet beschikbaar was.

Shell:

curl -s "https://www.gaspeil.nl/api/v1/lng/lossingen?format=csv&terminal=gate" -o gate.csv

Dezelfde export staat als downloadknop in het herkomstpaneel van de radar. Vermeld als bron "Gaspeil.nl op basis van Havenbedrijf Rotterdam, AIS, GIE ALSI+ en DOE". Hoe de getallen tot stand komen staat op /radar/uitleg.

Scheepsdata met een sleutel

Drie endpoints geven de actuele stand van de LNG Radar: welke tankers in Gate en Eemshaven liggen, welke zijn aangemeld en wat de komende dagen binnenkomt, met per schip de verwachte lading, vulling, herkomst, positie en aankomsttijd. Alles wat de radar toont, behalve de waarde van de lading.

Hiervoor heb je een gratis sleutel nodig. Log in met je e-mailadres (je krijgt een link en een code, geen wachtwoord) en maak een sleutel aan. Stuur hem mee in de header:

curl https://www.gaspeil.nl/api/v1/lng/havens \
  -H "Authorization: Bearer gp_live_..."

X-API-Key: gp_live_... werkt ook. Een sleutel in de URL accepteren we niet: die belandt in logs.

GET /api/v1/lng/havens

Drie lijsten in één antwoord: inDeHaven (aan de steiger of in de haven), aangemeld (in de havenlijst van Rotterdam of Eemshaven, elke aankomsttijd) en verwacht (alles wat binnen het venster aankomt, ook schepen die alleen via AIS Nederland als bestemming opgeven). Parameters: terminal=gate|eems en dagen=1..30 (standaard 14).

{
  "ok": true,
  "dataStand": "2026-09-23T10:20:00.000Z",
  "samenvatting": { "inDeHaven": 3, "aangemeld": 5, "verwachtBinnenVenster": 9, "verwachteLadingBinnenVensterGwh": 8444 },
  "verwacht": [
    {
      "naam": "ENERGY ATLANTIC", "imo": "9649328", "mmsi": "256647000", "vlag": "MT",
      "lengteM": 290, "capaciteitM3": 174000, "terminal": "eems",
      "status": "aanloop", "statusOmschrijving": "komt binnen 24 uur aan", "bron": "havenlijst",
      "verwachteAankomst": "2026-09-23T22:00:00.000Z", "urenTotAankomst": 11.7,
      "lading": { "verwachtGwh": 963, "vulling": 1, "vullingOmschrijving": "vol", "basis": "..." },
      "herkomst": { "land": "Verenigde Staten", "iso": "US", "vermoeden": true, "basis": "..." },
      "positie": { "lat": 53.95, "lon": 5.79, "bron": "ais", "snelheidKn": 11.3, "bestemmingAis": "NLEEM" },
      "links": { "radar": "https://www.gaspeil.nl/radar?ship=9649328" }
    }
  ],
  "inDeHaven": [ ... ],
  "aangemeld": [ ... ],
  "bronnenMetStoring": []
}

GET /api/v1/lng/aanvoer

De aanvoer in cijfers: gelost in de afgelopen 14 dagen (gemeten in de tanks), verwacht in de komende 14 dagen (aangemeld plus statistisch), de uitstroom, de tankstand per terminal, de verwachting per gasdag en de CO2 van de aangekomen schepen. Energie in GWh.

GET /api/v1/lng/schepen/{imo}

Eén schip op IMO-nummer: de huidige stand (als het in beeld is), het logboek (aanmeldingen, lossingen, satelliet-havenbezoeken) en elke lossing in Nederland met geschatte, gemeten en bevestigde lading. Onbekend schip: 404.

GET /api/v1/gebruik

Je eigen verbruik: aanroepen vandaag, per dag en per endpoint over de laatste 30 dagen.

Limieten en fouten

Gratis: 60 aanroepen per minuut en 1.000 per dag (UTC). Elk antwoord heeft X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset. Boven de limiet volgt 429 met Retry-After. Geen of een ingetrokken sleutel geeft 401. De data ververst elke twee minuten, dus vaker vragen levert niets nieuws op. Zie je in bronnenMetStoring een bron staan, dan draait die op de laatste goede stand.

Licentie CC BY 4.0: vermeld "Gaspeil.nl" als bron. We tellen per sleutel hoe vaak en welk endpoint je aanroept, om misbruik te zien en de API te verbeteren. Meer nodig dan het gratis plan? Laat het weten via gaspeil.nl/bug-melden.

Versiebeleid

Het pad bevat een version-prefix (/v1/). Bij een breaking change in de response-vorm krijgt het endpoint een nieuwe versie en blijft v1 minimaal 12 maanden bereikbaar. Niet-breaking toevoegingen (nieuwe velden) gebeuren binnen v1.

Vragen of problemen?

Meld het via gaspeil.nl/bug-melden. Of bouw iets leuks en stuur een link, we zijn benieuwd.

Laatst bijgewerkt: 19 oktober 2026