✓ Verified 💻 Development ✓ Enhanced Data

Irail

Query Belgian railway (NMBS/SNCB) schedules via the irail CLI.

Rating
4 (84 reviews)
Downloads
18,985 downloads
Version
1.0.0

Overview

Query Belgian railway (NMBS/SNCB) schedules via the irail CLI.

Complete Documentation

View Source →

irail-cli

CLI for Belgian railways (NMBS/SNCB) via iRail API. No authentication required.

Quick Start

bash
# Station departures
irail liveboard Brugge

# Find connections
irail connections Brugge Leuven

# Check disruptions
irail disturbances

Authentication

None required. iRail API is public and free to use.

Core Rules

  • Always use --json when parsing output programmatically
  • Station names are flexible - accepts partial matches, quotes for multi-word
  • Time format - HH:MM (24-hour), date format YYYY-MM-DD
  • Language options - nl, fr, en, de (default: nl)

Output Formats

FlagFormatUse case
(default)TableUser-facing with colors
--jsonJSONAgent parsing, scripting
Colors indicate: red = delays, yellow = platform changes.

Workflows

Liveboard (Departures/Arrivals)

bash
# Departures from station
irail liveboard Brugge
irail liveboard "Brussel-Centraal"

# Arrivals instead of departures
irail liveboard Brugge --arrivals

# Specific date/time
irail liveboard Brugge --time 09:00 --date 2025-02-15

# JSON for scripting
irail liveboard Brugge --json

# Different language
irail liveboard Brugge --lang en

Connections (Route Planning)

bash
# Find routes
irail connections Brugge Leuven

# Specific departure time
irail connections Brugge Leuven --time 09:00

# Arrive by time (instead of depart at)
irail connections Brugge Leuven --time 14:00 --arrive-by

# More results
irail connections Brugge Leuven --results 10

# JSON for parsing
irail connections Brugge Leuven --json

Stations

bash
# List all stations
irail stations

# Search stations
irail stations --search bruss
irail stations --search gent

# JSON for scripting
irail stations --json

Vehicle (Train Info)

bash
# Show train information
irail vehicle IC1832

# Include all stops
irail vehicle IC1832 --stops

# JSON output
irail vehicle IC1832 --json

Composition (Train Cars)

bash
# Show train composition (seats, amenities)
irail composition S51507
irail composition IC1832

# JSON for parsing
irail composition S51507 --json

Disturbances

bash
# All current disruptions
irail disturbances

# Only planned works
irail disturbances --type planned

# Only unplanned disruptions
irail disturbances --type disturbance

# JSON for scripting
irail disturbances --json

Scripting Examples

bash
# Get next train to destination
irail connections Brugge Leuven --json | jq -r '.[0].departure'

# Find station ID
irail stations --search "brussel" --json | jq -r '.[0].id'

# Check if delays exist on liveboard
irail liveboard Brugge --json | jq '[.[] | select(.delay > 0)] | length'

# Get platform for next departure
irail liveboard Brugge --json | jq -r '.[0].platform'

# List all disruptions
irail disturbances --json | jq -r '.[].title'

Environment Variables

VariableDescription
IRAIL_LANGDefault language (nl, fr, en, de)
IRAIL_JSONDefault to JSON output
NO_COLORDisable colored output

Language Options

CodeLanguage
nlDutch (default)
frFrench
enEnglish
deGerman
bash
irail liveboard Brugge --lang fr
irail connections Brugge Leuven --lang en

Command Reference

CommandDescription
liveboardStation departures/arrivals
connectionsRoute planning between stations
stationsList/search stations
vehicleTrain information and stops
compositionTrain car composition
disturbancesService disruptions
completionShell completions

Common Patterns

Check if train is delayed

bash
irail vehicle IC1832 --json | jq '.delay // 0'

Get connection with transfers

bash
irail connections Brugge Leuven --json | jq '.[0].vias | length'

Find direct trains only

bash
irail connections Brugge Leuven --json | jq '[.[] | select(.vias == null or (.vias | length) == 0)]'

Guidelines

  • No authentication needed - API is public
  • Be mindful of API usage in loops - add delays between requests
  • Station names are case-insensitive and support partial matching
  • Delay values are in seconds (divide by 60 for minutes)

Installation

bash
brew install dedene/tap/irail

Installation

Terminal bash

openclaw install irail
    
Copied!

💻Code Examples

irail disturbances

irail-disturbances.txt
## Authentication

**None required.** iRail API is public and free to use.

## Core Rules

1. **Always use `--json`** when parsing output programmatically
2. **Station names are flexible** - accepts partial matches, quotes for multi-word
3. **Time format** - HH:MM (24-hour), date format YYYY-MM-DD
4. **Language options** - nl, fr, en, de (default: nl)

## Output Formats

| Flag | Format | Use case |
|------|--------|----------|
| (default) | Table | User-facing with colors |
| `--json` | JSON | Agent parsing, scripting |

Colors indicate: red = delays, yellow = platform changes.

## Workflows

### Liveboard (Departures/Arrivals)

irail disturbances --json | jq -r '.[].title'

irail-disturbances---json--jq--r-title.txt
## Environment Variables

| Variable | Description |
|----------|-------------|
| `IRAIL_LANG` | Default language (nl, fr, en, de) |
| `IRAIL_JSON` | Default to JSON output |
| `NO_COLOR` | Disable colored output |

## Language Options

| Code | Language |
|------|----------|
| `nl` | Dutch (default) |
| `fr` | French |
| `en` | English |
| `de` | German |

irail connections Brugge Leuven --lang en

irail-connections-brugge-leuven---lang-en.txt
## Command Reference

| Command | Description |
|---------|-------------|
| `liveboard` | Station departures/arrivals |
| `connections` | Route planning between stations |
| `stations` | List/search stations |
| `vehicle` | Train information and stops |
| `composition` | Train car composition |
| `disturbances` | Service disruptions |
| `completion` | Shell completions |

## Common Patterns

### Check if train is delayed

irail connections Brugge Leuven --json | jq '[.[] | select(.vias == null or (.vias | length) == 0)]'

irail-connections-brugge-leuven---json--jq---selectvias--null-or-vias--length--0.txt
## Guidelines

- No authentication needed - API is public
- Be mindful of API usage in loops - add delays between requests
- Station names are case-insensitive and support partial matching
- Delay values are in seconds (divide by 60 for minutes)


## Installation
example.sh
# Station departures
irail liveboard Brugge

# Find connections
irail connections Brugge Leuven

# Check disruptions
irail disturbances
example.sh
# Departures from station
irail liveboard Brugge
irail liveboard "Brussel-Centraal"

# Arrivals instead of departures
irail liveboard Brugge --arrivals

# Specific date/time
irail liveboard Brugge --time 09:00 --date 2025-02-15

# JSON for scripting
irail liveboard Brugge --json

# Different language
irail liveboard Brugge --lang en
example.sh
# Find routes
irail connections Brugge Leuven

# Specific departure time
irail connections Brugge Leuven --time 09:00

# Arrive by time (instead of depart at)
irail connections Brugge Leuven --time 14:00 --arrive-by

# More results
irail connections Brugge Leuven --results 10

# JSON for parsing
irail connections Brugge Leuven --json
example.sh
# List all stations
irail stations

# Search stations
irail stations --search bruss
irail stations --search gent

# JSON for scripting
irail stations --json
example.sh
# Show train information
irail vehicle IC1832

# Include all stops
irail vehicle IC1832 --stops

# JSON output
irail vehicle IC1832 --json
example.sh
# Show train composition (seats, amenities)
irail composition S51507
irail composition IC1832

# JSON for parsing
irail composition S51507 --json

Tags

#devops_and-cloud #cli

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author dedene
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install irail