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
0
Monthly active users
17 days ago
Last modified
Categories
Share
Itabus Scraper: Italian bus stations, price calendars and journey search with fares
Itabus Scraper turns the Itabus network into a dataset. It lists every Itabus station with coordinates and codes, returns the lowest price per day for a route, and runs a full journey search with departure and arrival times, operator service, amenities and every fare bucket. It is for fare tracking, travel planning tools, route mapping and transport research in Italy and the neighboring countries Itabus connects.
- Four modes in one Actor.
stations(the whole network),station-meta(which stations one station connects to),calendar(lowest price per day) andjourney(full trip search for one day). - Price calendar for a date range. One row per day with the lowest
amountin euros, the seats left at that price (quota), the buscapacityand the fare codes (tariffs). - Full journey data. Legs with departure and arrival timestamps in local time, service type, amenities such as USB and power outlets, and fares per product family (Economy Comfort, Flex Comfort and others).
- Network map. More than 1,400 stations with code, city, province, address, time zone and latitude and longitude.
- Pay per run, not per row. One small start fee per run, no per-result charge. No Itabus account, API key, login or proxy setup. Export to JSON, CSV, Excel or Google Sheets.
Scope: This Actor returns schedules, prices and stations. It does not book tickets and it does not handle seat maps. It searches one-way trips for one adult, in euros. For FlixBus coaches, use FlixBus Trip Scraper. For flights, use Ryanair Flights Scraper.
What can you do with Itabus Scraper?
| Goal | How |
|---|---|
| Map the Itabus network | Run stations mode. Use code, name, city, province, latitude and longitude. |
| Find where you can go from a stop | Run station-meta for a stationCode and read connected_stations in data. |
| Find the cheapest day | Run calendar for a route and date range, then sort by amount. |
| Track a route's prices | Schedule calendar daily and compare amount and quota per date. |
| See all departures on a day | Run journey and read the legs and fares in result.data.offer.travels[].routes[]. |
| Compare with FlixBus | Run the same city pair in FlixBus Trip Scraper and compare prices. |
| Plan a whole trip | Add stays from Airbnb Scraper or Agoda Listing Scraper. |
How it compares
| What you need | Itabus Scraper | Manual search on itabus.it | Generic travel-price APIs |
|---|---|---|---|
| Prices for a whole range | One calendar run, one row per day | One date at a time | Varies |
| Station list with coordinates | One stations run | Search box only | Varies |
| Fare buckets per departure | In the journey result | Cheapest options shown | Varies |
| Raw data for analysis | JSON, CSV, Excel, API, schedules, webhooks | Copy and paste | Yes |
| Price | Small fee per run | Free, manual | Subscription or per call |
Quick start
- Click Try for free and sign in to Apify.
- Choose a Scraping Mode. Start with
calendar. - Enter Origin Station Code and Destination Station Code, for example
ROM_TandMIL1. Find codes withstationsmode. - Set Calendar Start Date and Calendar End Date (
YYYY-MM-DD). - Click Start. When the run finishes, open the Output tab and export the data.
{"mode": "calendar","origin": "ROM_T","destination": "MIL1","beginDate": "2026-10-10","endDate": "2026-10-20"}
Input reference
| Field | Used in | Effect |
|---|---|---|
mode | All (required) | "stations", "station-meta", "calendar" or "journey". |
stationCode | station-meta | Station code, for example ROM_T. Required in this mode. |
origin | calendar, journey | Origin station code. Required in these modes. |
destination | calendar, journey | Destination station code. Required in these modes. |
beginDate | calendar | First date, YYYY-MM-DD. Required in this mode. |
endDate | calendar | Last date, YYYY-MM-DD. Required in this mode. |
date | journey | Travel date, YYYY-MM-DD. Required in this mode. |
Station codes look like ROM_T (Roma Tiburtina), MIL1 (Milano Lampugnano), FIR_T (Firenze) and NAP_T (Napoli). Some stops use longer codes such as ITMILOLA. The stations mode lists them all.
Ready-to-run examples
List every station
{ "mode": "stations" }
Which stations connect to Roma Tiburtina
{ "mode": "station-meta", "stationCode": "ROM_T" }
Lowest price per day for a route
{"mode": "calendar","origin": "ROM_T","destination": "FIR_T","beginDate": "2026-10-10","endDate": "2026-10-20"}
All departures and fares on one day
{"mode": "journey","origin": "ROM_T","destination": "MIL1","date": "2026-10-12"}
Output
Results go to the run's default dataset. Every row has a type field: station, station-meta, calendar-price, calendar-raw or journey-search.
Stations (stations)
One row per station. This is a real row:
{"type": "station","code": "FIR_T","name": "Firenze","shortCode": "FIR T","countryCode": "ITA","city": "Scandicci","province": "FI","address": "Uscita Villa Costanza, A1 (Parcheggio Villa Costanza), 50018 Scandicci","timezone": "Europe/Rome","latitude": "43.7553125","longitude": "11.172688","synonyms": ["Firenze", "Scandicci", "Firenze Villa Costanza", "Lucca"],"connectedStations": []}
connectedStations is empty in the full station list. Use station-meta to get the stations connected to one station.
Price calendar (calendar)
One row per day with a fare, sorted by date. This is a real row (ROM_T to MIL1):
{"type": "calendar-price","origin": "ROM_T","destination": "MIL1","date": "2026-10-13","amount": 5.99,"addonsAmount": 0,"quota": 4,"capacity": 53,"tariffs": ["WOWCOMFORT_NN"]}
If Itabus returns no prices for the route and dates, you get one calendar-raw row with the empty result instead, so you can tell "no service" from an error. Some city pairs have no direct Itabus service. In our tests ROM_T to GEN_T returned no fares.
Journey search (journey)
One row with the full Itabus response in result:
{"type": "journey-search","origin": "ROM_T","destination": "MIL1","date": "2026-10-12","result": {"data": {"offer": {"travels": [{ "origin_station": {}, "destination_station": {}, "routes": [] }],"comfort_zones": [],"product_families": []}},"messages": []}}
Each item in travels[].routes[] is one departure, with travel_duration (for example PT8H40M), legs[] and bundles[]. A leg has departure_station.departure_timestamp, arrival_station.arrival_timestamp, service_name, service_type and service_properties (for example USB and power outlets). Each bundle is a fare with product_family_id (such as ECONOMY_COMFORT or FLEX_COMFORT), price, original_price and currency. If a route has no departures that day, routes is empty.
Station metadata (station-meta)
One row with stationCode and data, the station record plus connected_stations, the codes of stations you can travel to.
Notes on fields
- Prices are in euros. Journey and calendar searches are for one adult.
amountin the calendar is the lowest fare for that day.quotais the number of seats left at that price.- Timestamps in journey results include the local UTC offset, for example
2026-10-12T08:00:00+0200. latitudeandlongitudein the station list are strings.
Track Itabus fares over time with scheduled runs
Bus fares move with demand. Apify can run the same route again on a schedule and send the results wherever you need them.
1. Save your input as a task
Open the actor, set your input, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.
2. Schedule the task
In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.
Watch how to schedule an Actor:
Or schedule a saved task:
Common schedules:
| Use case | Frequency | Cron expression |
|---|---|---|
| Lowest fare per day on a route | Daily | 0 6 * * * |
| Seats running out on busy dates | Twice a day | 0 6,18 * * * |
| Station list refresh | Weekly (Monday) | 0 6 * * 1 |
3. Send the results to a spreadsheet
Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:
4. Compare runs
Calendar rows have origin, destination, date and amount, so runs are easy to join:
- Price changes:
amountperorigin,destinationanddate. - Seats left:
quotacompared withcapacityperdate. - Fare types: changes in
tariffs. - New stations: station
codes that appear for the first time.
FAQ
How do I find a station code?
Run stations mode and search the dataset by city, name or synonyms. Codes are in the code field.
Why did I get no prices?
Itabus may not run that route on those dates, or the codes may not be a connected pair. Run station-meta for the origin and check that the destination is in connected_stations. You get a calendar-raw row when there is nothing to return.
How far ahead can I search?
It depends on how far Itabus has opened sales. Dates beyond that return no fares.
Can I search several routes in one run?
No. Each run covers one route (or one station). Use the Apify API or a schedule to run several routes.
Do I need proxies, an Itabus account or an API key?
No. The Actor gets temporary access the same way the Itabus app does and does not log in.
Is it the same data as the Itabus website?
It is the data the Itabus mobile app uses for station lists, price calendars and journey search.
How is this different from an official API?
This Actor does not use an official partner API. It reads the same data the Itabus mobile app shows and returns it as a dataset.
Is it legal to scrape Itabus?
The Actor collects publicly visible schedule and fare data and no personal data. You are responsible for how you use it, including Itabus's terms and applicable laws.
Which Actor should I use for FlixBus?
Use FlixBus Trip Scraper. It returns one row per bus trip with fare, platform fee and total.
Cost
This Actor uses pay-per-event pricing, with no subscription and no per-result charge:
| Event | Price (Free plan) | Charged when |
|---|---|---|
| Actor start | $0.002 | The run starts (one event per GB of memory, minimum one). |
Paid Apify plans get a lower start price. The Pricing tab shows the current price for your plan. A run with the default 128 MB memory is one start event, whether it returns 10 rows or 1,400 stations.
Related Actors
- FlixBus Trip Scraper: FlixBus schedules and fares between two cities.
- Ryanair Flights Scraper: flight fares and cheapest destinations.
- Airbnb Scraper: stays at your destination.
- Agoda Listing Scraper: hotel prices at your destination.
- Booking Reviews Scraper: guest reviews to vet hotels.
Support
Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.
This Actor is not affiliated with or endorsed by Itabus. "Itabus" is a trademark of its owner.