iRail

App · 6 actions

Get live Belgian railway (SNCB/NMBS) information from iRail: departure and arrival boards, journey planning between stations, a train's stops and delays, its carriages, and current disruptions. No account or API key is required.

Actions

ActionWhat it does
Find stationsLook up stations by name in any of their official spellings, with each one's id, local name and coordinates.
Find train connectionsPlan a train journey between two stations: departure and arrival times, live delays, platforms, how long it takes, how many changes, and every train to take, with any service alerts.
Get disruptions and planned worksList the current disruptions and planned works on the Belgian railways, newest first, with a link to each notice.
Get live departures or arrivalsRead a Belgian station's live departure or arrival board: each train's time, destination or origin, platform, delay in minutes and whether it is cancelled or its platform changed.
Get train compositionSee how today's run of a train is made up: how many carriages, first- and second-class seats, and which carriages have toilets, bike space or wheelchair space, for each part of its route.
Get train statusFollow one train: its current delay, whether it is cancelled, where it is, and every stop with times, delays and platforms.

Find stations

Look up stations by name in any of their official spellings, with each one's id, local name and coordinates. Leave the name empty to list every station.

Inputs

Namequerytext
All or part of the station's name, for example Gent, Bruxelles or Luik. Case and accents don't matter.
Number of stationslimitnumber
How many stations to return, best match first. Defaults to 25.From 1 to 1000. Default: 25.
Languagelangtext
The language for station names and messages.One of: en (English), nl (Nederlands), fr (Français), de (Deutsch). Default: en.

Outputs

match_countnumber
querytext
station_countnumber
stationslist
Example output
{
  "match_count": 1,
  "query": "Gent",
  "station_count": 1,
  "stations": [
    {
      "latitude": 51.035896,
      "link": "https://irail.be/stations/NMBS/008892007",
      "local_name": "Gent-Sint-Pieters",
      "longitude": 3.710675,
      "name": "Ghent-Sint-Pieters",
      "station_id": "BE.NMBS.008892007"
    }
  ]
}

Find train connections

Plan a train journey between two stations: departure and arrival times, live delays, platforms, how long it takes, how many changes, and every train to take, with any service alerts.

Inputs

From stationfrom_stationtextRequired
Where the trip starts.
To stationto_stationtextRequired
Where the trip ends.
Datedatedate
The day, in Belgian time. Leave empty for today.
Timetimetime
The time of day in Belgian time, for example 08:12. Leave empty for now.
Time istime_istext
Whether the time is when you leave or when you must arrive.One of: departure (Leave at this time), arrival (Arrive by this time). Default: departure.
Trains to includetransporttext
Which kinds of trains the planner may use.One of: automatic (Best for the trip (domestic trains within Belgium)), trains (All trains, including international ones), nointernationaltrains (No international trains), all (All transport types). Default: automatic.
Number of connectionslimitnumber
How many connections to return, earliest first. Defaults to 6.From 1 to 12. Default: 6.
Languagelangtext
The language for station names and messages.One of: en (English), nl (Nederlands), fr (Français), de (Deutsch). Default: en.

Outputs

connection_countnumber
connectionslist
from_stationtext
from_station_idtext
to_stationtext
to_station_idtext
Example output
{
  "connection_count": 1,
  "connections": [
    {
      "alerts": [],
      "arrival_delay_minutes": 2,
      "arrival_platform": "1",
      "arrival_platform_changed": false,
      "cancelled": false,
      "delayed": true,
      "departure_delay_minutes": 0,
      "departure_platform": "11",
      "departure_platform_changed": false,
      "duration_minutes": 36,
      "expected_arrival_at": "2026-10-16T08:50:00+02:00",
      "expected_arrival_time": "08:50",
      "expected_departure_at": "2026-10-16T08:12:00+02:00",
      "expected_departure_time": "08:12",
      "from_station": "Ghent-Sint-Pieters",
      "from_station_id": "BE.NMBS.008892007",
      "legs": [
        {
          "arrival_delay_minutes": 2,
          "arrival_platform": "1",
          "arrival_platform_changed": false,
          "cancelled": false,
          "departure_delay_minutes": 0,
          "departure_platform": "11",
          "departure_platform_changed": false,
          "direction": "Hasselt",
          "expected_arrival_at": "2026-10-16T08:50:00+02:00",
          "expected_arrival_time": "08:50",
          "expected_departure_at": "2026-10-16T08:12:00+02:00",
          "expected_departure_time": "08:12",
          "from_station": "Ghent-Sint-Pieters",
          "from_station_id": "BE.NMBS.008892007",
          "intermediate_stop_count": 1,
          "occupancy": "low",
          "scheduled_arrival_at": "2026-10-16T08:48:00+02:00",
          "scheduled_arrival_time": "08:48",
          "scheduled_departure_at": "2026-10-16T08:12:00+02:00",
          "scheduled_departure_time": "08:12",
          "to_station": "Brussels-Central",
          "to_station_id": "BE.NMBS.008813003",
          "train": "IC 1519",
          "train_id": "IC1519",
          "train_number": "1519",
          "train_type": "IC",
          "walking": false
        }
      ],
      "remarks": [],
      "scheduled_arrival_at": "2026-10-16T08:48:00+02:00",
      "scheduled_arrival_time": "08:48",
      "scheduled_departure_at": "2026-10-16T08:12:00+02:00",
      "scheduled_departure_time": "08:12",
      "to_station": "Brussels-Central",
      "to_station_id": "BE.NMBS.008813003",
      "trains": [
        "IC 1519"
      ],
      "transfers": 0
    }
  ],
  "from_station": "Ghent-Sint-Pieters",
  "from_station_id": "BE.NMBS.008892007",
  "to_station": "Brussels-Central",
  "to_station_id": "BE.NMBS.008813003"
}

Get disruptions and planned works

List the current disruptions and planned works on the Belgian railways, newest first, with a link to each notice. Narrow it to unplanned disruptions or to notices mentioning a station or line.

Inputs

Shownotice_typetext
Which notices to list.One of: all (Everything), disruptions (Unplanned disruptions), planned_works (Planned works). Default: all.
Only those mentioningmentioningtext
Only list notices whose title or text mentions this, for example a station such as Leuven. Leave empty for all.
Number of noticeslimitnumber
How many notices to return, newest first. Defaults to 50.From 1 to 200. Default: 50.
Languagelangtext
The language for station names and messages.One of: en (English), nl (Nederlands), fr (Français), de (Deutsch). Default: en.

Outputs

disruption_countnumber
disruptionslist
match_countnumber
planned_countnumber
unplanned_countnumber
Example output
{
  "disruption_count": 1,
  "disruptions": [
    {
      "description": "Delays are possible.\nWe are awaiting information by a technical team.\n\nCause: failure of the signaling device in Tilly.",
      "link": "http://www.belgianrail.be/jp/nmbs-realtime/help.exe/en?tpl=showmap_external&tplParamHimMsgInfoGroup=trouble&messageID=114299",
      "published_at": "2026-10-15T19:26:52+02:00",
      "title": "Ottignies - Charleroi-Central: Delays",
      "type": "disruption"
    }
  ],
  "match_count": 1,
  "planned_count": 0,
  "unplanned_count": 1
}

Get live departures or arrivals

Read a Belgian station's live departure or arrival board: each train's time, destination or origin, platform, delay in minutes and whether it is cancelled or its platform changed. Pick a date and time to look ahead.

Inputs

StationstationtextRequired
The station to read the board of.
Showboardtext
Trains leaving the station, or trains arriving there.One of: departures, arrivals. Default: departures.
Datedatedate
The day, in Belgian time. Leave empty for today.
Timetimetime
The time of day in Belgian time, for example 08:12. Leave empty for now.
Number of trainslimitnumber
How many trains to return, soonest first. Defaults to 20.From 1 to 100. Default: 20.
Languagelangtext
The language for station names and messages.One of: en (English), nl (Nederlands), fr (Français), de (Deutsch). Default: en.

Outputs

boardtext
cancelled_countnumber
delayed_countnumber
stationtext
station_idtext
train_countnumber
trainslist
Example output
{
  "board": "departures",
  "cancelled_count": 0,
  "delayed_count": 1,
  "station": "Ghent-Sint-Pieters",
  "station_id": "BE.NMBS.008892007",
  "train_count": 1,
  "trains": [
    {
      "arrived": null,
      "cancelled": false,
      "delay_minutes": 3,
      "delayed": true,
      "departed": false,
      "destination": "Antwerp-Central",
      "destination_id": "BE.NMBS.008821006",
      "expected_at": "2026-10-16T08:15:00+02:00",
      "expected_time": "08:15",
      "extra_train": false,
      "occupancy": "medium",
      "origin": null,
      "origin_id": null,
      "platform": "5",
      "platform_changed": false,
      "scheduled_at": "2026-10-16T08:12:00+02:00",
      "scheduled_time": "08:12",
      "train": "IC 3041",
      "train_id": "IC3041",
      "train_number": "3041",
      "train_type": "IC"
    }
  ]
}

Get train composition

See how today's run of a train is made up: how many carriages, first- and second-class seats, and which carriages have toilets, bike space or wheelchair space, for each part of its route.

Inputs

TraintraintextRequired
The train number as the departure board shows it, for example IC 1519. Spaces and lower case are fine, and the train_id from another iRail step works too.

Outputs

carriage_countnumber
first_class_seatsnumber
has_bike_sectiontrue/false
has_toiletstrue/false
has_wheelchair_sectiontrue/false
length_metersnumber
second_class_seatsnumber
segment_countnumber
segmentslist
train_idtext
Example output
{
  "carriage_count": 1,
  "first_class_seats": 0,
  "has_bike_section": true,
  "has_toilets": false,
  "has_wheelchair_section": false,
  "length_meters": 27.0,
  "second_class_seats": 110,
  "segment_count": 1,
  "segments": [
    {
      "carriage_count": 1,
      "carriages": [
        {
          "air_conditioning": true,
          "bike_section": true,
          "first_class_seats": 0,
          "heating": true,
          "length_meters": 27.0,
          "model": "M7",
          "number": "75077",
          "position": 1,
          "power_outlets": true,
          "priority_seats": false,
          "second_class_seats": 110,
          "standing_places": 0,
          "toilets": false,
          "type": "M7BXH",
          "wheelchair_section": false
        }
      ],
      "first_class_seats": 0,
      "from_station": "Blankenberge",
      "from_station_id": "BE.NMBS.008891405",
      "has_bike_section": true,
      "has_toilets": false,
      "has_wheelchair_section": false,
      "length_meters": 27.0,
      "second_class_seats": 110,
      "to_station": "Hasselt",
      "to_station_id": "BE.NMBS.008831005"
    }
  ],
  "train_id": "IC1519"
}

Get train status

Follow one train: its current delay, whether it is cancelled, where it is, and every stop with times, delays and platforms. Pick your station to get that stop on its own, for example to be told when your 8:12 is late.

Inputs

TraintraintextRequired
The train number as the departure board shows it, for example IC 1519. Spaces and lower case are fine, and the train_id from another iRail step works too.
Datedatedate
The day the train runs, in Belgian time. Leave empty for today.
Your stationstationtext
Optional. A station the train stops at; its stop is returned as 'stop'.
Languagelangtext
The language for station names and messages.One of: en (English), nl (Nederlands), fr (Français), de (Deutsch). Default: en.

Outputs

cancelledtrue/false
datetext
delay_minutesnumber
destinationtext
finishedtrue/false
last_stationtext
latitudenumber
longitudenumber
next_stoptext
origintext
partly_cancelledtrue/false
stopobject
stop_countnumber
stopslist
traintext
train_idtext
train_numbertext
train_typetext
Example output
{
  "cancelled": false,
  "date": "2026-10-16",
  "delay_minutes": 3,
  "destination": "Hasselt",
  "finished": false,
  "last_station": "Bruges",
  "latitude": 51.197226,
  "longitude": 3.216726,
  "next_stop": "Ghent-Sint-Pieters",
  "origin": "Blankenberge",
  "partly_cancelled": false,
  "stop": {
    "arrival_cancelled": false,
    "arrival_delay_minutes": 3,
    "arrived": false,
    "cancelled": false,
    "departed": false,
    "departure_cancelled": false,
    "departure_delay_minutes": 3,
    "expected_arrival_at": "2026-10-16T08:13:00+02:00",
    "expected_arrival_time": "08:13",
    "expected_departure_at": "2026-10-16T08:15:00+02:00",
    "expected_departure_time": "08:15",
    "extra_stop": false,
    "occupancy": "low",
    "platform": "11",
    "platform_changed": false,
    "scheduled_arrival_at": "2026-10-16T08:10:00+02:00",
    "scheduled_arrival_time": "08:10",
    "scheduled_departure_at": "2026-10-16T08:12:00+02:00",
    "scheduled_departure_time": "08:12",
    "station": "Ghent-Sint-Pieters",
    "station_id": "BE.NMBS.008892007"
  },
  "stop_count": 1,
  "stops": [
    {
      "arrival_cancelled": false,
      "arrival_delay_minutes": 3,
      "arrived": false,
      "cancelled": false,
      "departed": false,
      "departure_cancelled": false,
      "departure_delay_minutes": 3,
      "expected_arrival_at": "2026-10-16T08:13:00+02:00",
      "expected_arrival_time": "08:13",
      "expected_departure_at": "2026-10-16T08:15:00+02:00",
      "expected_departure_time": "08:15",
      "extra_stop": false,
      "occupancy": "low",
      "platform": "11",
      "platform_changed": false,
      "scheduled_arrival_at": "2026-10-16T08:10:00+02:00",
      "scheduled_arrival_time": "08:10",
      "scheduled_departure_at": "2026-10-16T08:12:00+02:00",
      "scheduled_departure_time": "08:12",
      "station": "Ghent-Sint-Pieters",
      "station_id": "BE.NMBS.008892007"
    }
  ],
  "train": "IC 1519",
  "train_id": "IC1519",
  "train_number": "1519",
  "train_type": "IC"
}

On this page