Italo Treno APIitaloinviaggio.italotreno.com ↗
Search Italo train stations and get real-time departures, arrivals, delays, and platform data for any station on the Italo network.
What is the Italo Treno API?
This API exposes 2 endpoints covering the Italo high-speed rail network in Italy: search_stations lets you look up stations by name and retrieve their codes and coordinates, while get_live_trains returns real-time departure and arrival boards for a given station, including delay minutes, scheduled and actual times, platform assignments, and route details.
curl -X GET 'https://api.parse.bot/scraper/d7a24cdd-bda3-4315-8fbe-aee3cffaf64b/search_stations?query=Roma' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for Italo network train and bus stations by name. The query is matched as a case- and accent-insensitive substring of the station name (e.g. 'roma' matches 'Roma Termini' and the 'Roma (Tutte)' city group), restricted to stations served by Italo or Itabus. Returns matching stations with their codes, coordinates, and type information in one round trip; count is the number of stations returned and an unmatched query yields an empty list. City-group entries (is_mac true) carry no coordinates and list their member stations in mac_stations. Use the station_code and name values with get_live_trains.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Station or city name (or part of it) to search for (e.g. 'Roma', 'Milano', 'Napoli'). |
{
"type": "object",
"fields": {
"count": "integer - number of matching stations returned",
"stations": "array of station objects with station_code, name, latitude, longitude (empty strings for city groups), is_italo_station, is_itabus_station, is_mac, mac_stations (member stations of a city group, each with station_code and name)"
},
"sample": {
"data": {
"count": 3,
"stations": [
{
"name": "Roma (Tutte)",
"is_mac": true,
"latitude": "",
"longitude": "",
"mac_stations": [
{
"name": "Roma Termini",
"station_code": "RMT"
},
{
"name": "Roma Tiburtina",
"station_code": "RTB"
}
],
"station_code": "RM0",
"is_italo_station": true,
"is_itabus_station": false
},
{
"name": "Roma Termini",
"is_mac": false,
"latitude": "41.90063611",
"longitude": "12.50201349",
"mac_stations": [],
"station_code": "RMT",
"is_italo_station": true,
"is_itabus_station": false
},
{
"name": "Roma Tiburtina",
"is_mac": false,
"latitude": "41.91090364",
"longitude": "12.53073536",
"mac_stations": [],
"station_code": "RTB",
"is_italo_station": true,
"is_itabus_station": false
}
]
},
"status": "success"
}
}About the Italo Treno API
Station Search
The search_stations endpoint accepts a query string — a city or station name such as Roma, Milano, or Napoli — and returns a list of matching station objects. Each object includes a station_code (e.g. RMT for Roma Termini), name, latitude, longitude, and boolean flags: is_italo_station, is_itabus_station, and is_mac. The mac_stations field lists any associated MAC (multi-access) station groupings. Use this endpoint to resolve the station_code values required by the live trains endpoint.
Real-Time Train Boards
The get_live_trains endpoint takes a station_code and matching station_name and returns the current departure and arrival boards for that station. Both departures and arrivals are arrays of train objects, each containing train_number, origin_destination, scheduled_time, actual_time, delay_minutes, platform, and route_info. The last_update field shows the timestamp of the most recent data refresh in HH:MM format. The is_empty boolean indicates whether the board has any trains listed — useful for detecting overnight windows when no services are running.
Coverage and Freshness
Coverage is limited to stations on the Italo and Itabus network; it does not include Trenitalia or regional rail services. During overnight hours, get_live_trains may return an empty board (is_empty: true) for all stations, which reflects actual service gaps rather than a data error. The count field in search_stations responses lets you quickly check how many stations matched a given query before iterating over results.
The Italo Treno API is a managed, monitored endpoint for italoinviaggio.italotreno.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when italoinviaggio.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 italoinviaggio.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?+
- Display a live departure board for a specific Italo station in a travel app using delay_minutes and platform fields
- Build a delay-monitoring alert that triggers when delay_minutes exceeds a threshold on a tracked train_number
- Geocode Italo stations onto a map using latitude and longitude from search_stations
- Resolve user-typed city names to station_code values before querying live train data
- Identify which stations support Itabus connections using the is_itabus_station flag
- Show passengers the actual_time vs scheduled_time difference for incoming trains at a station
- Detect service gaps by checking is_empty during late-night hours for operational scheduling tools
| 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 does get_live_trains return, and how do departures differ from arrivals?+
departures and arrivals arrays in the response share the same object structure: train_number, origin_destination, scheduled_time, actual_time, delay_minutes, platform, and route_info. The distinction is directional — departures show trains leaving the station, arrivals show trains approaching it. The last_update field tells you when the board was last refreshed.Does the API cover Trenitalia, Frecciarossa, or regional Italian rail services?+
is_italo_station and is_itabus_station flags returned by search_stations. Trenitalia and regional services are not included. You can fork this API on Parse and revise it to target a different rail operator's data source.Why does get_live_trains sometimes return no trains?+
is_empty: true and empty departures and arrivals arrays. This is expected behavior and reflects actual service availability, not a data error.