OrbTop

UK National Rail Scraper — Live Train Times, Boards & Delays

TRAVELBUSINESSDEVELOPER TOOLS

UK National Rail Scraper — Live Train Times, Delays & Departure Boards

Scrape live departure and arrival boards from nationalrail.co.uk by station CRS code. Returns real-time service data — operator, scheduled and actual times, delay in minutes, platform assignments, cancellation reasons, and crowding indicators — for any UK station in one run.

What does the UK National Rail Scraper do?

The scraper fetches each station's live departure or arrival board from National Rail and returns structured JSON. You supply a list of 3-letter CRS station codes and choose whether to pull departures or arrivals. Every UK train operating company is covered: LNER, GWR, Avanti West Coast, ScotRail, Southern, Thameslink, Transport for Wales, CrossCountry, Northern, the Elizabeth line, and more.

No browser rendering is required. The site embeds structured service data server-side, so the scraper is fast and runs without headless Chrome.

What data does it extract?

Each service record contains:

Field Description
station_name Name of the queried station
station_crs 3-letter CRS code of the queried station
board_type departures or arrivals
rid Run ID — unique service identifier
train_uid Timetable UID
operator Train operating company name (e.g. London North Eastern Railway)
operator_code 2-letter TOC code (GR, GW, SR, etc.)
origin_station / origin_crs Origin station name and CRS code
destination_station / destination_crs Destination name and CRS code
scheduled_departure Planned departure (ISO 8601)
estimated_departure Real-time estimated departure, null if unavailable
actual_departure Actual departure time, null if not yet departed
scheduled_arrival Planned arrival at destination (ISO 8601)
estimated_arrival Real-time estimated arrival
actual_arrival Actual arrival time
delay_minutes Delay in whole minutes (positive = late), null if no real-time data
platform Platform number or letter, null if not yet announced
status OnTime, Late, Cancelled, Arrived, or Departed
cancelled Boolean — true if service is cancelled
cancellation_reason Reason text when cancelled, null otherwise
stops_count Number of intermediate stops
service_category ExpressPassengerTrain or PassengerTrain
loading_level Crowding indicator: Unknown, Level1 (quiet), Level2 (busy), Level3 (very busy)
scraped_at ISO 8601 timestamp when this record was collected

Note on loading_level: National Rail publishes crowding as one of four categorical values (Unknown, Level1, Level2, Level3), not as a numeric percentage. Most services return Unknown.

How to use it

The actor requires at least one CRS station code. Every UK station has a 3-letter CRS code — here are the most commonly needed ones:

Station CRS
London King's Cross KGX
London Paddington PAD
London Euston EUS
London Victoria VIC
London Waterloo WAT
Manchester Piccadilly MAN
Birmingham New Street BHM
Edinburgh Waverley EDB
Glasgow Central GLC
Leeds LDS

The full list is published by National Rail. For less common stations, search <station name> CRS code — the 3-letter code appears on timetable PDFs and booking sites.

{
  "mode": "departure_board",
  "stations": ["KGX", "EDB", "MAN"],
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "countryCode": "GB"
  }
}
Field Type Default Description
mode string departure_board departure_board or arrival_board
stations array ["KGX", "EDB"] List of CRS codes — at least one required
maxItems integer 10 Maximum total records across all stations
proxyConfiguration object UK Residential UK residential proxy is required for reliable results

Use cases

  • Travel app developers — build live board displays, delay notifications, or real-time journey planners on National Rail data
  • Delay and performance research — track cancellation rates, delay patterns, and operator performance over time by running the scraper on a schedule
  • MaaS platforms — integrate UK rail into multi-modal journey planning
  • Operations and operations research — pull service-level data for train flow modelling or incident analysis
  • Journalists and analysts — extract operator-level delay and cancellation data for reporting on rail performance

FAQ

Does this scraper need proxies?

Yes. A UK residential proxy is required for reliable results from nationalrail.co.uk. The default proxy configuration (RESIDENTIAL, country GB) is pre-filled — leave it as-is unless testing at low volume.

Does this return historical timetable data?

No. The scraper returns the live board at the time of the run — the next services from each station. It does not cover historical schedules or full 24-hour timetables. For historical data, commercial feeds (Darwin, LDBWS) or the OpenTrainTimes API are the appropriate sources.

How much does a run cost?

Charged at $0.10 per run start plus $0.0015 per service record. A run fetching 20 records from two stations costs approximately $0.13.


Results are available for download as JSON, CSV, or Excel from the Apify dataset view.