OrbTop

Amtrak, Greyhound & Megabus Scraper — US Intercity Rail & Bus

TRAVELBUSINESSDEVELOPER TOOLS

Megabus & FlixBus US Intercity Scraper

Scrapes live departure schedules and fares from Megabus and the FlixBus/Greyhound network for any US city pair. Returns structured trip data — origin, destination, departure time, arrival time, duration, fare, available seats, and amenities — across both services in a single run.

Megabus & FlixBus Scraper Features

  • Queries two networks in one run — Megabus and FlixBus (which operates the Greyhound intercity network in the US)
  • Returns 16+ fields per trip including departure/arrival stations, duration in minutes, cheapest fare, seat availability, and amenities like WiFi and power sockets
  • Defaults to tomorrow's departures if no date is specified — useful for scheduled monitoring
  • Filter by service — run just Megabus, just FlixBus, or both
  • Pure API scraping — no browser required, runs fast
  • Fuzzy city matching — resolves "New York, NY" or "NYC" to the correct station ID in both networks

What Can You Do With US Intercity Bus Data?

  • Price trackers — monitor fare changes across the Megabus and Greyhound/FlixBus network for a specific corridor
  • Travel researchers — compare fares, schedules, and seat availability across carriers for a given city pair
  • Yield management teams — track competitor pricing on overlapping routes
  • Data journalists — build datasets on affordable intercity travel options between US metros
  • Budget travel apps — feed live bus schedules into trip-planning tools without paying aggregator fees

How It Works

  1. Configure your origin city, destination city, and travel date. City names are matched against each carrier's city database — "New York, NY", "New York City", and "NYC" all resolve correctly.
  2. The scraper queries Megabus and/or FlixBus APIs directly. Megabus uses its own journey search endpoint; FlixBus/Greyhound routes through the global FlixBus API.
  3. Each trip is normalized to a common schema — same fields regardless of carrier, so you can compare Megabus and FlixBus results without hand-stitching two different formats.
  4. Results are written to the dataset. Run it once for a snapshot or schedule it to track fare changes over time.

Megabus & FlixBus Scraper Output Fields

{
  "trip_id": "megabus-123-456-2025-06-15",
  "service": "megabus",
  "origin_station": "New York - Port Authority Bus Terminal",
  "origin_city": "New York",
  "origin_state": "NY",
  "destination_station": "Washington, DC - Union Station Bus Plaza",
  "destination_city": "Washington",
  "destination_state": "DC",
  "departure_time": "2025-06-15T07:00:00",
  "arrival_time": "2025-06-15T11:00:00",
  "duration_minutes": 240,
  "transfers": 0,
  "cheapest_fare_usd": 12.50,
  "seats_available": 8,
  "amenities": ["WIFI", "POWER_SOCKETS"],
  "booking_url": "https://us.megabus.com/journey-planner/journeys?..."
}
Field Type Description
trip_id String Unique trip identifier combining service, internal IDs, and date
service String megabus or flixbus
origin_station String Full station name at origin
origin_city String Origin city name
origin_state String Origin state abbreviation
destination_station String Full station name at destination
destination_city String Destination city name
destination_state String Destination state abbreviation
departure_time String Departure datetime (ISO 8601)
arrival_time String Arrival datetime (ISO 8601)
duration_minutes Integer Total trip duration in minutes
transfers Integer Number of transfers (0 = direct)
cheapest_fare_usd Number Lowest available fare in USD
seats_available Integer Available seats at the quoted fare (-1 if not reported)
amenities Array List of amenities, e.g. ["WIFI", "POWER_SOCKETS"]
booking_url String Direct link to book on the carrier's site

Input Configuration

{
  "services": ["megabus", "flixbus"],
  "originCity": "New York, NY",
  "destinationCity": "Washington, DC",
  "date": "2025-06-15",
  "passengers": 1,
  "maxItems": 50
}
Field Type Default Description
services Array ["megabus", "flixbus"] Which carriers to include. Options: megabus, flixbus
originCity String "New York, NY" Origin city name. Fuzzy-matched against carrier city lists
destinationCity String "Washington, DC" Destination city name
date String Tomorrow Travel date in YYYY-MM-DD format. Defaults to tomorrow if blank
passengers Integer 1 Number of adult passengers
maxItems Integer 10 Maximum trip records to return across all services

🔍 FAQ

How do I scrape bus schedules between two US cities?

Megabus & FlixBus US Intercity Scraper handles this with three fields: originCity, destinationCity, and date. City names don't need to be exact — the scraper resolves common abbreviations and partial names against each carrier's city database.

What data can I get from Megabus and FlixBus?

Megabus & FlixBus US Intercity Scraper returns departure and arrival times, station names, trip duration, number of transfers, the cheapest available fare in USD, seat availability at that fare, amenities like WiFi and power outlets, and a direct booking URL. Sixteen fields per trip.

Does this scraper include Greyhound routes?

Yes — under FlixBus. Greyhound's US intercity network is now operated by FlixBus, and its routes appear in the FlixBus API. Set services: ["flixbus"] to query just the Greyhound/FlixBus network.

How much does it cost to run?

Megabus & FlixBus US Intercity Scraper uses residential proxies for reliability. A typical city-pair query — both carriers, one date — costs a few cents. Runs are short: 30-60 seconds for most pairs.

Can I track fare changes over time?

The scraper doesn't track changes natively, but it's built for scheduled runs. Set it up with Apify's scheduler to query the same city pair daily — you'll get a historical fare record with no extra code.


Need More Features?

Need additional carriers, bulk route queries, or custom output fields? File an issue or get in touch.

Why Use Megabus & FlixBus US Intercity Scraper?

  • Two networks, one dataset — Megabus and FlixBus/Greyhound in a normalized schema, so you're not reconciling two different API shapes yourself
  • Direct API access — queries carrier APIs directly without going through an aggregator that charges for the data or throttles your queries
  • Field consistency — every trip record has the same fields regardless of carrier, which means your downstream analysis works without conditionals