Italo Treno APIitalotreno.com ↗
Search Italo high-speed train schedules, per-class fares, and seat availability between Italian stations. Includes station lookup by name.
What is the Italo Treno API?
The Italo Treno API covers 2 endpoints that expose Italo high-speed train schedules, live fares, and station data for the Italian rail network. The search_trains endpoint returns every direct train and multi-leg connection between two stations on a given date, with per-class pricing across Smart, Prima Business, Club Executive, and Salotto cabins. The search_stations endpoint resolves city and station names to the station codes that search_trains requires.
curl -X GET 'https://api.parse.bot/scraper/cba3c861-9596-4f80-8d05-2d3b210125ed/search_stations?query=Firenze' \ -H 'X-API-Key: $PARSE_API_KEY'
Looks up stations by (partial) name and returns the matching stations with their station_code, which is the identifier search_trains takes as from_station / to_station. One round trip; up to 30 matches. Includes Italo, Itabus and partner (Trenitalia) stations, flagged by the is_*_station booleans; only is_italo_station=true stations are served by Italo trains. An empty stations array with count 0 is a valid result for a name that matches nothing.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Station or city name, or a prefix of it, at least 2 characters (e.g. Firenze, Milano). |
{
"type": "object",
"fields": {
"count": "number of stations returned",
"query": "the query as searched",
"stations": "array of matching stations: station_code (use in search_trains), name, city_code (grouping code shared by stations of the same city, null when absent), latitude/longitude (decimal degrees), is_italo_station, is_itabus_station, is_trenitalia_station"
},
"sample": {
"data": {
"count": 1,
"query": "Firenze",
"stations": [
{
"name": "Firenze S.M.Novella (Florence)",
"latitude": 43.77689315,
"city_code": "FI0",
"longitude": 11.24738779,
"station_code": "SMN",
"is_italo_station": true,
"is_itabus_station": false,
"is_trenitalia_station": false
}
]
},
"status": "success"
}
}About the Italo Treno API
Station Lookup
Before querying train schedules you need station codes. search_stations accepts a query string of at least 2 characters — a city name or prefix such as Firenze or Mil — and returns up to 30 matches. Each result includes station_code (the identifier used by search_trains), name, and city_code (a grouping key shared by multiple stations in the same city). Results flag whether each station is served by Italo trains, Itabus coaches, or partner carrier Trenitalia via the is_* boolean fields.
Train Search
search_trains requires from_station, to_station (both station_code values from search_stations), and a date in ISO YYYY-MM-DD format. Passenger mix is split into four age bands: adults, seniors (60+), young (14–29), and children (3–13), with a combined minimum of one passenger. You can narrow results to a departure window using depart_after in HH:MM 24-hour format.
Each entry in the solutions array carries travel_solution_id, departure_station, arrival_station, departure_time, arrival_time, and a fares structure broken down by product class (Smart, Prima Business, Club Executive, Salotto) and offer type (e.g. Flex, Super Economy). The response also surfaces last_bookable_date — the furthest date Italo currently sells tickets for — which is useful for validating date inputs in downstream applications.
Coverage and Scope
The API covers the Italo network, which operates on Italian high-speed lines connecting major cities including Rome, Milan, Florence, Naples, Turin, and Venice. Both direct trains and itineraries requiring a connection are returned. Currency is always EUR. Results reflect fares and availability at the time of the request.
The Italo Treno API is a managed, monitored endpoint for italotreno.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when italotreno.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official italotreno.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a price-tracking tool that monitors Italo fare changes across Smart and Prima Business classes on a specific route over time.
- Power a travel comparison page that shows journey duration and lowest available fare for Rome–Milan departures on a given day.
- Generate timetable widgets for travel blogs by querying departure and arrival times between popular Italian city pairs.
- Automate corporate travel reporting by fetching Flex-offer prices for a given passenger count and route.
- Validate user-entered station names against the
search_stationsresults before submitting a train search. - Filter morning or evening departures using
depart_afterto surface only commuter-relevant train options. - Check
last_bookable_dateto dynamically cap date pickers in a booking UI to the furthest date Italo accepts.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Italo Treno offer an official developer API?+
What fare and class information does search_trains return?+
search_trains returns fares broken down by product class (Smart, Prima Business, Club Executive, Salotto) and offer type (such as Flex or Super Economy) for each travel solution. Prices are in EUR. Solutions include departure and arrival times, station identifiers, and a travel_solution_id. Multi-leg connections are included alongside direct trains.Does the API return return-trip or multi-date itineraries?+
search_trains call covers one travel direction on one date. Return journeys require a second call with from_station and to_station swapped and the return date supplied. Multi-date itinerary building is not handled in a single call.Is seat-count or specific seat availability returned?+
Does the API cover Itabus coach routes or Trenitalia trains?+
search_stations flags stations with is_itabus and Trenitalia partner indicators, but search_trains returns Italo high-speed rail solutions. Dedicated Itabus schedule and fare search, and full Trenitalia timetable queries, are not currently covered. You can fork this API on Parse and revise it to add endpoints targeting those operators.