FlixBus Scraper avatar

FlixBus Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
FlixBus Scraper

FlixBus Scraper

Scrape FlixBus - Europe and North America's largest intercity bus network. Search bus and train journeys by route and date, look up cities and stations, and fetch popular routes. Get departure/arrival times, duration, transfers, prices, operators, and amenities.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape FlixBus — Europe and North America's largest intercity bus network (also covering FlixTrain rail services). Search bus and train journeys by route and date, look up stations, and fetch popular routes per country. HTTP-only via the public global.api.flixbus.com JSON API. No auth required; optional proxy engaged automatically only if FlixBus blocks direct requests.

What this actor does

  • Three modes: search (bus & train journeys), stationLookup, popularRoutes
  • Route search: origin → destination → date with up to 4 passengers
  • Filters: depart-after / arrive-by times, max price, max transfers, service type (bus/train)
  • Currencies: 14 ISO 4217 currencies (EUR, USD, GBP, …)
  • Countries: 19 countries with popular-route homepages
  • Empty fields are omitted

Data Source

FlixBus (flixbus.com) — Europe and North America's largest intercity bus network (also covering FlixTrain rail services). The actor reads the public JSON API behind the website (global.api.flixbus.com — the same endpoints the website's search uses), including the journey-search API (/search/service/v4/search) and the station autocomplete. HTTP-only, no login or API key required; the optional proxy is engaged automatically only if FlixBus blocks direct requests.

Output per journey (mode = search)

  • journeyId, status — FlixBus journey identifier and availability
  • provider — journey provider key (e.g. flixbus)
  • origin, destination — resolved city names
  • departureCity, arrivalCity, departureStation, arrivalStation
  • departureCityId, arrivalCityId, departureStationId, arrivalStationId
  • departureTime, arrivalTime — ISO 8601 UTC timestamps
  • durationMinutes — total journey time
  • transfers — number of connections (0 = direct)
  • intermediateStationsCount — stops between origin and destination
  • legCount, serviceTypebus / train / mixed
  • serviceTypes[], amenities[] — e.g. WIFI, POWER_SOCKETS, TOILET
  • operators[] — operating companies (e.g. FlixBus DACH GmbH, FlixTrain)
  • rideIds[], brandIds[], seatTypes[], cheapestSeat — per-leg details
  • isMarketplace — true when a partner operator sells the leg
  • bikesAllowed, wheelchairStatus — accessibility flags from the API (wheelchairStatus is omitted when the API reports unknown)
  • notices[] — informational messages attached to the journey
  • price, originalPrice, pricePerPassenger, totalWithPlatformFee, currency
  • availableSeats, capacity, seatsLeftAtPrice
  • sourceUrl — booking deep-link for this route and date
  • recordType: "journey", scrapedAt

Output per station (mode = stationLookup)

  • stationId, stationName, slug, address, zipcode
  • cityId, cityName, citySlug, countryCode, countryName
  • latitude, longitude, isTrain, legacyId, importanceOrder, searchQuery
  • sourceUrl — the autocomplete API endpoint that produced the record (stations have no public web page)
  • recordType: "station", scrapedAt

Output per route (mode = popularRoutes)

  • origin, destination — parsed from the country's homepage connections panel
  • routeUrl — canonical route page URL
  • recordType: "route", sourceUrl, scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / stationLookup / popularRoutes
originQuerystringBerlinDeparture city (mode=search)
destinationQuerystringHamburgArrival city (mode=search)
travelDatestringtomorrowYYYY-MM-DD departure date (mode=search)
passengersint1Adult passengers (1–4)
departAfterstringEarliest departure, HH:MM (mode=search)
arriveBystringLatest arrival, HH:MM (mode=search)
maxPricenumberPrice cap on journey total (mode=search)
maxTransfersintMax connections (0 = direct only, mode=search)
serviceTypestringbus / train (mode=search)
currencystringEURISO 4217 currency
countrystringusCountry for city resolution + popular routes
stationQuerystringStation name to look up (mode=stationLookup)
languagestringenAutocomplete locale (ISO 639-1)
maxItemsint50Hard cap (1–1000)
proxyConfigurationobjectApify proxyOptional; auto-engaged only if blocked

Example: Berlin → Hamburg tomorrow, direct only, under €25

{
"mode": "search",
"originQuery": "Berlin",
"destinationQuery": "Hamburg",
"passengers": 2,
"departAfter": "08:00",
"arriveBy": "22:00",
"maxPrice": 25,
"maxTransfers": 0,
"currency": "EUR",
"country": "de"
}

Example: US route, USD pricing

{
"mode": "search",
"originQuery": "New York",
"destinationQuery": "Boston",
"travelDate": "2026-08-20",
"currency": "USD",
"country": "us",
"maxItems": 20
}

Example: look up stations

{
"mode": "stationLookup",
"stationQuery": "Berlin central",
"country": "de",
"maxItems": 20
}
{
"mode": "popularRoutes",
"country": "gb",
"maxItems": 20
}

Limitations

  • No booking / fares endpoints — FlixBus's separate booking and fares endpoints are anti-bot gated. The actor queries only the public journey-search API, which returns live prices, availability, and transfer details in the search response itself. If a route returns no journeys, the run reports it in the status message instead of falling through to a blocked endpoint.
  • Per-station-pair journeys — a single ride bookable from multiple stations in the same city (e.g. Berlin ZOB and Berlin Alexanderplatz) produces one journey record per station pairing.
  • Search covers bookable future dates — the API returns live schedules for upcoming dates; historical departures are not available.
  • stationLookup returns station-level records — stations have no public web page, so sourceUrl points at the autocomplete endpoint that produced the record.

Use cases

  • Price monitoring — track FlixBus fares on commuter and long-haul routes
  • Travel apps — feed journey schedules and durations into trip planners
  • Route planning — compare direct vs. transfer journeys by price and time
  • Transit analytics — analyze operator coverage and amenities per route
  • Competitive intelligence — compare FlixBus/FlixTrain with other carriers

FAQ

What is the data source? The public JSON API behind flixbus.com (global.api.flixbus.com) — the same endpoints the website's search uses. No login or API key required.

Which routes are covered? All FlixBus-operated routes in the EU, UK, US, Canada, and beyond — plus FlixTrain rail journeys where they appear in the same search results.

Why do some journeys repeat? A single ride can be bookable from multiple stations in the same city (e.g. Berlin ZOB and Berlin Alexanderplatz). Each station pairing is a distinct journey record.

What does transfers mean? 0 for direct journeys; for connecting journeys it's the number of legs minus one (e.g. a bus→train connection has 1 transfer).

Why is the departure date optional? It defaults to tomorrow when empty, so the actor always returns live future schedules.

How fresh is the data? Live — every run queries the FlixBus booking API in real time.

Why are prices sometimes equal to original price? originalPrice is the pre-discount fare; when no discount applies it equals price.

What if two cities share a name? Autocomplete resolves the top match for the selected country. Use stationLookup first if you need an exact station.

Is this affiliated with FlixBus? No — this is a third-party actor using FlixBus's public website API.

Is there a dedicated fares/booking endpoint? FlixBus's separate booking/fares endpoints are anti-bot gated. This actor does not use them — it queries the public journey-search API (/search/service/v4/search), which returns live prices, availability, and transfer details in the search response itself. If a route returns no journeys, the run reports it in the status message instead of falling through to a blocked endpoint.