# FlixBus Scraper - Bus & Train Prices, Seats $1/1K (`om_kh/flixbus-scraper`) Actor

Scrape FlixBus and FlixTrain rides for any city pairs and dates: price, seats left, departure and arrival time, duration, stations, transfers, operator, amenities and booking link. Date ranges, direct-only and max-price filters. No login. $1 per 1,000 trips.

- **URL**: https://apify.com/om_kh/flixbus-scraper.md
- **Developed by:** [Khandji Omar](https://apify.com/om_kh) (community)
- **Categories:** Travel, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 1,000 trips

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## FlixBus Scraper - Bus & Train Prices, Seats $1/1K

Get **FlixBus and FlixTrain rides** for any city pairs and dates: **price** (with and without the booking fee), **seats left**, departure and arrival time, duration, departure and arrival **stations**, transfers, operator, **amenities** (Wi-Fi, power sockets...) and a booking link. One date or a whole **price calendar** of up to 90 days. **$1 per 1,000 trips**, no login.

- **Routes in plain words:** `Paris, FR -> Amsterdam`, `Berlin -> Munich`, `New York -> Boston`. Add a country code after a comma when a city name exists in several countries.
- **Dates:** a first date and a number of days (price calendar), or exact dates. Add the way back in one click.
- **Filters:** direct rides only, maximum price, bookable rides only. Prices for 1 to 9 adults, in 14 currencies.
- **Cheapest of the day** is flagged on every row, so a price calendar is one sort away.
- Europe and North America: every city FlixBus and FlixTrain serve.

### Free tier — 10 results free on every run

**The first 10 results of every run are free**, on every run you ever make — not a one-off trial. One guard: the free allowance never covers more than half of a run, so the offer stays sustainable.

### Price

| | Price |
|---|---|
| Trip | **$1 per 1,000** ($0.001 each) |

Set **Max cost per run** and the run stops before it spends more. Searches that fail are never charged.

No other Actor in Apify Store read FlixBus on 2026-10-22.

### Measured, not promised

Run on Apify on 2026-10-22: 3 routes, 7 days each from 2026-11-20: **773 trips in 35 seconds**, no error, platform cost $0.0018.

| Route | Trips over 7 days | Cheapest | Direct rides |
|---|---|---|---|
| Paris, FR -> Amsterdam | 193 | 17.99 EUR | 150 |
| Berlin -> Munich | 113 | 16.99 EUR | 56 |
| New York -> Boston | 467 | 35.99 EUR | 446 |

### Input example

```json
{
  "routes": ["Paris, FR -> Amsterdam", "Berlin -> Munich"],
  "returnTrips": true,
  "startDate": "2026-11-20",
  "numberOfDays": 30,
  "adults": 2,
  "currency": "EUR",
  "directOnly": true
}
```

### Output example

One real row from the run above (the cheapest Berlin -> Munich ride of its day):

```json
{
  "type": "trip",
  "tripId": "direct:76499fdf-0846-4582-a2d8-135284e87ee5:dcbaaee6-9603-11...",
  "rideStatus": "available",
  "fromCity": "Berlin",
  "toCity": "Munich",
  "fromStation": "Berlin central bus station",
  "toStation": "Munich central bus station",
  "departure": "2026-11-20T17:20:00+01:00",
  "arrival": "2026-11-21T00:40:00+01:00",
  "durationMinutes": 440,
  "price": 20.99,
  "priceWithFee": 21.98,
  "originalPrice": 20.99,
  "currency": "EUR",
  "adults": 1,
  "seatsAvailable": 50,
  "seatsLeftAtPrice": null,
  "capacity": "high",
  "transfers": 0,
  "transferType": "Fast",
  "meansOfTransport": [
    "bus"
  ],
  "operators": [
    "FlixBus Polska sp. z.o.o."
  ],
  "amenities": [
    "POWER_SOCKETS",
    "WIFI"
  ],
  "provider": "flixbus",
  "date": "2026-11-20",
  "bookingUrl": "https://shop.flixbus.com/search?departureCity=40d8f682-8646-11e6-9066-549f350fcb0c&arrivalCity=40d901a5-8646-11e6-9066-549f350fcb0c&rideDate=20.11.2026&adult=1",
  "route": "Berlin -> Munich",
  "cheapestOfTheDay": true
}
```

#### Every field

| Field | What it holds |
|---|---|
| `tripId` | ride ID |
| `date` | travel date |
| `route` | your route |
| `fromCity` | departure city |
| `toCity` | arrival city |
| `fromStation` | departure station |
| `toStation` | arrival station |
| `departure` | departure time |
| `arrival` | arrival time |
| `durationMinutes` | duration in minutes |
| `price` | price |
| `priceWithFee` | price with the booking fee |
| `originalPrice` | price before discount |
| `currency` | currency |
| `adults` | adults priced |
| `seatsAvailable` | seats left |
| `seatsLeftAtPrice` | seats left at this price |
| `capacity` | bus fill level |
| `rideStatus` | available or full |
| `transfers` | number of transfers |
| `transferType` | transfer type |
| `meansOfTransport` | bus or train |
| `operators` | operators |
| `amenities` | Wi-Fi, sockets, toilet... |
| `provider` | FlixBus or FlixTrain |
| `cheapestOfTheDay` | true for the cheapest ride of that day |
| `bookingUrl` | FlixBus search for that day |

### Compared with jindrich.bar/flixbus-connections

Read on the Store on 2026-10-23 (FlixBus Ticket Scraper). Where it does better, this section says so.

- **Built on the site's own data**, not a resold scraper: no second Actor between you and the source.
- **Free results on every run** and a hard cost cap (`maxTotalChargeUsd`).
- **Price:** $1 per 1,000 here, $5 there.

### Use cases

- **Price calendars and alerts:** the cheapest ride per day on your routes, every day.
- **Travel apps and comparison sites:** bus and train options next to flights, with a booking link.
- **Market research:** prices, frequency and capacity of intercity bus routes across Europe and North America.
- **AI travel agents:** call it as an MCP tool to answer "how do I get from A to B cheaply on Friday?".

### Why use it

1. **Try before you pay.** The first 10 results of every run are free.
2. **Pay only for data delivered.** Failed searches are never billed.
3. **Hard cost cap.** Set `maxTotalChargeUsd` and a run never costs more than you allow.
4. **Ready to use.** JSON, CSV or Excel, the Apify API, n8n, Make, Zapier, or as an MCP tool for AI agents.

### How to use it in 3 steps

1. Click **Try for free**; the form opens with a ready example in **Routes**.
2. Optional: set the first date, the number of days, adults, currency and filters.
3. Click **Start** and download the results as JSON, CSV or Excel, or read them from the API.

### FAQ

**Do I need a FlixBus account or API key?** No. The Actor reads the same public search the FlixBus website uses.

**Does it book tickets?** No. Each row has a booking link that opens the FlixBus search for that day.

**Are prices final?** They are the prices FlixBus shows at the time of the run, for the number of adults you set. Prices change with demand; schedule the Actor to follow them.

**Can I call it from code?** Yes: Apify API, Python and JavaScript clients, Make, Zapier, n8n, or as an MCP tool.

# Actor input Schema

## `routes` (type: `array`):

One route per line: 'From -> To'. Add ', FR' (country code) after a city to pick the right one.

## `returnTrips` (type: `boolean`):

Adds To -> From for every route.

## `startDate` (type: `string`):

Default: tomorrow.

## `numberOfDays` (type: `integer`):

Search every day from the first date, up to 90 days. Ideal for price calendars.

## `dates` (type: `array`):

Exact dates (YYYY-MM-DD). When set, first date and number of days are ignored.

## `adults` (type: `integer`):

Prices are for this many adults.

## `currency` (type: `string`):

Currency of the prices.

## `directOnly` (type: `boolean`):

Leave out rides with a transfer.

## `maxPrice` (type: `number`):

Leave out rides above this price (in the chosen currency).

## `availableOnly` (type: `boolean`):

Leave out sold-out rides.

## `maxTotalChargeUsd` (type: `number`):

The run stops before it would cost more than this.

## Actor input object example

```json
{
  "routes": [
    "Paris, FR -> Amsterdam",
    "Berlin -> Munich"
  ],
  "returnTrips": false,
  "numberOfDays": 1,
  "adults": 1,
  "currency": "EUR",
  "directOnly": false,
  "availableOnly": false
}
```

# Actor output Schema

## `report` (type: `string`):

A visual summary of delivery, charges, changes, and source issues.

## `results` (type: `string`):

Business-ready results in a sortable table. No JSON knowledge required.

## `csv` (type: `string`):

Results ready for spreadsheets, CRMs, and analytics tools.

## `excel` (type: `string`):

Results as an Excel workbook for non-technical teams.

## `runSummary` (type: `string`):

Machine-readable delivery, billing, and source diagnostics.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "routes": [
        "Paris, FR -> Amsterdam",
        "Berlin -> Munich"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("om_kh/flixbus-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "routes": [
        "Paris, FR -> Amsterdam",
        "Berlin -> Munich",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("om_kh/flixbus-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "routes": [
    "Paris, FR -> Amsterdam",
    "Berlin -> Munich"
  ]
}' |
apify call om_kh/flixbus-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,om_kh/flixbus-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/GUWpVeaqNHbqIOv0O/builds/lXoTg6PWcgy9Nj2A7/openapi.json
