SYSTEM all green source obb.at queue 12,403 routes p99 latency 312ms dataflirt.com · scraper/obb-at
RUN : 42 active pipelines : obb.at live

ÖBB railway data,
at warehouse scale.

We extract train schedules, dynamic pricing, route connections, and real-time delay metrics from obb.at. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.

Routes extracted
45K /day
Price updates
1.2M /24h
Station nodes
8,492 /run
Active pipelines
42
Uptime
99.94%
Data Dictionary

Every field we extract from obb.at

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

Complete list of extractable fields for Schedules & Routes objects from obb.at. All fields typed and schema-versioned.

journey_iddeparture_stationarrival_stationdeparture_timearrival_timeduration_minutestransfer_counttrain_typetrain_numberoperator
schedules_& routes
● 200 OK
"journey_id": "RJX-765-20261012",
"departure_station": "Wien Hauptbahnhof",
"arrival_station": "Salzburg Hauptbahnhof",
"departure_time": "2026-10-12T08:30:00Z",
"arrival_time": "2026-10-12T10:58:00Z",
"duration_minutes": 148,
"transfer_count": 0,
"train_type": "Railjet Xpress",
"train_number": "RJX 765"
# journey_iddeparture_stationarrival_stationdeparture_timearrival_timeduration_minutes
1
2
3

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

journey_idstandard_faresparschiene_farefirst_class_upgradebusiness_class_upgradecurrencyticket_flexibilityavailable_seatsscraped_at
pricing_& fares
● 200 OK
"journey_id": "RJX-765-20261012",
"standard_fare": 59.9,
"sparschiene_fare": 19.9,
"first_class_upgrade": 25.0,
"business_class_upgrade": 40.0,
"currency": "EUR",
"ticket_flexibility": "Non-refundable",
"scraped_at": "2026-05-12T09:14:00Z"
# journey_idstandard_faresparschiene_farefirst_class_upgradebusiness_class_upgradecurrency
1
2
3

Complete list of extractable fields for Station Data objects from obb.at. All fields typed and schema-versioned.

station_idstation_namecoordinates_latcoordinates_loncountry_codefacilitiesplatform_countwheelchair_accessiblelocal_transit_connections
station_data
● 200 OK
"station_id": "AT-8103000",
"station_name": "Wien Hauptbahnhof",
"coordinates_lat": 48.1852,
"coordinates_lon": 16.3775,
"country_code": "AT",
"platform_count": 12,
"wheelchair_accessible": true,
"facilities": "['WiFi', 'Lounges', 'Lockers']"
# station_idstation_namecoordinates_latcoordinates_loncountry_codefacilities
1
2
3

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

train_numbercurrent_stationscheduled_arrivalactual_arrivaldelay_minutesstatus_messageplatform_changednew_platformdisruption_reason
live_status & delays
● 200 OK
"train_number": "RJX 765",
"current_station": "Linz Hauptbahnhof",
"scheduled_arrival": "2026-10-12T09:45:00Z",
"actual_arrival": "2026-10-12T09:52:00Z",
"delay_minutes": 7,
"platform_changed": false,
"status_message": "Delayed due to signal failure",
"disruption_reason": "Signal malfunction"
# train_numbercurrent_stationscheduled_arrivalactual_arrivaldelay_minutesstatus_message
1
2
3

Complete list of extractable fields for Nightjet & Sleepers objects from obb.at. All fields typed and schema-versioned.

journey_idtrain_numberseating_carriage_pricecouchette_4_pricecouchette_6_pricesleeper_cabin_priceprivate_compartment_availablebreakfast_includedshower_included
nightjet_& sleepers
● 200 OK
"journey_id": "NJ-490-20261012",
"train_number": "NJ 490",
"seating_carriage_price": 29.9,
"couchette_6_price": 59.9,
"sleeper_cabin_price": 139.9,
"private_compartment_available": true,
"breakfast_included": true,
"shower_included": true
# journey_idtrain_numberseating_carriage_pricecouchette_4_pricecouchette_6_pricesleeper_cabin_price
1
2
3

Capabilities

Everything you need from ÖBB, structured and clean

Our ÖBB scraper handles the complex session states of their booking platform: multi-leg route resolution, dynamic Sparschiene pricing, and live delay tracking, all with JavaScript rendering and anti-bot circumvention built in.

Full Schedule Extraction

Departure times, arrival times, transfer nodes, and journey durations scraped across all Railjet, Nightjet, and regional ÖBB services.

Dynamic Fare Tracking

Capture standard fares, Sparschiene discounts, first-class upgrades, and business class supplements timestamped per crawl.

Multi-Leg Connections

Extract complex routing graphs including transfer wait times, platform changes, and multi-operator journey segments.

Live Delay Metrics

Monitor real-time train status, actual vs scheduled arrival times, delay minutes, and official disruption reasons.

Nightjet Availability

Track pricing and availability for sleeper cabins, couchettes, and seating carriages on overnight international routes.

Station Metadata

Geographic coordinates, platform counts, accessibility features, and facility listings for thousands of European transit nodes.

Session Token Management

Automated handling of ÖBB API session tokens required to unlock deep pricing data and Sparschiene availability.

Cross-Border Routes

Track international connections into Germany, Italy, Switzerland, and Eastern Europe operated under the ÖBB umbrella.

High-Frequency Polling

Configure continuous pipelines at hourly or real-time cadences for delay tracking and price-drop alerts.

// engagement pipeline

From route list to warehouse record

Brief in. Clean data out.

Define Scope
d 0

Provide origin-destination pairs, station lists, or specific train numbers. We design the extraction schema together.

Pipeline Build
d 2–4

We configure Scrapy and Playwright crawlers, proxy rotation, and session management for the obb.at booking SPA.

Validation & QA
d 4–6

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

Delivery
ongoing

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

Under the hood

How our ÖBB pipeline handles the hard parts

Transit operators protect their pricing APIs aggressively. Here is how we stay resilient and why teams choose managed infrastructure over DIY.

pipeline-monitor · obb.at · 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
Session API layer
Automated token generation for pricing endpoints

The ÖBB pricing API requires sequential token generation. Direct HTTP requests fail without a valid session state. Our crawlers replicate the exact sequence of the Angular SPA to acquire and refresh tokens, ensuring uninterrupted access to Sparschiene data.

JavaScript rendering
Full Playwright execution for SPA content

The obb.at booking flow is a heavy single-page application. We run full Playwright browser sessions with JavaScript execution and lazy-load triggering to hydrate the DOM and capture dynamic fare widgets.

Anti-bot layer
European residential proxy rotation

High-volume requests from datacenter IPs are quickly rate-limited. We route traffic through residential ISP proxies located in Austria, Germany, and Switzerland to maintain high trust scores and prevent IP bans.

Data normalization
Parsing nested connection graphs

Multi-leg journeys return deeply nested JSON structures with variable transfer nodes. We flatten and normalise these graphs into relational tables, making them immediately queryable in your data warehouse.

Monitoring
24/7 pipeline health tracking

Transit APIs change frequently. Every run emits structured logs to our observability stack. We alert on schema drift, null-rate spikes in pricing fields, and coverage drops, responding before you notice.

Applications

Who uses ÖBB data and how

Teams across industries use obb.at data to build competitive products and smarter operations.

01
OTA Aggregation

Online travel agencies integrate ÖBB schedules and pricing into their multi-modal booking engines to offer seamless European transit options.

02
Competitor Price Monitoring

Rival coach and rail operators track Sparschiene discounts and standard fares to optimise their own dynamic pricing algorithms.

03
Multi-modal Transit Mapping

Mobility apps map ÖBB station nodes, local transit connections, and live delays to provide accurate door-to-door routing.

04
Carbon Offset Calculations

Sustainability platforms extract train type and distance metrics to calculate precise CO2 emissions for corporate travel reporting.

05
Corporate Travel Planning

Enterprise travel managers ingest timetable and pricing data to enforce travel policies and audit historical route costs.

06
Disruption Analytics

Logistics and insurance firms model historical delay data and disruption reasons to assess route reliability and risk.

Why DataFlirt

"ÖBB operates one of Europe's densest transit networks. Extracting multi-leg pricing and real-time delay data requires navigating complex session states and strict rate limits."

Most teams underestimate the investment required. Reliable ÖBB scraping requires residential proxies, full JavaScript rendering for their booking SPA, session token management, and continuous schema maintenance. DataFlirt absorbs that complexity so your engineers can focus on the analysis, not the infrastructure.

Technical Spec

ÖBB scraper technical capabilities

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

JavaScript rendering
Full Playwright sessions required for the booking SPA and price hydration
Supported
Session token management
Automated acquisition and refresh of API tokens for fare extraction
Supported
Residential proxy rotation
ISP-grade residential IPs from EU pools rotated to prevent rate limiting
Supported
Multi-leg connection parsing
Flattening nested transfer graphs into relational database rows
Supported
Sparschiene fare tracking
Extraction of dynamic discount tiers alongside standard fares
Supported
Real-time delay extraction
Live polling of train status, actual arrival times, and disruption codes
Supported
Nightjet cabin availability
Tracking seat, couchette, and sleeper cabin inventory
Supported
Station coordinate mapping
Geospatial data for stations and platform metadata
Supported
Vorteilscard personalised discounts
Gated pricing requiring specific user account credentials
Partial
User booking history
Private payment and historical journey data behind login walls
Partial
Infrastructure

Infrastructure powering the ÖBB pipeline

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

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheus
Scrapy and Playwright Stack

Scrapy handles route orchestration and retry logic. Playwright handles SPA rendering, session token acquisition, and interaction flows. Combined via custom middleware.

European Proxy Infrastructure

We maintain pools of residential ISP proxies across Austria, Germany, and Switzerland. Rotation happens per-request with sticky sessions for the booking flow.

Cloud-Native Orchestration

Pipelines run on AWS Lambda and Kubernetes. Airflow handles scheduling, dependency management, and SLA alerting. All state stored in managed PostgreSQL.

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 for analytics tools
XLS
Excel compatible format for business teams
Parquet
Columnar format for BigQuery, Snowflake, and Athena
AWS S3
Direct bucket delivery compatible with any data lake
Webhook
HTTP POST per record for real-time downstream processing
API
REST endpoints to query your extracted datasets
PostgreSQL
Upsert into your existing schema with conflict resolution
S3
Direct bucket delivery — compatible with any data lake
// faq

Common questions.

About obb.at scraping, legality, and pipeline operations.

Ask us directly →
Is scraping obb.at legal?

Scraping publicly available information from obb.at is generally permissible. DataFlirt targets only public, non-authenticated schedule, pricing, and station data. We do not extract personal data or circumvent authentication walls. Clients should review ÖBB terms of service and consult legal counsel for specific use cases.

How do you handle ÖBB session tokens?

Our Playwright integration replicates the initial SPA load sequence to generate valid session tokens. These tokens are passed to our Scrapy HTTP clients and refreshed automatically when they expire, ensuring continuous access to the pricing API.

Can you track Sparschiene ticket availability?

Yes. We extract standard fares alongside all available Sparschiene discount tiers, including first-class upgrades and business class supplements.

How fresh is the delay data?

For live status tracking, pipelines can be configured to poll specific train numbers or station boards at high frequencies, achieving sub-5-minute latency for delay and platform change alerts.

Do you extract Nightjet and Railjet separately?

We extract all train types. Nightjet records include specific fields for seating carriages, 4-berth couchettes, 6-berth couchettes, and private sleeper cabins.

What happens when ÖBB changes its API structure?

Our observability stack detects schema drift and null-rate spikes immediately. Our engineering team updates selectors and API parsers, typically resolving breaking changes within hours to maintain SLA uptime.

Can I request a sample dataset?

Absolutely. We provide a sample run of up to 500 origin-destination pairs as part of the pre-engagement scoping process so you can validate schema fit and data quality.

$ dataflirt scope --new-project --source=obb.at 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 a one-off station metadata dump or a continuous price-monitoring feed across 10,000 routes, 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 →