TransportationDocumentedScanned

uk-trains

UK National Rail departures, arrivals, delays, platforms.

Share:

Installation

npx clawhub@latest install uk-trains

View the full skill documentation and source below.

Documentation

UK Trains

Query National Rail Darwin API for live train departures and arrivals.

Setup

Requires free Darwin API token:

  • Register at

  • Set NATIONAL_RAIL_TOKEN in 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 Paddington

    • EUS = London Euston

    • KGX = London Kings Cross

    • VIC = London Victoria

    • WAT = London Waterloo

    • MAN = Manchester Piccadilly

    • BHM = Birmingham New Street

    • EDB = Edinburgh Waverley

    • GLC = Glasgow Central

    • BRI = Bristol Temple Meads

    • LDS = Leeds

    • LIV = Liverpool Lime Street

    • RDG = Reading

    • OXF = Oxford

    • CBG = Cambridge


    Response Format

    JSON with:

    • locationName, crs - Station info

    • messages[] - Service alerts

    • trainServices[] - List of trains:

    - std/sta - Scheduled departure/arrival time
    - etd/eta - Expected time ("On time", "Delayed", or actual time)
    - platform - Platform number
    - operator - Train operating company
    - destination[].name - Final destination
    - isCancelled, 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 IDs
  • arrivals {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)