Itabus Scraper - Rates, Routes & More
Pricing
from $0.0013 / actor start
Itabus Scraper - Rates, Routes & More
Scrape Itabus bus network data effortlessly. Extract stations, routes, ticket prices, and journey schedules. Ideal for price monitoring, alerts, travel automation, and transport data analysis.
Pricing
from $0.0013 / actor start
Rating
0.0
(0)
Developer
Epic Scrapers
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Itabus Scraper ⭐

Free — Scrapes the complete Itabus (itabus.it) bus network data: all 1,378+ stations across Italy and Europe, price calendars, journey search results, and station metadata — all from the mobile API with no login or API key required.
Search by station code, route (origin → destination), date range, or scraping mode. Returns structured data on stations, daily minimum prices, available journeys with fare buckets, and detailed station metadata. Up to unlimited results per run — scrape every station in the network or every price across a full month in a single run. No Itabus account needed, no API key, no browser automation — the actor authenticates automatically using Itabus's own mobile API.
🚀 Features
- All Stations Mode — Extract the complete Itabus station database: 1,378+ stations across Italy and Europe. Get station codes, names, cities, provinces, addresses, GPS coordinates, timezones, and connected stations. Ideal as a lookup table for building route explorers or mapping the network.
- Station Metadata Mode — Dive deep into a single station to get its full connected-station graph (250+ connections for major hubs like Rome Tiburtina). Includes geolocation data and timezone info for precise route planning.
- Price Calendar Mode — Get the minimum ticket price for every day across a date range (up to a full month or more). See how prices fluctuate by day of the week, track
quota(remaining seats at that price),capacity(total seats), and availabletariffs(economy tiers, flex fares, premium). - Journey Search Mode — Search for all available trips on a specific date. Get departure/arrival times, per-leg fare buckets (AA through II), remaining seat availability per bucket, comfort zones (Bus, Double-floor Bus, Treno), and bundle availability.
- Automatic Authentication — The actor handles Cognito Identity Pool authentication and SigV4 request signing automatically. Users never need an Itabus account, API key, or any credentials — just provide search parameters and run.
- Structured JSON Output — Clean, normalized data with consistent field schemas per mode. Calendar results sorted by date, stations flattened with geo coordinates extracted. Ready for analysis, dashboards, or downstream APIs.
- No Browser Automation — Direct API calls to Itabus's mobile API. No Puppeteer, no Playwright, no headless browser overhead. Faster runs, lower compute costs, and more reliable data extraction.
📋 What You Get
Every scraped item type returns structured fields depending on the mode. Here are the schemas for each mode:
Stations Mode
| Field | Type | Description | Example |
|---|---|---|---|
type | string | Record type discriminator | "station" |
code | string | Unique Itabus station identifier | "ROM_T" |
name | string | Station display name | "Roma" |
shortCode | string | null | Short display code | "ROM T" |
countryCode | string | ISO country code | "ITA" |
city | string | City name | "Roma" |
province | string | Province abbreviation | "RM" |
address | string | Full street address | "Largo Guido Mazzoni (Terminal Bus), 00162 Roma" |
timezone | string | IANA timezone identifier | "Europe/Rome" |
latitude | number | null | GPS latitude coordinate | 41.9094375 |
longitude | number | null | GPS longitude coordinate | 12.528313 |
synonyms | array[string] | Alternative names for search matching | ["Tiburtina", "Roma", "termini", "anagnina"] |
connectedStations | array[string] | Station codes of directly connected stops | ["MIL1", "GEN_T", "FIR_T"] |
Price Calendar Mode
| Field | Type | Description | Example |
|---|---|---|---|
type | string | Record type discriminator | "calendar-price" |
origin | string | Origin station code | "ROM_T" |
destination | string | Destination station code | "GEN_T" |
date | string | Travel date (YYYY-MM-DD) | "2026-06-05" |
amount | number | Minimum ticket price in EUR | 23.99 |
addonsAmount | number | Additional fees in EUR | 0.0 |
quota | integer | Remaining seats at this price | 4 |
capacity | integer | Total seat capacity | 41 |
tariffs | array[string] | Available tariff codes at this price point | ["ECOCOMFORT_G"] |
Journey Search Mode
| Field | Type | Description | Example |
|---|---|---|---|
type | string | Record type discriminator | "journey-search" |
origin | string | Origin station code | "ROM_T" |
destination | string | Destination station code | "GEN_T" |
date | string | Travel date (YYYY-MM-DD) | "2026-06-05" |
result | object | Full journey search response with routes, legs, fare buckets, and availability | (see output example) |
Station Metadata Mode
| Field | Type | Description | Example |
|---|---|---|---|
type | string | Record type discriminator | "station-meta" |
stationCode | string | Requested station code | "ROM_T" |
data | object | Full station metadata response | (see output example) |
📥 Input
The actor takes the following input configuration:
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | Yes | "stations" | Scraping mode: stations, station-meta, calendar, or journey |
origin | string | Conditional | — | Origin station code (e.g. ROM_T). Required for calendar and journey modes |
destination | string | Conditional | — | Destination station code (e.g. GEN_T). Required for calendar and journey modes |
stationCode | string | Conditional | — | Station code for station-meta mode (e.g. ROM_T) |
date | string | Conditional | — | Travel date in YYYY-MM-DD format. Required for journey mode |
beginDate | string | Conditional | — | Calendar start date in YYYY-MM-DD. Required for calendar mode |
endDate | string | Conditional | — | Calendar end date in YYYY-MM-DD. Required for calendar mode |
Example input — scrape all stations:
{"mode": "stations"}
Example input — price calendar for Rome → Genoa, first week of June:
{"mode": "calendar","origin": "ROM_T","destination": "GEN_T","beginDate": "2026-06-01","endDate": "2026-06-07"}
Example input — journey search from Rome to Genoa on June 5:
{"mode": "journey","origin": "ROM_T","destination": "GEN_T","date": "2026-06-05"}
Example output — single calendar price row:
{"type": "calendar-price","origin": "ROM_T","destination": "GEN_T","date": "2026-06-05","amount": 23.99,"addonsAmount": 0.0,"quota": 4,"capacity": 41,"tariffs": ["ECOCOMFORT_G"]}
Example output — single station record:
{"type": "station","code": "ROM_T","name": "Roma","shortCode": "ROM T","countryCode": "ITA","city": "Roma","province": "RM","address": "Largo Guido Mazzoni (Terminal Bus), 00162 Roma","timezone": "Europe/Rome","latitude": 41.9094375,"longitude": 12.528313,"synonyms": ["Tiburtina", "Roma", "termini", "anagnina"],"connectedStations": ["MIL1", "GEN_T", "FIR_T"]}
💡 Use Cases
Travel Price Intelligence & Route Analysis
A travel pricing analyst needs to understand how Itabus prices fluctuate across routes, days of the week, and seasons. Using the Price Calendar mode, you can extract daily minimum prices for any route over any date range — from a week to a full month. The amount field gives you the lowest available price, quota tells you how many seats remain at that price, and tariffs reveals which fare tiers are active. Cross-reference multiple routes to build a heatmap of pricing patterns: which city pairs are cheapest mid-week? Which routes spike on Friday afternoons? Which destinations have the most fare tier diversity? The structured output makes it trivial to feed this data into visualization tools like Tableau, Grafana, or a simple Python notebook for regression analysis. The business value: data-driven pricing strategy for competitors, travel cost forecasting for corporate travel managers, or market entry analysis for new transport operators.
Network Mapping & Station Explorer
A transport researcher or app developer wants to visualize the entire Itabus network — every station, every connection, and how they link together. The All Stations mode returns the full list of 1,378+ stations with code, name, city, province, latitude, longitude, and crucially connectedStations — an array of station codes that each stop connects to. You can reconstruct the entire directed graph of the Itabus network: plot nodes on a map using the GPS coordinates, draw edges between connected stations, and calculate centrality metrics (which stations are the most connected hubs?). The Station Metadata mode goes deeper, returning the full connection graph for a single station (Roma Tiburtina alone connects to 250+ other stations). Use this data to build a route explorer, a journey planner prototype, or a bus network visualization that shows what's actually reachable from any given stop.
Competitive Benchmarking: Itabus vs. FlixBus vs. Train
A transportation analyst at a mobility startup or consulting firm needs to compare Itabus prices against competing modes — FlixBus, Trenitalia, and Italo — on overlapping routes. Using the Journey Search mode, you can extract departure/arrival times, fare buckets, and seat availability for any Itabus route on any date. Pair this with data from other scrapers (FlixBus, Omio, Trainline) to build a unified comparison database. For example: Rome to Genoa on a Friday afternoon — Itabus shows amount: 23.99 with quota: 4 remaining seats. Is FlixBus cheaper? Is the train faster for the same price? The logical_availability per fare bucket in the journey search response lets you model supply constraints — if only the highest fare tier (HH) has seats, you know the budget seats are sold out. The output: a multi-modal pricing dashboard that helps travelers make informed choices and helps operators understand their competitive position.
Holiday & Event Price Surge Monitoring
A travel agency or events company monitors transportation prices for a major event — say, a concert in Milan or a trade fair in Bologna. Using the Price Calendar mode, schedule recurring runs (e.g. daily) for affected routes in the weeks leading up to the event. Track how amount changes over time: when do prices first rise? How quickly does quota drop to zero for the cheapest tariff tiers? The calendar endpoint returns data for up to 30+ days in a single API call, so you can monitor an entire month's pricing with one run per route. Set up an Apify webhook to trigger a Slack alert when the cheapest fare for a specific date drops below (or rises above) a threshold. The business value: optimize booking timing for clients, build surge-pricing models for event planners, or offer price-guarantee products to travelers.
Database Bootstrapping for Travel Apps
A developer building a travel app or route planner needs a clean, comprehensive database of Itabus stations, routes, and pricing. The All Stations mode gives you the full network as structured JSON in one run — 1,378 records with codes, names, cities, GPS coordinates, and connected stations. Use the code and connectedStations arrays to build a route-matching lookup: given any two cities in the network, which stations serve them, and are they connected? Then use the Journey Search and Price Calendar modes to populate live pricing on-demand. Because the actor uses Itabus's own mobile API with automatic authentication, you can embed runs behind your app's API without maintaining your own auth infrastructure. The output is always fresh, always structured, and ready to serve directly to your frontend.
Academic Research: Regional Transport Accessibility
An urban studies researcher is analyzing transport accessibility across Italian regions. The Itabus network covers 100+ provinces in Italy alone, with latitude/longitude for every station and timezone for regional insights. Use the All Stations mode to extract the full station list, then compute metrics per province: station density (stations per km²), average distance between connected stations, or number of stations with international connections (non-ITA countryCode). The synonyms field on each station reveals how locals refer to stops — useful for sociolinguistic analysis of transport naming conventions. Combine station data with journey search results on specific routes to measure service frequency: how often does a given connection run? The structured, predictable output format makes this suitable for reproducible research workflows using R or Python.
❓ Frequently Asked Questions
How do I find station codes to use as input?
Run the actor in stations mode first — it returns all 1,378+ stations with their code values. Station codes follow a predictable pattern: major cities use XXX_T (e.g. ROM_T for Roma Tiburtina, MIL1 for Milano, GEN_T for Genova), while smaller towns use city abbreviations. Run the full station list once and use it as a lookup table for all subsequent calendar and journey searches.
What are the result volume limits? There are no artificial limits. In stations mode you get the full network (~1,378 records). In calendar mode, each run returns one row per day in your date range. In journey mode, you get all available trips for that route and date. Apify's platform enforces compute-time limits (typically 30 minutes per run), but the actor is designed to complete even the largest operations — like scraping all stations — in under a minute.
Do I need an Itabus account or API key? No. The actor automatically authenticates with Itabus's mobile API using a Cognito Identity Pool. It fetches temporary AWS credentials from Cognito, signs each API request with AWS Signature V4, and caches credentials to avoid unnecessary auth calls. You just provide search parameters and run.
Which countries and regions does it cover?
The Itabus network primarily covers Italy with 1,300+ stations across all regions and provinces, plus international connections to neighboring European countries. The countryCode field on each station tells you exactly which countries are covered. The actor follows the Itabus network wherever it goes — no geographical restrictions.
How fresh is the data? Every run fetches live data directly from Itabus's mobile API in real time. There is no cached or stale data. Calendar prices reflect the current live fare at the moment of the API call. Journey search results show currently available trips with real-time seat availability per fare bucket.
Can I export the data to CSV, Excel, or Google Sheets? Yes — like all Apify Actors, results are stored in a structured dataset that you can export as JSON, CSV, XML, Excel, or HTML. You can also connect the actor to Apify's integrations with Zapier, Make (Integromat), n8n, and Google Sheets for automated data pipelines.
How is this different from scraping Rome2Rio or Omio? Those platforms are aggregators — they show estimated prices and routes sourced from multiple providers, often with stale or estimated data. The Itabus Scraper talks directly to Itabus's official mobile API, the same one the Itabus app uses. You get native data: real prices, actual remaining seats per fare bucket, the full station graph, and station metadata that aggregators never surface. This is the difference between reading a restaurant review and looking at the kitchen.
Is this legal? This actor accesses publicly available data through Itabus's own mobile API — the same data any user of the Itabus mobile app can access. It does not bypass authentication, access private user data, or violate any technical protections. You are responsible for complying with Itabus's Terms of Service and applicable laws. See the disclaimer below.
📚 Technical Details
How It Works
The Itabus Scraper authenticates with Itabus's mobile backend using a Cognito Identity Pool — the same unauthenticated auth mechanism the official Itabus mobile app uses. It requests temporary AWS credentials via GetCredentialsForIdentity with a stable IdentityId, then signs every subsequent API request with AWS Signature V4 (eu-central-1, execute-api service). All data is fetched directly from Itabus's API Gateway endpoints at api.itabus-intgr-prod.itabus.it/s3p/public/*, with credentials transparently refreshed before expiry (~15 min window).
Error Handling
- Cognito auth failures — If credential retrieval fails, the actor retries once with backoff. If the IdentityId is revoked by Itabus, the error is surfaced clearly with instructions.
- API rate limiting — Itabus does not appear to enforce strict rate limits on the mobile API endpoints used. If a 429 (Too Many Requests) response is received, the actor backs off and retries.
- Invalid station codes — If an unknown station code is provided for calendar or journey search, the API returns an empty result set rather than an error. The actor handles this gracefully and reports no results found.
- Network errors — Transient failures (timeouts, DNS, connection resets) are retried with exponential backoff up to 3 attempts before failing the run.
Data Integrity
- Stable station identifiers — Station
codevalues (e.g.ROM_T) are stable across runs and match the codes used in the official Itabus app. They can be used as reliable primary keys. - Sorted calendar output — Price calendar results are sorted by date ascending in the dataset, making them directly usable for charting without client-side sorting.
- Normalized geo data — Latitude and longitude are extracted from the API's nested
geo_dataobject and flattened to the top level for easier consumption. - Schema consistency — Each mode produces records with a consistent
typediscriminator field, enabling reliable downstream processing even when multiple modes are run into the same dataset.
SEO Keywords
Itabus scraper, Itabus data extraction, Italian bus network scraper, scrape Itabus prices, Itabus API, Itabus mobile API, Itabus station list, Italian transport data, bus price calendar scraper, journey search API, Italian bus stations, Itabus Roma Tiburtina, Itabus price monitoring, Apify Itabus actor, bus travel Italy, Italian bus routes, Itabus fare buckets, Cognito scraper, SigV4 scraper, AWS signed API scraper, no-login scraper, free Apify actor, Italian mobility data, bus network graph, transport data extraction, bus ticket prices Italy, Itabus vs FlixBus, Italian intercity bus, bus scraping tool, travel data pipeline, price intelligence bus, public transport data Italy, scrape itabus.it, bus station metadata, Itabus schedule scraper, bulk bus data extraction, mobility data Italy, bus route analysis, transport research data
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Itabus, Busitalia Sita Nord S.r.l., or any of their subsidiaries. All trademarks are the property of their respective owners.
This Actor accesses only publicly available bus network data on itabus.it. You are solely responsible for ensuring your use complies with the site's Terms of Service and applicable laws.