Discover/Italo Treno API
live

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.

This API takes change requests — .
Endpoint health
verified 1d ago
get_live_trains
search_stations
2/2 passing latest checkself-healing
Endpoints
2
Updated
1mo ago

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.

Try it
Station or city name to search for (e.g. 'Roma', 'Milano', 'Napoli').
api.parse.bot/scraper/d7a24cdd-bda3-4315-8fbe-aee3cffaf64b/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/d7a24cdd-bda3-4315-8fbe-aee3cffaf64b/search_stations?query=Roma' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace italoinviaggio-italotreno-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Italo Live Trains — search stations, check real-time departures."""
from parse_apis.italo_live_trains_api import Italo, StationNotFound

client = Italo()

# Search for stations in Roma — limit caps total items fetched
for station in client.stations.search(query="Roma", limit=5):
    print(station.name, station.station_code, station.is_italo_station)

# Drill-down: take one station, then get its live departure/arrival board
station = client.stations.search(query="Milano", limit=1).first()
if station:
    board = station.live_board()
    print(f"{board.station} — last update: {board.last_update}, empty: {board.is_empty}")
    for train in board.departures[:3]:
        print(f"  DEP {train.train_number} to {train.origin_destination} @ {train.scheduled_time} (delay: {train.delay_minutes}min)")
    for train in board.arrivals[:3]:
        print(f"  ARR {train.train_number} from {train.origin_destination} @ {train.scheduled_time} (delay: {train.delay_minutes}min)")

# Typed error handling
try:
    result = client.stations.search(query="Napoli", limit=1).first()
    if result:
        board = result.live_board()
        print(f"Napoli board: {len(board.arrivals)} arrivals, {len(board.departures)} departures")
except StationNotFound as exc:
    print(f"Station not found: {exc.station_code}")

print("exercised: stations.search / station.live_board / typed error catch")
All endpoints · 2 totalmissing one? ·

Search for Italo train stations by name. Returns matching stations with their codes, coordinates, and type information. Use this to find station_code values needed by get_live_trains.

Input
ParamTypeDescription
queryrequiredstringStation or city name to search for (e.g. 'Roma', 'Milano', 'Napoli').
Response
{
  "type": "object",
  "fields": {
    "count": "integer - number of matching stations",
    "stations": "array of station objects with station_code, name, latitude, longitude, is_italo_station, is_itabus_station, is_mac, mac_stations"
  },
  "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.

Reliability & maintenanceVerified

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.

Last verified
1d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • 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
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Italo Treno offer an official developer API?+
Italo Treno does not publish a documented public developer API. This Parse API provides structured access to station and live train data from italoinviaggio.italotreno.com.
What does get_live_trains return, and how do departures differ from arrivals?+
Both 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?+
No. The API covers only stations and trains on the Italo and Itabus network, as reflected by the 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?+
When no Italo services are scheduled — typically during overnight hours — the response will have is_empty: true and empty departures and arrivals arrays. This is expected behavior and reflects actual service availability, not a data error.
Can I retrieve historical train schedules or past delay records?+
Not currently. The API covers real-time and current-session departure and arrival data only. Historical schedules and delay records are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting historical or timetable data if a suitable source is available.
Page content last updated . Spec covers 2 endpoints from italoinviaggio.italotreno.com.
Related APIs in TravelSee all →
amtrak.com API
Search for Amtrak trains across stations, compare fares, and discover discounts to plan your rail journey with current pricing and availability. Get detailed train information, autocomplete station names, and find the cheapest routes for your travel dates.
trenitalia.com API
Search for trains across Italy, check real-time train status and delays, view station departure and arrival boards, and find available tickets all in one place. Get live traffic information and detailed train itineraries to plan your journey with complete visibility into schedules and service disruptions.
flightradar24.com API
Track live flights worldwide, view real-time airport schedules, and search for specific flights with detailed information about aircraft and routes. Monitor the most tracked flights and get comprehensive airport details including gates, terminals, and operational status.
united.com API
Search United Airlines flights, check real-time flight status, and view detailed seat maps to plan your perfect trip. Compare fare options and use airport autocomplete to quickly find your departure and arrival cities.
nationalrail.co.uk API
Check live train departure and arrival times at UK stations, search for specific stations, and get real-time service disruption alerts. Stay informed about rail service delays and changes to plan your journeys efficiently.
nasstatus.faa.gov API
Monitor real-time FAA airspace conditions to check airport delays, closures, ground stops, and active events affecting flights. Track forecasts, reroutes, and flow program changes to stay informed about current and upcoming disruptions across the National Airspace System.
hotels.com API
Search for hotels across millions of properties, view room availability and pricing, and get detailed information about accommodations at specific destinations. Get location suggestions and discover popular travel spots to help plan your next getaway.
bahn.de API
Access data from bahn.de.