Logistics

NS Rail Disruptions

NS disruptions API — current train disruptions and maintenance per station. Dutch train delays API via the NS Open Data API, cached for 5 minutes.

GET /v1/logistics/transit-disruptions

Returns active NS rail disruptions and planned maintenance notices for a given station code, sourced from the NS Open Data API.

Request parameters

ParameterTypeRequiredDescription
station_codestringNS station code, e.g. ASD, UT, RTD, LLD

Common station codes

CodeStation
ASDAmsterdam Centraal
UTUtrecht Centraal
RTDRotterdam Centraal
LLDDen Haag Centraal
EHVEindhoven
AHArnhem Centraal
ZLZwolle
GDGouda

Example request

curl -H "X-API-Key: YOUR_KEY" \
  "https://api.omnizoek.nl/v1/logistics/transit-disruptions?station_code=ASD"

Example response — no disruptions

{
  "station_code": "ASD",
  "disruptions": [],
  "retrieved_at": "2026-03-06T14:00:00Z"
}

Example response — active disruption

{
  "station_code": "ASD",
  "disruptions": [
    {
      "type": "maintenance",
      "title": "Werkzaamheden Amsterdam CS – Utrecht",
      "cause": "Railvervanging",
      "start": "2026-03-07T22:00:00+01:00",
      "end": "2026-03-08T06:00:00+01:00",
      "impact": "Rijdt niet: IC Amsterdam – Utrecht. Neem de sprinter via Duivendrecht."
    }
  ],
  "retrieved_at": "2026-03-06T14:00:00Z"
}

Response fields

FieldTypeDescription
station_codestringStation code as provided (uppercased)
disruptionsarrayList of active disruptions and maintenance notices
retrieved_atstringUTC timestamp of the NS API query (ISO 8601)

Disruption item fields

FieldTypeDescription
type"disruption" | "maintenance"Type of notice
titlestringShort title of the disruption
causestring | nullCause description (e.g. "Sein storing", "Railvervanging")
startstring | nullStart time (ISO 8601)
endstring | nullExpected end time (ISO 8601)
impactstring | nullTraveller advice or affected route

Error responses

StatusCause
404Station code not found in NS
503NS API is unreachable or NS_API_KEY is not configured

Caching

Disruptions are cached per station code for 5 minutes. This balances freshness (disruptions can appear and resolve quickly) with avoiding rate-limit issues on the NS API.

Notes

  • NS uses Dutch type names (storing, werkzaamheid); the API maps these to disruption and maintenance for consistent English output.
  • The impact field contains NS traveller advice — typically a detour suggestion. It is populated only when NS has issued formal advice for a disruption phase.

On this page