FlixBus Scraper — Bus & Train Schedules, Fares (40+ Countries)
FlixBus Scraper — Bus & Train Schedules, Fares, Routes
Scrapes trip schedules, fares, and seat availability from FlixBus across 40+ countries. Returns departure and arrival times, duration, price, amenities, accessibility info, and a direct booking link — for any origin/destination pair on any date.
FlixBus Scraper Features
- Extracts up to 100 trips per route/date query in a single run
- Returns 20+ fields per trip: timing, price, seat count, bike slots, Wi-Fi, power, wheelchair status
- Covers FlixBus and FlixTrain routes across Europe, the US, and Canada
- Accepts city names in plain language — "New York", "Berlin", "Paris" — no ID lookups required
- Supports 12 currencies: EUR, USD, GBP, CHF, PLN, CZK, SEK, DKK, NOK, TRY, HUF, RON
- Pure API scraping, no browser required
- Accepts ISO dates (YYYY-MM-DD) or defaults to tomorrow if no date is provided
Who Uses FlixBus Data?
- Travel aggregators — Pull real-time fares and schedules to display alongside rail and flight options
- Fare comparison tools — Track price changes over time for a given corridor or compare FlixBus against competing intercity carriers
- Mobility researchers — Analyze intercity bus coverage, route frequency, and pricing across European markets
- Tourism apps — Surface affordable ground transport options for budget travelers
- Data journalists — Map FlixBus accessibility by route — wheelchair status, bike capacity — the kind of analysis that takes ten minutes with structured data and forever without it
How FlixBus Scraper Works
- Fetches the FlixBus partner auth key from a public server config endpoint — no scraping the frontend, no WAF to navigate.
- Resolves your city names to FlixBus internal UUIDs via the autocomplete API. You type "Berlin"; it figures out the rest.
- Issues a single search request to the v4/search endpoint. All results for a given route and date come back in one response — no pagination needed.
- Saves each available trip as a structured record with fare, timing, amenity, and booking link data.
Input
{
"origin": "Berlin",
"destination": "Prague",
"date": "2026-06-15",
"passengers": 1,
"currency": "EUR",
"maxItems": 15,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
| Field | Type | Default | Description |
|---|---|---|---|
origin |
string | Berlin |
Departure city name (e.g. "New York", "Paris", "Warsaw") |
destination |
string | Prague |
Arrival city name |
date |
string | tomorrow | Travel date in YYYY-MM-DD format. Leave blank to use tomorrow. |
passengers |
integer | 1 |
Number of adult passengers |
currency |
string | EUR |
Price currency ISO code (EUR, USD, GBP, etc.) |
maxItems |
integer | 15 |
Maximum number of trip results to return |
proxyConfiguration |
object | RESIDENTIAL | Proxy settings. Residential proxy recommended for accurate geo-routing. |
FlixBus Scraper Output Fields
{
"trip_id": "direct:1234567:40d8f682-8646-11e6-9066-549f350fcb0c:40de1ad1-8646-11e6-9066-549f350fcb0c",
"service": "FlixBus",
"route_id": "N60",
"origin_city": "Berlin",
"origin_station": null,
"origin_country": "DE",
"destination_city": "Prague",
"destination_station": null,
"destination_country": "CZ",
"departure_time": "2026-06-15T00:15:00+02:00",
"arrival_time": "2026-06-15T04:40:00+02:00",
"duration_minutes": 265,
"transfers": 0,
"segments": [],
"price_total": 18.99,
"price_currency": "EUR",
"price_type": "Direct",
"seats_available": 62,
"bike_slots_available": 0,
"amenities": ["wifi", "power"],
"bikes_allowed": "true",
"wheelchair_status": "unknown",
"booking_url": "https://shop.flixbus.com/search?departureCity=40d8f682-8646-11e6-9066-549f350fcb0c&arrivalCity=40de1ad1-8646-11e6-9066-549f350fcb0c&rideDate=06/15/2026&adult=1",
"scraped_at": "2026-06-14T18:30:00.000Z"
}
| Field | Type | Description |
|---|---|---|
trip_id |
string | FlixBus trip UID encoding ride ID and station IDs |
service |
string | Brand name: FlixBus or FlixTrain |
route_id |
string | Route line code (e.g. N60, F303) |
origin_city |
string | Departure city name as returned by FlixBus |
origin_station |
string | Departure station name (null in v4 search results) |
origin_country |
string | ISO country code for origin (DE, US, FR, etc.) |
destination_city |
string | Arrival city name |
destination_station |
string | Arrival station name (null in v4 search results) |
destination_country |
string | ISO country code for destination |
departure_time |
string | Scheduled departure — ISO 8601 with timezone offset |
arrival_time |
string | Scheduled arrival — ISO 8601 with timezone offset |
duration_minutes |
number | Total trip duration in minutes |
transfers |
number | Number of transfers (0 = direct service) |
segments |
array | Stop names along route |
price_total |
number | Total ticket price in the requested currency |
price_currency |
string | Currency ISO code |
price_type |
string | Trip type: Direct or Transfer |
seats_available |
number | Seats available at scrape time |
bike_slots_available |
number | Bike transport slots available |
amenities |
array | On-board amenities (wifi, power, toilet, ac, reclining_seats, extra_legroom) |
bikes_allowed |
string | Whether bicycle carriage is permitted ("true" / "false") |
wheelchair_status |
string | Wheelchair accessibility status as reported by FlixBus |
booking_url |
string | Direct booking link on shop.flixbus.com |
scraped_at |
string | ISO timestamp when data was scraped |
🔍 FAQ
How do I scrape FlixBus schedules for a specific route?
FlixBus Scraper takes an origin city name, a destination city name, and a date. Set origin to your departure city (e.g. "Amsterdam"), destination to your arrival city (e.g. "Brussels"), and date to your travel date in YYYY-MM-DD format. Leave date blank to get tomorrow's trips, which works well for monitoring.
How much does FlixBus Scraper cost to run?
FlixBus Scraper charges $0.10 per start plus $0.001 per record. A run returning 15 trips costs roughly $0.115. Most routes have 50–100 available trips per date, so a full-route pull of 100 records runs about $0.20.
What data can I get from FlixBus?
FlixBus Scraper returns schedules, fares, seat availability, bike slot counts, amenities (Wi-Fi, power sockets, toilets, AC), wheelchair accessibility status, and direct booking URLs. Coverage spans 40+ countries and 5,600+ destinations. Prices and seat counts reflect availability at the moment of scraping.
Can I filter results by price or departure time?
FlixBus Scraper returns all available trips for a route and date, up to maxItems. Filtering happens in your downstream pipeline — take the full output and apply your own criteria.
Does FlixBus Scraper need proxies?
Residential proxy is recommended. The FlixBus API applies geo-routing for country-specific pricing, so a proxy matching the origin country gives more accurate fares. It also reduces rate limiting risk on high-volume runs.
What cities are supported?
FlixBus serves 5,600+ destinations across 40+ countries in Europe, the US, and Canada. If it's on the FlixBus website, FlixBus Scraper can reach it. Unrecognized city names return a descriptive error.
Need More Features?
Need round-trip queries, custom fields, or a different target site? File an issue or reach out through the Apify console.
Why Use FlixBus Scraper?
- Affordable — $0.001 per record includes pricing, availability, and amenities in a single API call
- Clean output — Returns structured JSON with consistent field names and ISO-format timestamps, so your pipeline can use the data without normalization
- 40+ countries — One actor covers all FlixBus and FlixTrain markets, from Germany and France to the US east coast intercity network