Trenitalia Train Ticket and Connection Scraper
Pricing
from $1.50 / 1,000 trips
Trenitalia Train Ticket and Connection Scraper
Scrape live Trenitalia train connections, schedules, ticket prices, transfers, delays, and fares across Italy and Europe. Extract structured Trenitalia timetable data for travel apps, price monitoring, analytics, and AI agents.
Pricing
from $1.50 / 1,000 trips
Rating
5.0
(3)
Developer
Jindřich Bär
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Trenitalia / LeFrecce train tickets & connections scraper
Search Trenitalia train connections and ticket prices across Italy (and the international routes it sells, such as Munich–Rome), and get back a structured dataset of routes, times, transfers, train types, and per-class fares — ready to plug into spreadsheets, databases, dashboards, or AI agents.
Pulls live data from the official Trenitalia ticket shop (lefrecce.it), so you always get the same trains, prices, and schedules a passenger would see when booking online — including Frecciarossa, Frecciargento, Frecciabianca, Intercity, and Regionale services.
What you can do with it
- Compare ticket prices between stations in real time — Roma–Milano, Roma–Napoli, Firenze–Venezia, and any other route the Trenitalia timetable covers, including high-speed Frecce services and cross-border connections.
- See every fare class and offer per train — STANDARD, PREMIUM, BUSINESS, EXECUTIVE — with the cheapest BASE / Economy / Super Economy price and remaining availability for each.
- Monitor fares over time by scheduling the actor to run daily / hourly and writing the results to your own datastore.
- Build a travel-planning assistant — feed the JSON output directly into an LLM agent that answers "what's the cheapest Frecciarossa from Rome to Milan tomorrow morning" or "is there a direct train from Florence to Venice this afternoon."
Typical use cases: travel comparison sites, price-monitoring tools, business-trip planners, train spotters, journalists working on transport coverage, and AI agents that need a structured rail-data source for Italy.
Input
| Field | Required | Default | Description |
|---|---|---|---|
from | yes | — | Departure station or city (e.g. "Roma Termini", "Milano Centrale", "Firenze") |
to | yes | — | Destination station or city |
date | no | today | Departure date (date picker, ISO YYYY-MM-DD) |
time | no | now | Departure time (HH:MM, 24-hour, Italy local time) |
adults | no | 1 | Number of adult passengers (1–6) |
children | no | 0 | Number of child passengers (0–6) |
maxResults | no | 20 | Maximum number of connections to push to the dataset (1–200) |
Station names are resolved against Trenitalia's own location autocomplete, so partial names work:
"Roma" resolves to the multi-station "Roma ( Tutte Le Stazioni )" (all Rome stations), while
"Roma Termini" pins the single station. The actor prefers an exact (case-insensitive) match and
otherwise takes Trenitalia's top-ranked suggestion.
Good to know
A few things worth knowing about the results:
- Some connections have no price. Mixed itineraries that involve another operator's reservation
system (or certain Intercity/Regionale transfers) come back with
priceAmount: nulland an informational note from Trenitalia — the schedule and trains are still returned. - Regionale legs may have no per-class fare grid. Regional trains are flat-fare, so their
legscan have an emptyoffersarray even though the connection's overallpriceAmountis set. - Transfers are supported. Unlike a direct-only timetable, Trenitalia builds multi-leg itineraries;
transfersandrequiresTransferreflect the number of train changes, and each leg is listed separately underlegs.
Output
Each dataset item is one connection (a "solution"):
{"id": "xc36fb263-fc28-4b9d-9b7d-58b9d76f957b","from": "Roma Termini","to": "Napoli Centrale","fromId": "830008409","toId": "830009218","departure": "2026-06-18T08:05:00.000+02:00","arrival": "2026-06-18T09:18:00.000+02:00","durationMinutes": 73,"transfers": 0,"requiresTransfer": false,"priceAmount": 34.9,"priceCurrency": "EUR","status": "SALEABLE","trainCategories": ["Frecciarossa"],"legs": [{"trainNumber": "9608","trainCategory": "Frecciarossa","acronym": "FR","denomination": "FRECCIAROSSA","from": "Roma Termini","to": "Napoli Centrale","departure": "2026-06-18T08:05:00.000+02:00","arrival": "2026-06-18T09:18:00.000+02:00","durationMinutes": 73,"offers": [{"serviceId": 30005,"serviceName": "STANDARD","offerName": "Super Economy","priceAmount": 34.9,"priceCurrency": "EUR","availableAmount": 12,"status": "SALEABLE"}]}]}
| Field | Description |
|---|---|
id | Trenitalia solution identifier |
from / to | Connection origin / destination station names |
fromId / toId | Trenitalia location ids used for the search |
departure / arrival | ISO 8601 datetimes with Italy's local offset |
durationMinutes | Total journey duration in minutes |
transfers / requiresTransfer | Number of train changes (0 = direct) / whether a change is needed |
priceAmount / priceCurrency | Cheapest fare for the connection (EUR), or null if no bookable offer |
status | Bookability status, e.g. SALEABLE |
trainCategories | Distinct train categories on the connection, e.g. ["Frecciarossa"] |
legs[] | Per-train legs, each with its train, times, duration, and offers[] |
legs[].offers[] | Per-service-class fares: serviceName (STANDARD/PREMIUM/BUSINESS/EXECUTIVE), offerName (BASE/Economy/Super Economy), priceAmount, availableAmount, status |
Need a different data source?
If you're scraping connections across multiple operators, check our companion actors:
- ÖBB ticket scraper — Austrian and Central-European rail timetable and ticket prices.
- TCDD ticket scraper — Turkish State Railways timetable and ticket prices.
- Deutsche Bahn ticket scraper — German and European rail timetable and ticket prices.
- České dráhy connection scraper — Czech rail timetable and ticket prices.
- Flixbus connection scraper — long-distance bus routes across Europe and the US.
All these actors emit a comparable schema (from, to, departure, arrival, price, leg-level
breakdown), so an aggregator agent can merge their outputs into a single multi-modal travel search.