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
| Action | What it does |
|---|---|
| Find stations | Look up stations by name in any of their official spellings, with each one's id, local name and coordinates. |
| 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. |
| Get disruptions and planned works | List the current disruptions and planned works on the Belgian railways, newest first, with a link to each notice. |
| 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. |
| 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. |
| Get train status | Follow 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
- Name
querytext - All or part of the station's name, for example Gent, Bruxelles or Luik. Case and accents don't matter.
- Number of stations
limitnumber - How many stations to return, best match first. Defaults to 25.From 1 to 1000. Default:
25. - Language
langtext - The language for station names and messages.One of:
en(English),nl(Nederlands),fr(Français),de(Deutsch). Default:en.
Outputs
match_countnumberquerytextstation_countnumberstationslist
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 station
from_stationtextRequired - Where the trip starts.
- To station
to_stationtextRequired - Where the trip ends.
- Date
datedate - The day, in Belgian time. Leave empty for today.
- Time
timetime - The time of day in Belgian time, for example 08:12. Leave empty for now.
- Time is
time_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 include
transporttext - 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 connections
limitnumber - How many connections to return, earliest first. Defaults to 6.From 1 to 12. Default:
6. - Language
langtext - The language for station names and messages.One of:
en(English),nl(Nederlands),fr(Français),de(Deutsch). Default:en.
Outputs
connection_countnumberconnectionslistfrom_stationtextfrom_station_idtextto_stationtextto_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
- Show
notice_typetext - Which notices to list.One of:
all(Everything),disruptions(Unplanned disruptions),planned_works(Planned works). Default:all. - Only those mentioning
mentioningtext - Only list notices whose title or text mentions this, for example a station such as Leuven. Leave empty for all.
- Number of notices
limitnumber - How many notices to return, newest first. Defaults to 50.From 1 to 200. Default:
50. - Language
langtext - The language for station names and messages.One of:
en(English),nl(Nederlands),fr(Français),de(Deutsch). Default:en.
Outputs
disruption_countnumberdisruptionslistmatch_countnumberplanned_countnumberunplanned_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
- Station
stationtextRequired - The station to read the board of.
- Show
boardtext - Trains leaving the station, or trains arriving there.One of:
departures,arrivals. Default:departures. - Date
datedate - The day, in Belgian time. Leave empty for today.
- Time
timetime - The time of day in Belgian time, for example 08:12. Leave empty for now.
- Number of trains
limitnumber - How many trains to return, soonest first. Defaults to 20.From 1 to 100. Default:
20. - Language
langtext - The language for station names and messages.One of:
en(English),nl(Nederlands),fr(Français),de(Deutsch). Default:en.
Outputs
boardtextcancelled_countnumberdelayed_countnumberstationtextstation_idtexttrain_countnumbertrainslist
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
- Train
traintextRequired - 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_countnumberfirst_class_seatsnumberhas_bike_sectiontrue/falsehas_toiletstrue/falsehas_wheelchair_sectiontrue/falselength_metersnumbersecond_class_seatsnumbersegment_countnumbersegmentslisttrain_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
- Train
traintextRequired - 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.
- Date
datedate - The day the train runs, in Belgian time. Leave empty for today.
- Your station
stationtext - Optional. A station the train stops at; its stop is returned as 'stop'.
- Language
langtext - The language for station names and messages.One of:
en(English),nl(Nederlands),fr(Français),de(Deutsch). Default:en.
Outputs
cancelledtrue/falsedatetextdelay_minutesnumberdestinationtextfinishedtrue/falselast_stationtextlatitudenumberlongitudenumbernext_stoptextorigintextpartly_cancelledtrue/falsestopobjectstop_countnumberstopslisttraintexttrain_idtexttrain_numbertexttrain_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"
}