# Wizzair Flights Scraper - Cheapest Fares Calendar (`recordsdata/wizzair-flights-scraper`) Actor

Track Wizzair's cheapest daily fares for any route over a date range: price per day, currency, and all departure times, straight from Wizzair's own booking engine.

- **URL**: https://apify.com/recordsdata/wizzair-flights-scraper.md
- **Developed by:** [RecordsData](https://apify.com/recordsdata) (community)
- **Categories:** Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.81 / 1,000 fare records

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

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3" alt="RecordsData" width="100%" />
</p>

## Wizzair Flights Scraper - Cheapest Fares Calendar

### What does Wizzair Flights Scraper do?

**Wizzair Flights Scraper** queries [Wizzair's](https://www.wizzair.com) own booking engine directly for the cheapest fare on every day in a date range, for any route. Give it a route (e.g. London Luton to Budapest) and a date range, and it returns the lowest price and every departure time available for each day - a full fare calendar, straight from the airline's own pricing system.

No login, no anti-bot workarounds. Runs on the Apify platform with API access, scheduling, monitoring and CSV/Excel/JSON export.

### Why use Wizzair Flights Scraper?

- **Price tracking** - monitor a route over weeks or months to spot the cheapest days to fly.
- **Travel deal sites & meta-search** - populate a fare calendar with real Wizzair pricing.
- **Corporate travel planning** - compare costs across a date range before booking.
- **Market research** - track pricing trends on specific European low-cost routes.

### How Wizzair Flights Scraper compares to alternatives

Measured against the flight-price actors on the Apify Store (September 2026):

| | This actor | Other Wizz Air actors | Aggregator APIs (Skyscanner-style) |
|---|---|---|---|
| Source | Wizz Air's own booking engine | Same or third party | Aggregated metasearch |
| All departure times per day | Yes, every flight of the day | Cheapest only | Per-search results |
| Route-by-day fare calendar | Yes, one row per day | Yes | No, per query |
| Price per 1,000 fare-days | $13.50 | from $1.50 | $2.50 per result |

Alternatives are cheaper per row; this actor's row is a full fare-day (price plus every departure time that day) straight from the booking engine, built for tracking routes over whole date ranges.

### How to use Wizzair Flights Scraper

1. Go to the **Input tab** and enter one or more **routes** as `ORIGIN-DESTINATION` using Wizzair's 3-letter station codes (e.g. `LTN-BUD`).
2. Set the **date range** (from/to) you want fares for.
3. Click **Run**. Download results as JSON, CSV, or Excel from the dataset viewer.

### Input

- **Routes** - one or more `ORIGIN-DESTINATION` pairs using Wizzair's station codes.
- **From date / To date** - the date range to check. Wizzair's own API limits each internal request to a 31-day window; the actor automatically splits longer ranges into multiple requests.
- **Adult passengers** *(optional)* - number of adults to price the fare for (default 1).
- **Max results** - cap on how many route/day fare records to return (10 on free plan).

Example input:

```json
{
    "routes": ["LTN-BUD"],
    "dateFrom": "2026-10-01",
    "dateTo": "2026-10-31",
    "maxItems": 200
}
```

### Output

```json
{
    "recordType": "fare-record",
    "departureStation": "LTN",
    "arrivalStation": "BUD",
    "departureDate": "2026-10-02T00:00:00",
    "price": 60.99,
    "currencyCode": "GBP",
    "departureTimes": ["08:30", "11:05", "15:15", "19:55"]
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field | Description |
| --- | --- |
| `departureStation` / `arrivalStation` | Wizzair 3-letter station codes |
| `departureDate` | The day this fare applies to |
| `price` / `currencyCode` | Cheapest fare found for that day |
| `departureTimes` | Every scheduled departure time on that day |

### Pricing / Cost estimation

This actor uses **Pay Per Event** pricing - you only pay per **fare record** (one route, one day) actually delivered, straight from a single API call with no extra fetch.

### Tips or Advanced options

- **Use a wide date range in one run** - the actor handles Wizzair's internal 31-day request limit automatically, so a 3-month range is just as easy to request as a 1-month one.
- **Track multiple routes at once** - add several `ORIGIN-DESTINATION` entries to build a multi-route fare comparison in one run.
- **Schedule it** - combine with Apify scheduling to catch price drops as they happen.

### FAQ, disclaimers, and support

**Is this legal?** This actor only queries Wizzair's own public booking-engine API - the same pricing data shown to anyone searching flights on wizzair.com, with no login or paywall.

**Why does a route return no results?** Not every station pair is a real Wizzair route - double-check the 3-letter codes against Wizzair's own route map.

Found a bug or need one-way vs. round-trip fares explained? Open an issue in the Issues tab or contact us for a **custom scraper** tailored to your travel-data pipeline.

# Actor input Schema

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

One or more routes as "ORIGIN-DESTINATION" using Wizzair's 3-letter station codes (e.g. "LTN-BUD" for London Luton to Budapest).

## `dateFrom` (type: `string`):

Start of the date range to check, format YYYY-MM-DD. Empty = today.

## `dateTo` (type: `string`):

End of the date range, format YYYY-MM-DD. Empty = 30 days after the start date. Wizzair limits each internal request to a 31-day window; the actor automatically splits longer ranges.

## `adultCount` (type: `integer`):

Number of adult passengers to price the fare for.

## `maxItems` (type: `integer`):

Maximum number of route/day fare records to return.

## Actor input object example

```json
{
  "routes": [
    "LTN-BUD"
  ],
  "adultCount": 1,
  "maxItems": 200
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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": [
        "LTN-BUD"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/wizzair-flights-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": ["LTN-BUD"] }

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/wizzair-flights-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": [
    "LTN-BUD"
  ]
}' |
apify call recordsdata/wizzair-flights-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/wizzair-flights-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/VaIUhT5ZYgQX6apFl/builds/riOvv7ZOpLJS1ZOeT/openapi.json
