SYSTEM all green source italo.it queue 14,892 routes p99 latency 318ms dataflirt.com · scraper/italo-it
RUN · 42 active pipelines · italo.it live

Italo rail data,
at warehouse scale.

We extract train schedules, fare class pricing, seat availability, and station intelligence from Italo. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.

Fares extracted
1.2M /day
Schedule updates
845K /24h
Route combinations
12K /run
Active pipelines
42
Uptime
99.98%
Data Dictionary

Every field we extract from italo.it

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 italo.it. All fields typed and schema-versioned.

train_numberdeparture_stationarrival_stationdeparture_timearrival_timedurationstopstrain_typestatusdate
schedules_& routes
● 200 OK
"train_number": "9924",
"departure_station": "Roma Termini",
"arrival_station": "Milano Centrale",
"departure_time": "2024-05-12T08:15:00",
"arrival_time": "2024-05-12T11:25:00",
"duration": "190"
# train_numberdeparture_stationarrival_stationdeparture_timearrival_timeduration
1
2
3

Complete list of extractable fields for Fare Pricing objects from italo.it. All fields typed and schema-versioned.

train_numberdateclass_namefare_typepricecurrencyavailable_seatspromo_eligiblerefundablemodification_fee
fare_pricing
● 200 OK
"class_name": "Prima",
"fare_type": "Economy",
"price": 64.9,
"currency": "EUR",
"available_seats": 12,
"refundable": false
# train_numberdateclass_namefare_typepricecurrency
1
2
3

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

station_codestation_namecityregionlatitudelongitudeconnection_typeslounge_availablefast_track
station_intelligence
● 200 OK
"station_code": "ROMATER",
"station_name": "Roma Termini",
"city": "Rome",
"lounge_available": true,
"fast_track": true,
"connection_types": "Metro, Bus, Taxi"
# station_codestation_namecityregionlatitudelongitude
1
2
3

Complete list of extractable fields for Availability & Capacity objects from italo.it. All fields typed and schema-versioned.

train_numberdateroutetotal_capacitysmart_availableprima_availableclub_availablesalotto_availablesold_out_flag
availability_& capacity
● 200 OK
"train_number": "8920",
"date": "2024-05-12",
"smart_available": 45,
"prima_available": 8,
"club_available": 0,
"sold_out_flag": false
# train_numberdateroutetotal_capacitysmart_availableprima_available
1
2
3

Complete list of extractable fields for Promotions & Offers objects from italo.it. All fields typed and schema-versioned.

offer_idoffer_namediscount_pctabsolute_discountconditionsvalid_fromvalid_toapplicable_routesapplicable_classes
promotions_& offers
● 200 OK
"offer_name": "Italo Famiglia",
"discount_pct": 50,
"conditions": "Min 1 adult, max 3 children",
"valid_to": "2024-12-31",
"applicable_classes": "Smart, Prima",
"applicable_routes": "All"
# offer_idoffer_namediscount_pctabsolute_discountconditionsvalid_from
1
2
3

Capabilities

Everything you need from Italo — nothing you don't

Our Italo scraper handles every layer of the platform: train schedules, dynamic pricing, fare classes, and seat availability — with JavaScript rendering, session management, and anti-bot circumvention built in.

Full Schedule Extraction

Departure times, arrival times, durations, and intermediate stops for all active train services.

Dynamic Fare Tracking

Capture pricing across Smart, Prima, Club Executive, and Salotto classes. Timestamped for trend analysis.

Availability Monitoring

Track seat availability per fare class to model demand and sell-out velocity.

Route Intelligence

Extract valid station pairs, connection matrices, and travel times across the Italian rail network.

Promo Code Validation

Test known promotional codes against specific routes to map discount applicability.

Session Management

Handle booking engine session tokens and cookies to maintain continuous query state.

Geo-Targeted Crawling

Use Italian residential IPs to view localised pricing and avoid regional blocking.

Multi-Date Polling

Query rolling booking windows 30, 60, and 90 days out to build future pricing curves.

Change Detection

Hash-based diffing to only emit records when train schedules or prices change.

// engagement pipeline

From station pairs to warehouse record

Brief in. Clean data out.

Define Scope
d 0

Provide station pairs, travel date ranges, and target fare classes. We design the extraction schema.

Pipeline Build
d 2–4

We configure Playwright crawlers, Italian residential proxies, and session handlers for italo.it.

Validation & QA
d 4–6

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

Delivery
ongoing

JSON / CSV / Parquet pushed to your S3 bucket or warehouse on agreed cadence.

Under the hood

How our Italo pipeline handles the hard parts

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

pipeline-monitor · italo.it · 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
Booking engine state
Session token hydration

Italo's search requires valid session tokens generated via initial XHR requests. We handle token negotiation and cookie persistence automatically.

Dynamic payloads
API endpoint discovery

Pricing data is loaded via complex JSON payloads, not static HTML. We intercept the underlying API calls to extract clean, structured fare matrices.

Rate limiting
Italian residential IPs

Aggressive schedule polling triggers IP bans. We distribute requests across thousands of residential Italian IPs with realistic request delays.

Bot mitigation
Playwright execution

Basic HTTP clients fail bot checks. We run full browser sessions to execute JavaScript challenges and solve CAPTCHAs via CapSolver.

Data normalization
Standardised schemas

We map Italo's internal station codes and fare typologies to a clean, normalised schema ready for immediate warehouse ingestion.

Applications

Who uses Italo data — and how

Teams across industries use italo.it data to build competitive products and smarter operations.

01
Competitor Price Monitoring

Travel aggregators and competing transport operators track Italo's pricing curves to adjust their own yield management algorithms.

02
Demand Forecasting

Hedge funds and alternative data buyers monitor seat availability over time to predict passenger volumes and revenue.

03
Travel Aggregation

OTA platforms ingest raw schedule and pricing data to power multi-modal travel search engines.

04
Corporate Travel Optimisation

Large enterprises track historical ticket prices to optimise their corporate travel procurement and booking windows.

05
Dynamic Packaging

Tour operators combine real-time rail data with hotel availability to create dynamic holiday packages.

06
Infrastructure Planning

Urban planners and logistics firms analyse route frequency and capacity to model regional mobility.

Why DataFlirt

"High-speed rail pricing is as dynamic as airline fares. Capturing Italo's yield management strategies requires continuous, stateful polling."

Extracting train schedules and fares at scale means navigating complex booking engines, session tokens, and aggressive rate limits. DataFlirt manages the proxy rotation, session handling, and API interception required to deliver clean transport data, allowing your data engineering team to focus on yield analysis.

Technical Spec

Italo scraper — technical capabilities

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

Schedule extraction
Full timetables for all active routes
Supported
Fare class pricing
Smart, Prima, Club Executive, Salotto
Supported
Seat availability
Remaining seats per class and price tier
Supported
API interception
Direct capture of backend JSON payloads
Supported
Italian residential proxies
ISP-grade IPs to bypass geo-blocks
Supported
Change detection
Emit records only when price or schedule changes
Supported
Multi-date polling
Sweep future dates up to 120 days out
Supported
Italo Più loyalty points
Requires authenticated user login
Partial
User booking history
Past trips and invoices tied to accounts
Partial
Infrastructure

Infrastructure powering the Italo pipeline

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

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheus
Stateful API Crawling

We intercept Italo's internal booking APIs, managing session tokens and X-CSRF headers to extract structured fare matrices directly.

Geo-Targeted Proxy Pools

Requests are routed through Italian residential ISP proxies to ensure localised pricing and bypass regional rate limits.

Cloud-Native Orchestration

Pipelines run on Kubernetes. Airflow handles multi-date sweep scheduling, dependency management, and SLA alerting.

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

Common questions.

About italo.it scraping, legality, and pipeline operations.

Ask us directly →
Is scraping Italo legal?

Scraping public schedules and prices is generally permissible for non-commercial or analytical use. We do not extract PII or bypass authentication walls.

How do you handle session expiration?

Our Playwright workers automatically negotiate new session tokens and cookies when the booking engine rejects a request.

Can you track prices for specific fare classes?

Yes. The pipeline extracts distinct pricing for Smart, Prima, Club Executive, and Salotto across all available fare types.

How far in advance can you track schedules?

We can poll dates as far out as Italo's booking engine allows, typically 90 to 120 days in advance.

Do you provide real-time availability?

We can configure high-frequency polling for specific high-value routes to capture availability changes within minutes.

How do you avoid IP bans from Italo?

We utilise extensive pools of Italian residential proxies, rate-limiting our requests to mimic human browsing patterns.

What is the minimum viable engagement?

Pipelines start with a defined set of station pairs and polling frequencies. Contact us for a scoped quote based on your volume.

$ dataflirt scope --new-project --source=italo.it 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 daily schedule updates or continuous price tracking across the Italian rail network — 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 →