UK Trains
Query National Rail Darwin API for live train departures and arrivals.
Setup
Requires free Darwin API token:
- Register at https://realtime.nationalrail.co.uk/OpenLDBWSRegistration/
- Set
NATIONAL_RAIL_TOKENin environment (or configure in skills.entries.uk-trains.apiKey)
Commands
# Departures
./scripts/trains.py departures PAD
./scripts/trains.py departures PAD to OXF --rows 5
# Arrivals
./scripts/trains.py arrivals MAN
./scripts/trains.py arrivals MAN from EUS
# Station search
./scripts/trains.py search paddington
./scripts/trains.py search kings
Station Codes
Use 3-letter CRS codes:
PAD= London PaddingtonEUS= London EustonKGX= London Kings CrossVIC= London VictoriaWAT= London WaterlooMAN= Manchester PiccadillyBHM= Birmingham New StreetEDB= Edinburgh WaverleyGLC= Glasgow CentralBRI= Bristol Temple MeadsLDS= LeedsLIV= Liverpool Lime StreetRDG= ReadingOXF= OxfordCBG= Cambridge
Response Format
JSON with:
locationName,crs- Station infomessages[]- Service alertstrainServices[]- List of trains:std/sta- Scheduled departure/arrival timeetd/eta- Expected time ("On time", "Delayed", or actual time)platform- Platform numberoperator- Train operating companydestination[].name- Final destinationisCancelled,cancelReason,delayReason- Disruption info
Message Template
Use this compact format for WhatsApp/chat responses:
π {Origin} β {Destination}
*{dep} β {arr}* βπ{platform} β π {coaches}
{status}
*{dep} β {arr}* βπ{platform} β π {coaches}
{status}
Elements
- Header: π emoji + origin β destination
- Time: Bold, departure β arrival times
- Platform: π + number (or "TBC" if unknown)
- Coaches: π + space + number
- Status:
- β On time
- β οΈ Delayed (exp {time})
- β Cancelled β {reason}
- π Starts here
Example
π Hemel Hempstead β Euston
*20:18 β 20:55* βπ4 β π 4
β
On time
*20:55 β 21:30* βπ4 β π 12
β
On time
*21:11 β 21:41* βπ4 β π 8
β
On time
Getting Arrival Times
To show arrival times, make two API calls:
departures {origin} to {dest}β get departure times + service IDsarrivals {dest} from {origin}β get arrival times
Match services by the numeric prefix in serviceID (e.g., 4748110HEMLHMP_ matches 4748110EUSTON__).
Notes
- Separate each service with a blank line
- Omit coaches if formation data unavailable
- For delays, show expected time:
β οΈ Delayed (exp 20:35)