Busbud Routes Scraper avatar

Busbud Routes Scraper

Pricing

from $4.53 / 1,000 results

Go to Apify Store
Busbud Routes Scraper

Busbud Routes Scraper

Scrape Busbud intercity bus and train departures: operators, times, duration, transfers, live fares, seats and booking links. Export to CSV, Excel, JSON or XML.

Pricing

from $4.53 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

ParseForge Banner

๐ŸšŒ Busbud Routes Scraper

๐Ÿš€ Export a whole intercity timetable in seconds. 185 priced departures came back from a single Boston to New York search, 38 fields each, fares live at the second you run it.

Busbud is the global marketplace for intercity coach travel: hundreds of operators across the Americas, Europe and Africa sell through it, from Greyhound and FlixBus to ADO, Intercape, ALSA and National Express, with Amtrak trains and ferries listed beside the buses on many corridors. This Actor turns any Busbud route into a clean timetable: who runs the service, when it leaves and lands, how long it takes, how many transfers it needs, what a seat costs today, and the exact link to book it.

Every row is a real, bookable departure taken from Busbud's own search backend, not from the eight sample departures the public route page prints. That is why one search returns the full day rather than a teaser, with the fare broken into base and fees, seats remaining where the operator publishes them, the onboard amenities, the service class, and departure and arrival times as full ISO timestamps with the local timezone resolved.

๐ŸŽฏ Target Audience๐Ÿ’ก Primary Use Cases
Bus and coach operatorsWatch competitor departures, fares and seat pressure on your corridors
Travel and mobility startupsSeed a route database with real schedules and prices
Price intelligence teamsTrack fare curves from 11 months out down to the day of travel
OTAs and metasearch buildersCompare coach, rail and ferry options on the same route
Transport researchers and plannersMeasure service frequency and journey times between cities
Tourism boards and DMOsSee how reachable a destination really is, and from where
Corporate travel and logisticsFind the cheapest or fastest legal option between two cities

๐Ÿ“‹ What the Busbud Routes Scraper does

It takes a route, asks Busbud for every departure on the dates you choose, and writes one row per departure in time order.

  • Two ways to name a route. Paste Busbud route page URLs, or just write Mexico City > Oaxaca and let the Actor resolve both cities against Busbud's own city index.
  • Full schedule, not a sample. The public route page shows eight departures per date. This Actor reads the search backend and returns all of them: 185 on Boston to New York, 82 on Mexico City to Oaxaca, 62 on Johannesburg to Mthatha.
  • Live fares, not indicative prices. Every row carries the price Busbud would charge right now for the party you specified, split into base fare and fees plus taxes, with a bookableUntil deadline.
  • 30 currencies. Ask for USD, EUR, ZAR, MXN, BRL, JPY or 24 more and Busbud converts before it answers, so a South African and a Mexican corridor land in the same column.
  • Transfers made explicit. Connecting itineraries carry the transfer count and the names of the transfer stations, so a 2 stop journey is never mistaken for a direct one.
  • Coaches, trains and ferries labelled. vehicleType says which it is, and you can filter to just the ones you want.

๐Ÿ’ก Why it matters: intercity coach data is scattered across hundreds of operator sites, most of which need a browser and a session to show a price. Busbud already aggregates them, and this Actor reads that aggregate over plain HTTP, so a corridor study that used to mean 40 browser sessions becomes one run.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

A recorded walkthrough is on the way. Until then, run the Actor with its default settings and you will have 10 priced departures on screen in under a minute.

๐Ÿ“Š Output

FieldTypeWhat it holds
routeNamestringOrigin city to destination city, as Busbud names them
bookingUrlstringBusbud deeplink that opens this exact departure
departureIdstringStable journey hash, used to deduplicate across dates
originCitystringDeparture city
originRegionstringState, province or region of the origin
originCountrystringCountry of the origin
originStationstringStop or terminal the service leaves from
destinationCitystringArrival city
destinationRegionstringState, province or region of the destination
destinationCountrystringCountry of the destination
destinationStationstringStop or terminal the service arrives at
operatorstringCarrier or carriers running the journey
departureTimestringISO timestamp with the local UTC offset resolved
arrivalTimestringISO timestamp with the local UTC offset resolved
departureDatestringTravel date the search was run for, YYYY-MM-DD
departureTimezonestringIANA timezone at the origin, for example America/New_York
arrivalTimezonestringIANA timezone at the destination
durationMinutesintegerTotal journey time in minutes, transfers included
durationstringThe same duration written for humans, for example 4h 30m
transfersintegerNumber of changes, 0 for a direct service
isDirectstringYes or No
pricenumberTotal fare for the whole party, in the currency you chose
priceCurrencystringISO currency code of the fare
basePricenumberFare before fees and taxes
feesAndTaxesnumberSupplier fees, Busbud fees and taxes combined
passengersintegerAdults the fare was priced for
availableSeatsintegerSeats left on the tightest leg, when the operator publishes it
isBookablestringYes while Busbud will still sell the seat
bookableUntilstringUTC timestamp after which the departure closes for sale
vehicleTypestringBus, Train, Ferry, Shuttle, Van or Carpool
serviceClassstringFare class, for example Classic, Primera, Business Class Seat
serviceNamestringNamed service, for trains and branded coaches
serviceNumberstringService or train number where one exists
operatorsarrayEvery carrier on the journey, one entry per distinct operator
amenitiesarrayWifi, power outlets, toilet, AC and the rest, as published
transferStationsarrayStops where you change, in order, empty for direct services
scrapedAtstringUTC timestamp of the run
errorstringOnly present on a row that reports a failed search

Three real records from a run:

[
{
"routeName": "Boston to New York City",
"bookingUrl": "https://www.busbud.com/en/deeplink/drt2yz/dr5reg/eyJsZWdfaGFzaGVzIjpbImNiZTRhZjZhIl0sInJvdXRlX2lkcyI6WzM5ODk3NzQyXSwic2VhcmNoX2lkIjoiOTc0ZTUxMGMyMjczNDA4ZjVjYzc0ZWRkZjQ2MjYxZGI2NDJlMjAyNzMxZGNjYmIwMDUyMjE4NWU5NzI5NDAyZSIsInZlcnNpb24iOjJ9",
"departureId": "7628a87a2e23e3c5542d11a6c9e6d38f28534f0d773267fcfe63c5fcba4ca225",
"originCity": "Boston",
"originRegion": "Massachusetts",
"originCountry": "United States",
"originStation": "Boston (South Station)",
"destinationCity": "New York City",
"destinationRegion": "New York",
"destinationCountry": "United States",
"destinationStation": "NYC Midtown (31st St & 8th Ave)",
"operator": "FlixBus",
"departureTime": "2026-09-10T01:00:00-04:00",
"arrivalTime": "2026-09-10T05:30:00-04:00",
"departureDate": "2026-09-10",
"departureTimezone": "America/New_York",
"arrivalTimezone": "America/New_York",
"durationMinutes": 270,
"duration": "4h 30m",
"transfers": 0,
"isDirect": "Yes",
"price": 50.16,
"priceCurrency": "USD",
"basePrice": 42.99,
"feesAndTaxes": 7.17,
"passengers": 1,
"availableSeats": 20,
"isBookable": "Yes",
"bookableUntil": "2026-09-10T04:55:00Z",
"vehicleType": "Bus",
"serviceClass": "Classic",
"serviceName": "N/A",
"serviceNumber": "N/A",
"operators": ["FlixBus"],
"amenities": ["Wifi", "Power outlets", "Ac", "Average seat", "Toilet"],
"transferStations": [],
"scrapedAt": "2026-09-09T19:38:05.571Z",
"error": null
},
{
"routeName": "Boston to New York City",
"bookingUrl": "https://www.busbud.com/en/deeplink/drt2yz/dr5reg/eyJsZWdfaGFzaGVzIjpbIjQ1NmY4ODk0Il0sInJvdXRlX2lkcyI6WzM5ODk3NzQyXSwic2VhcmNoX2lkIjoiOTc0ZTUxMGMyMjczNDA4ZjVjYzc0ZWRkZjQ2MjYxZGI2NDJlMjAyNzMxZGNjYmIwMDUyMjE4NWU5NzI5NDAyZSIsInZlcnNpb24iOjJ9",
"departureId": "ecdda77c1cb54d482c192e4d01ee685126183de635418c23ee210017a29fd083",
"originCity": "Boston",
"originRegion": "Massachusetts",
"originCountry": "United States",
"originStation": "Boston (South Station)",
"destinationCity": "New York City",
"destinationRegion": "New York",
"destinationCountry": "United States",
"destinationStation": "GW Bridge",
"operator": "Greyhound Lines, Inc.",
"departureTime": "2026-09-10T01:30:00-04:00",
"arrivalTime": "2026-09-10T05:35:00-04:00",
"departureDate": "2026-09-10",
"departureTimezone": "America/New_York",
"arrivalTimezone": "America/New_York",
"durationMinutes": 245,
"duration": "4h 5m",
"transfers": 0,
"isDirect": "Yes",
"price": 52.16,
"priceCurrency": "USD",
"basePrice": 44.99,
"feesAndTaxes": 7.17,
"passengers": 1,
"availableSeats": 35,
"isBookable": "Yes",
"bookableUntil": "2026-09-10T05:25:00Z",
"vehicleType": "Bus",
"serviceClass": "Classic",
"serviceName": "N/A",
"serviceNumber": "N/A",
"operators": ["Greyhound Lines, Inc."],
"amenities": ["Wifi", "Power outlets", "Ac", "Average seat", "Toilet"],
"transferStations": [],
"scrapedAt": "2026-09-09T19:38:05.571Z",
"error": null
},
{
"routeName": "Boston to New York City",
"bookingUrl": "https://www.busbud.com/en/deeplink/drt2yz/dr5reg/eyJsZWdfaGFzaGVzIjpbImE0ZmY5ZWExIl0sInJvdXRlX2lkcyI6WzQ2ODI5OTQxXSwic2VhcmNoX2lkIjoiOTc0ZTUxMGMyMjczNDA4ZjVjYzc0ZWRkZjQ2MjYxZGI2NDJlMjAyNzMxZGNjYmIwMDUyMjE4NWU5NzI5NDAyZSIsInZlcnNpb24iOjJ9",
"departureId": "56ff495f2afef46fd81af36d232559731b5e03c5c2b83b80bcd05f30a8217b92",
"originCity": "Boston",
"originRegion": "Massachusetts",
"originCountry": "United States",
"originStation": "South Station (Train Terminal)",
"destinationCity": "New York City",
"destinationRegion": "New York",
"destinationCountry": "United States",
"destinationStation": "Penn Station, Moynihan Train Hall",
"operator": "NextGen Acela",
"departureTime": "2026-09-10T05:00:00-04:00",
"arrivalTime": "2026-09-10T08:51:00-04:00",
"departureDate": "2026-09-10",
"departureTimezone": "America/New_York",
"arrivalTimezone": "America/New_York",
"durationMinutes": 231,
"duration": "3h 51m",
"transfers": 0,
"isDirect": "Yes",
"price": 312.75,
"priceCurrency": "USD",
"basePrice": 301,
"feesAndTaxes": 11.75,
"passengers": 1,
"availableSeats": 3,
"isBookable": "Yes",
"bookableUntil": "2026-09-10T08:55:00Z",
"vehicleType": "Train",
"serviceClass": "Business Class Seat",
"serviceName": "NextGen Acela",
"serviceNumber": "2151",
"operators": ["NextGen Acela"],
"amenities": ["Wifi", "Power outlets", "Quiet zone", "Cafe", "Ac", "Average seat", "Refreshment", "Toilet"],
"transferStations": [],
"scrapedAt": "2026-09-09T19:38:05.572Z",
"error": null
}
]

โœจ Why choose this Actor

  • The whole day, not a sample. Busbud's public route page prints eight departures per date. This Actor returns every departure the marketplace can sell, which on a busy corridor is more than 200.
  • Times you can actually compute with. Departure and arrival are full ISO timestamps with the correct UTC offset, and the IANA timezone is its own column, so an overnight Mexico City to Oaxaca run does not silently drift.
  • Fares split into base and fees. Comparing operators on the headline number is misleading when one adds a booking fee and the other does not.
  • Honest about the horizon. Busbud publishes schedules about 11 months ahead. Dates past that are dropped with a message instead of returning an empty file with no explanation.
  • Every input was tested. A sold-out toggle that Busbud ignores was left out of the schema on purpose. There is no knob here that does nothing.
  • No browser anywhere. Everything is plain HTTP against Busbud's own JSON, so a run costs a fraction of a cent per hundred departures and finishes in seconds.

๐Ÿ“ˆ How it compares to alternatives

This ActorTypical single-operator scraperManual search
Operators per routeEvery carrier Busbud sellsOneEvery carrier, one tab at a time
Departures per searchAll of them, 185 measuredAll, for that one operatorWhatever fits the screen
Fields per departure388 to 15Whatever you retype
Transfers and transfer stopsYesRarelyYes, by reading each itinerary
Timezone resolvedYes, IANA name plus offsetUsually local text onlyYou work it out
Seats remainingYes, where publishedSometimesYes, one at a time
Currencies3011
Coach, rail and ferry togetherYesNoNo
Browser neededNoOftenYes

๐Ÿš€ How to use

  1. Create a free Apify account. New accounts get $5 of free credit, enough to try this Actor straight away: sign up here.
  2. Open the Actor and leave the default Boston to New York route, or paste your own Busbud route page URL.
  3. Or skip URLs entirely. Write city pairs such as Mexico City > Oaxaca or Johannesburg > Cape Town.
  4. Pick your travel dates. Give exact dates, or set how many days ahead to walk starting tomorrow.
  5. Choose a currency and party size. The fare comes back as the total for that many adults.
  6. Narrow it if you want. Direct departures only, or only buses, only trains, only ferries.
  7. Set how many departures you want and start the run.
  8. Download the result as CSV, Excel, JSON or XML, or pull it from the dataset API into your own system.

Tip: to build a fare curve, run the same route every morning for the same travel date. price plus scrapedAt is all a time series needs.

๐Ÿ’ผ Business use cases

Competitive fare monitoring for operators

Run your top 20 corridors daily and you have every competitor's departure times, journey times and prices in one table. basePrice against price shows who is loading fees, and availableSeats shows where demand is biting before it shows up in your own bookings.

Route feasibility and network planning

Before opening a corridor, count what already runs on it: how many departures a day, at what times, by whom, for how much, and how many require a transfer. durationMinutes against distance tells you whether the incumbents are running express or milk runs.

Fare curve research and revenue management

Busbud sells about 11 months out. Sample the same travel date every day and you get the full booking curve for a competitor, which is the input a revenue manager needs to price against them rather than behind them.

Travel product and content

Metasearch sites, city guides and corporate travel tools all need real schedules. One run produces a bookable timetable with links, so the content stays right instead of ageing into fiction.

๐Ÿ”Œ Automating Busbud Routes Scraper

  • Make and Zapier: trigger on run finish and push new departures into a sheet, a database or a Slack channel.
  • Slack: alert the moment a watched corridor drops below a price you set.
  • Airbyte and Fivetran: treat the dataset as a source and land it in BigQuery, Snowflake or Postgres.
  • GitHub Actions: schedule a daily run and commit the CSV so you keep a versioned fare history.
  • Google Drive and Sheets: write each run to a dated sheet and let your team pivot it without touching the API.
  • Webhooks: call your own endpoint the second a run finishes, with the dataset ID in the payload.

๐ŸŒŸ Beyond business use cases

  • Research: intercity coach frequency is a good proxy for economic links between cities, and this is one of the few ways to measure it across continents consistently.
  • Personal: planning a long trip across Mexico, South Africa or Europe is far easier in a spreadsheet than in 30 browser tabs.
  • Non-profit: accessibility and transport-poverty studies need to know which towns actually have a service, and at what hour.
  • Experimentation: schedule and price data with real timestamps is a clean dataset for forecasting and pricing models.

๐Ÿค– Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant that can browse:

I want to study intercity coach pricing. Using the Apify Actor parseforge/busbud-routes-scraper, explain how I would collect every departure between Mexico City and Oaxaca for the next 30 days in MXN, and which fields I should use to build a fare curve per operator.

โ“ Frequently Asked Questions

Do I need a Busbud account or an API key?

No. The Actor uses the same anonymous session a logged-out visitor gets, and reads only pages and data any visitor can see.

How far into the future can I go?

About 11 months. Departures still come back 330 days ahead, come back empty around 360 days, and past a year Busbud never finishes the search. The Actor caps travel dates at 330 days and tells you when it drops one.

Are the prices real fares or estimates?

Real fares. Each row is what Busbud would charge for that seat at the moment of the run, split into basePrice and feesAndTaxes, with a bookableUntil timestamp after which the departure closes for sale. Prices move, so a row is a snapshot, not a quote you can hold.

Why is there no photo column?

Because a bus departure has no photograph. Busbud publishes operator logos and city stock images, but neither shows the service being sold, so the column was left out rather than filled with a brand mark.

Why are serviceName and serviceNumber often "N/A"?

Because coaches usually do not carry one. In a measured sample every one of 126 train segments had both, and none of 84 bus segments did. The Actor mirrors that instead of inventing a value.

How many departures does one search return?

All of them. Measured examples: 185 to 204 on Boston to New York, 82 on Mexico City to Oaxaca, 62 on Johannesburg to Mthatha, 48 on Boston to Chicago. There is no page limit to work around.

Does it cover trains and ferries too?

Yes, wherever Busbud sells them. vehicleType labels each row, and the vehicle filter lets you keep only buses if that is all you want.

What does the currency setting change?

The currency Busbud quotes the fare in. Without it the site prices in whatever currency it guesses from your IP address, which is why the Actor always sends one explicitly. Thirty currencies are supported.

How does the passenger count affect the price?

price is the total for the whole party. Two adults on a route that cost 46.16 for one came back at 88.33, so per-seat pricing is not always a straight multiple. passengers records what the row was priced for.

Can I get a whole country or a whole operator in one run?

Not in one search. Busbud prices per city pair and date, so give the Actor the routes you care about. Many routes and many dates can run in the same job.

What happens on a route with no service?

The run logs that Busbud lists no departure for that date and moves on. Empty is a real answer, and it is not billed.

Do I need a proxy?

Yes, and it is already on. Busbud answers Apify's own datacentre addresses with an empty search, so every run routes through the Apify Proxy. Two platform runs measured this: zero departures without it, 204 on the same search with it. Leave the toggle on.

What happens if a search fails?

It is retried three times, then reported as a row containing only an error message. Those rows are never charged.

Can I export to Excel?

Yes. CSV, Excel, JSON and XML are all one click away from the dataset, and the API serves the same data to your own code.

๐Ÿ”Œ Integrate with any app

The dataset is available over the Apify API the second a run finishes, so anything that speaks HTTP can consume it. Use the official JavaScript or Python clients, call the REST endpoints directly, subscribe to a webhook, or connect through Make, Zapier, n8n, Airbyte or the Apify MCP server if your tooling is AI-native.

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection for more travel and market intelligence Actors.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: This is an independent tool and is not affiliated with, endorsed by or sponsored by Busbud. It collects only publicly available data from pages any visitor can open.