Itabus Scraper - Rates, Routes & More avatar

Itabus Scraper - Rates, Routes & More

Pricing

from $0.0013 / actor start

Go to Apify Store
Itabus Scraper - Rates, Routes & More

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

Epic Scrapers

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

17 days ago

Last modified

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) and journey (full trip search for one day).
  • Price calendar for a date range. One row per day with the lowest amount in euros, the seats left at that price (quota), the bus capacity and 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?

GoalHow
Map the Itabus networkRun stations mode. Use code, name, city, province, latitude and longitude.
Find where you can go from a stopRun station-meta for a stationCode and read connected_stations in data.
Find the cheapest dayRun calendar for a route and date range, then sort by amount.
Track a route's pricesSchedule calendar daily and compare amount and quota per date.
See all departures on a dayRun journey and read the legs and fares in result.data.offer.travels[].routes[].
Compare with FlixBusRun the same city pair in FlixBus Trip Scraper and compare prices.
Plan a whole tripAdd stays from Airbnb Scraper or Agoda Listing Scraper.

How it compares

What you needItabus ScraperManual search on itabus.itGeneric travel-price APIs
Prices for a whole rangeOne calendar run, one row per dayOne date at a timeVaries
Station list with coordinatesOne stations runSearch box onlyVaries
Fare buckets per departureIn the journey resultCheapest options shownVaries
Raw data for analysisJSON, CSV, Excel, API, schedules, webhooksCopy and pasteYes
PriceSmall fee per runFree, manualSubscription or per call

Quick start

  1. Click Try for free and sign in to Apify.
  2. Choose a Scraping Mode. Start with calendar.
  3. Enter Origin Station Code and Destination Station Code, for example ROM_T and MIL1. Find codes with stations mode.
  4. Set Calendar Start Date and Calendar End Date (YYYY-MM-DD).
  5. 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

FieldUsed inEffect
modeAll (required)"stations", "station-meta", "calendar" or "journey".
stationCodestation-metaStation code, for example ROM_T. Required in this mode.
origincalendar, journeyOrigin station code. Required in these modes.
destinationcalendar, journeyDestination station code. Required in these modes.
beginDatecalendarFirst date, YYYY-MM-DD. Required in this mode.
endDatecalendarLast date, YYYY-MM-DD. Required in this mode.
datejourneyTravel 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.
  • amount in the calendar is the lowest fare for that day. quota is 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.
  • latitude and longitude in 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 caseFrequencyCron expression
Lowest fare per day on a routeDaily0 6 * * *
Seats running out on busy datesTwice a day0 6,18 * * *
Station list refreshWeekly (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: amount per origin, destination and date.
  • Seats left: quota compared with capacity per date.
  • 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.

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.

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:

EventPrice (Free plan)Charged when
Actor start$0.002The 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.

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.