SYSTEM all green source trainline.com queue 12,842 routes p99 latency 215ms dataflirt.com · scraper/trainline-com
RUN - 114 active pipelines - trainline.com live

Trainline data,
at warehouse scale.

We extract rail schedules, coach routes, dynamic pricing signals, station metadata, and journey durations from Trainline. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.

Fares extracted
3.2M /day
Route updates
845K /24h
Station records
48K /run
Active pipelines
114
Uptime
99.94%
Data Dictionary

Every field we extract from trainline.com

Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.

Complete list of extractable fields for Train Schedules objects from trainline.com. All fields typed and schema-versioned.

journey_idorigin_stationdestination_stationdeparture_timearrival_timeduration_minuteschangesoperatortrain_typeplatformstatus
train_schedules
● 200 OK
"journey_id": "TL-8492-LDN-MAN",
"origin_station": "London Euston",
"destination_station": "Manchester Piccadilly",
"departure_time": "2026-05-12T08:20:00Z",
"arrival_time": "2026-05-12T10:28:00Z",
"duration_minutes": 128,
"operator": "Avanti West Coast"
# journey_idorigin_stationdestination_stationdeparture_timearrival_timeduration_minutes
1
2
3

Complete list of extractable fields for Pricing & Fares objects from trainline.com. All fields typed and schema-versioned.

journey_idticket_classfare_typebase_pricecurrent_pricecurrencyadvance_ticketoff_peaksplitsave_availablesplitsave_savingsrailcard_applied
pricing_& fares
● 200 OK
"journey_id": "TL-8492-LDN-MAN",
"ticket_class": "Standard",
"fare_type": "Advance Single",
"base_price": 124.5,
"current_price": 42.0,
"currency": "GBP",
"splitsave_available": true,
"splitsave_savings": 14.5
# journey_idticket_classfare_typebase_pricecurrent_pricecurrency
1
2
3

Complete list of extractable fields for Coach Routes objects from trainline.com. All fields typed and schema-versioned.

route_idorigin_stopdestination_stopdeparture_timearrival_timeduration_minutesoperatorvehicle_typeamenitiespricecurrency
coach_routes
● 200 OK
"route_id": "NX-492-LDN-BRS",
"origin_stop": "London Victoria Coach Station",
"destination_stop": "Bristol Bus Station",
"departure_time": "2026-05-12T09:00:00Z",
"arrival_time": "2026-05-12T11:45:00Z",
"operator": "National Express",
"price": 12.9,
"currency": "GBP"
# route_idorigin_stopdestination_stopdeparture_timearrival_timeduration_minutes
1
2
3

Complete list of extractable fields for Station Intelligence objects from trainline.com. All fields typed and schema-versioned.

station_codestation_namecountrylatitudelongitudeoperatorticket_machinesaccessiblewifi_availableparking_spacesconnecting_transit
station_intelligence
● 200 OK
"station_code": "EUS",
"station_name": "London Euston",
"country": "UK",
"latitude": 51.5281,
"longitude": -0.1336,
"operator": "Network Rail",
"accessible": true,
"ticket_machines": 24
# station_codestation_namecountrylatitudelongitudeoperator
1
2
3

Complete list of extractable fields for Live Status & Delays objects from trainline.com. All fields typed and schema-versioned.

journey_idscheduled_departureestimated_departuredelay_minutesstatus_messagecancellation_reasonplatform_alteredlast_updated
live_status & delays
● 200 OK
"journey_id": "TL-8492-LDN-MAN",
"scheduled_departure": "2026-05-12T08:20:00Z",
"estimated_departure": "2026-05-12T08:35:00Z",
"delay_minutes": 15,
"status_message": "Delayed due to signalling fault",
"cancellation_reason": "None",
"platform_altered": true,
"last_updated": "2026-05-12T08:10:00Z"
# journey_idscheduled_departureestimated_departuredelay_minutesstatus_messagecancellation_reason
1
2
3

Capabilities

Everything you need from Trainline - nothing you don't

Our Trainline scraper handles every layer of the platform: route schedules, dynamic pricing, live delay feeds, and SplitSave logic - with JavaScript rendering, session management, and anti-bot circumvention built in.

Full Route Extraction

Origin, destination, intermediate stops, transfer times, and exact platform data for rail and coach journeys.

Dynamic Pricing Tracking

Capture standard fares, Advance singles, Off-Peak returns, and First Class upgrades across operators.

SplitSave Intelligence

Extract Trainline's proprietary split-ticketing recommendations and exact saving margins per journey.

Operator & Fleet Mapping

Identify specific operators (Avanti, LNER, National Express) and train types servicing each route.

Railcard Discount Application

Simulate searches with 16-25, Two Together, or Senior Railcards applied to extract discounted fare tables.

Live Delay & Status Data

Monitor real-time punctuality, platform alterations, and cancellation reasons across the network.

Station Metadata Collection

Extract coordinates, accessibility features, facility counts, and operating hours for thousands of stations.

Cross-Border Journey Logic

Handle complex multi-operator itineraries spanning Eurostar and domestic European rail networks.

Scheduled + Streaming Modes

Run one-off bulk exports or configure continuous pipelines at hourly, daily, or real-time cadences with change-detection diffing.

// engagement pipeline

From route list to warehouse record

Brief in. Clean data out.

Define Scope
d 0

Provide origin-destination pairs, station codes, or date ranges. We design the extraction schema together.

Pipeline Build
d 2–4

We configure Scrapy / Playwright crawlers, proxy rotation, session management, and CAPTCHA handling for trainline.com.

Validation & QA
d 4–6

Schema validation, null-rate checks, price-outlier detection, and route continuity testing before full launch.

Delivery
ongoing

JSON / CSV / Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.

Under the hood

How our Trainline pipeline handles the hard parts

Trainline invests heavily in scraping detection. Here's how we stay resilient - and why teams choose managed infrastructure over DIY.

pipeline-monitor · trainline.com · live ● active
// fingerprinting
Identity rotation
TLS fingerprintrandomised
User-agentrotated
IP poolresidential
Challenges blocked0
// pagination
Page coverage
48,291 pages queued running
// observability
Pipeline health
99.9%
uptime
142ms
p99 lat
0.3%
null rate
2
alerts
Anti-bot layer
Residential proxy rotation + fingerprint spoofing

Trainline implements strict rate limiting and IP reputation checks. Our crawlers use residential ISP proxies with realistic browser fingerprints, randomised request timing, and full cookie session management.

Complex search state
Stateful session persistence

Trainline's routing engine relies on complex session tokens and multi-step API handshakes. We maintain stateful Playwright sessions to navigate the search funnel without triggering session invalidation.

Dynamic pricing hydration
Direct WebSocket and XHR interception

Fares update in real-time via WebSocket and XHR requests. We intercept these background network calls directly, bypassing DOM parsing to extract raw JSON pricing payloads.

Schema stability
Resilient selectors with fallback chains

Trainline frequently updates its front-end architecture. Our selector strategy uses multiple fallback chains per field, relying heavily on internal API responses rather than brittle CSS selectors.

Change detection
Only re-scrape what's changed

For large route catalogues, we maintain a hash index of last-seen values per journey. Subsequent runs only push diffs - reducing compute cost, storage bloat, and downstream processing load.

Applications

Who uses Trainline data - and how

Teams across industries use trainline.com data to build competitive products and smarter operations.

01
Competitor Price Monitoring

Transport operators and OTAs track Trainline fares to benchmark their own pricing algorithms and identify uncompetitive routes.

02
Travel Aggregation

Multi-modal travel platforms ingest Trainline schedules to build comprehensive point-to-point routing engines.

03
Corporate Travel Intelligence

Enterprise procurement teams analyse historical fare data to negotiate better corporate rates with specific rail operators.

04
Delay & Disruption Modelling

Insurers and logistics firms use historical delay and cancellation data to model network reliability and calculate risk premiums.

05
Carbon Footprint Calculation

Sustainability platforms map rail and coach alternatives against short-haul flights to calculate comparative emissions.

06
Investment Due Diligence

Hedge funds track booking volumes, route frequency changes, and pricing elasticity to model operator revenue.

Why DataFlirt

"Trainline aggregates the fragmented European rail network into a single pricing engine - but extracting that data requires navigating complex session states and aggressive rate limits."

Most teams underestimate the investment required: reliable Trainline scraping requires residential proxies, stateful session management, WebSocket interception, and daily selector maintenance. DataFlirt absorbs that complexity so your engineers can focus on the analysis - not the infrastructure.

Technical Spec

Trainline scraper - technical capabilities

Everything supported by our trainline.com scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.

JavaScript rendering
Full Playwright sessions - required for dynamic pricing and route hydration
Supported
CAPTCHA bypass
Automated 2Captcha + CapSolver integration with fallback to manual queue
Supported
Residential proxy rotation
ISP-grade residential IPs from UK / EU pools - rotated per request
Supported
Multi-currency extraction
Capture prices in GBP, EUR, USD based on configured session locale
Supported
SplitSave detection
Extract split-ticketing recommendations and exact savings
Supported
Live status interception
Capture real-time delay and platform alteration feeds
Supported
Change detection (diffs)
Hash-based diff: only emit records with changed fields since last run
Supported
User account booking history
Extracting past journeys from authenticated user accounts
Partial
Payment gateway bypass
Automated ticket purchasing or reservation holding
Partial
Infrastructure

Infrastructure powering the Trainline pipeline

Open-source tooling on proven cloud infra — no vendor lock-in, full observability.

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheus
Scrapy + Playwright Stack

Scrapy handles crawl orchestration, deduplication, and retry logic. Playwright handles JavaScript rendering, cookie sessions, and interaction flows. Combined via scrapy-playwright middleware.

Residential Proxy Infrastructure

We maintain pools of residential ISP proxies across UK/EU regions. Rotation happens per-request with sticky sessions where required. IP score monitoring prevents blacklisted pool contamination.

Cloud-Native Orchestration

Pipelines run on AWS Lambda (burst) and ECS (sustained). Airflow handles scheduling, dependency management, and SLA alerting. All state stored in managed Postgres.

Output & Delivery

Your data, your destination

Data delivered to where your team already works — no new tooling required.

JSON
Newline-delimited or nested - schema versioned per run
CSV
Flat file with typed columns - Excel/Sheets compatible
XLS
Excel format for business analysts
Parquet
Columnar format for BigQuery, Snowflake, Athena
AWS S3
Direct bucket delivery - compatible with any data lake
Webhook
HTTP POST per record for real-time downstream processing
API
REST API access to query historical and live data
Postgres
Upsert into your existing schema with conflict resolution
S3
Direct bucket delivery — compatible with any data lake
// faq

Common questions.

About trainline.com scraping, legality, and pipeline operations.

Ask us directly →
Is scraping Trainline legal?

Scraping publicly available schedule and pricing information is generally permissible. DataFlirt targets only public, non-authenticated route and fare data. We do not extract personal data or bypass authentication walls.

How do you handle Trainline's rate limiting?

We use residential ISP proxies, full Playwright browser sessions with realistic fingerprints, and request timing modelled on human behaviour. We monitor for 429/503 rate spikes in real time.

Can you extract SplitSave pricing?

Yes. Our pipelines capture both standard direct fares and Trainline's proprietary SplitSave recommendations, including the exact split points and cost savings.

How fresh is the pricing data?

Real-time streaming pipelines achieve sub-15-minute latency for dynamic pricing signals on a defined route set. Full network refreshes complete within a 4-8 hour window depending on scale.

Do you support European rail operators?

Yes. We extract data for UK domestic operators, Eurostar, SNCF, Deutsche Bahn, Trenitalia, and other European networks supported by Trainline.

What is the minimum viable engagement?

Our smallest packages start at a defined set of origin-destination pairs (typically 500-2,000 routes) with daily delivery. For larger networks, we price based on volume and frequency.

Can I request a sample dataset before committing?

Absolutely. We provide a sample run of up to 100 routes as part of the pre-engagement scoping process - so you can validate schema fit and data quality before signing a contract.

$ dataflirt scope --new-project --source=trainline.com ready

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need historical route schedules or continuous dynamic price tracking across European rail networks - we scope, build, and operate the pipeline. Tell us what you need.

hello@dataflirt.com · Bengaluru · IST · typical reply < 4h
Related Scrapers

More in travel flights hotels buses

Services

Data Extraction for Every Industry

View All Services →