# Wizz Air Scraper — Fare Calendar & Cheapest Days (`memo23/wizzair-scraper`) Actor

Scrape Wizz Air fares by route and flexible date window — the cheapest price for every day, one-way or round-trip (both directions). Each row: date, price, currency, fare class and a booking link. Filter by max price, sort by cheapest. JSON or CSV.

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

## Pricing

from $1.50 / 1,000 fare-day results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Wizz Air Scraper

**Turn Wizz Air into a clean fare calendar — the cheapest price for every day on any route.** Give it a route and a flexible date window and get back one row per day with the lowest fare, currency, fare class, and a ready-to-book link. One-way or round-trip (both directions). JSON or CSV out, billed per result.

#### How it works

![How Wizz Air Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-wizzair.png)

#### ✨ Why use this scraper?

Tracking flight prices? Building a fare-alert app? Finding the cheapest day to fly? Wizz Air's own site only shows one route and a few dates at a time — this actor turns it into a structured **day-by-day price calendar** you can pipe anywhere, in bulk.

- 📅 **Cheapest fare per day** — every date in your window becomes a row with the lowest available price.
- 🔁 **One-way or round-trip** — round-trip also scans the **reverse route** over your return window, so you get both calendars.
- 💷 **Local currency + fare class** — the price in the route's currency, with the fare bucket (`classOfService`).
- 🗓️ **Flexible date windows** — search a whole range, not just one day; multi-route in one run.
- 🔗 **Bookable links** — every row includes a Wizz Air deep-link with your passenger mix pre-filled.
- ⚡ **Fast & cheap** — open fare data, no account or captcha.

#### 🎯 Use cases

| Team | What they build |
|------|-----------------|
| **Travel apps / OTAs** | Live Wizz Air fare calendars for price comparison and alerts |
| **Price-monitoring** | Track a route's cheapest day over time |
| **Content / deals sites** | "Cheapest days to fly {city}" pages |
| **Data teams** | A structured budget-airline fare feed for dashboards |
| **Travellers** | Find the cheapest dates to fly a route |

#### 📥 Supported inputs

| Input | What you get |
|---|---|
| `origin` + `destination` + dates | the cheapest **fare per day** for that route across the window |
| + return dates, `tripType: roundTrip` | the **outbound** calendar **and** the reverse-route **return** calendar |

Airports are IATA codes (e.g. `LTN`, `LGW`, `BUD`). Comma-separate `origin`/`destination` for multiple routes in one run. Both origin and destination are required.

#### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `origin` | string | `LTN` | Origin airport IATA code(s), comma-separated. |
| `destination` | string | `BUD` | Destination IATA code(s), comma-separated. |
| `tripType` | string | `oneWay` | `oneWay` or `roundTrip`. |
| `departDateFrom` / `departDateTo` | string | today / +14d | Outbound date window (YYYY-MM-DD). |
| `returnDateFrom` / `returnDateTo` | string | — | Return window (round-trip only). |
| `maxPrice` | integer | — | Keep only days at or below this price. |
| `sortBy` | string | `sourceOrder` | `cheapest`, `earliestDate`, or source order. |
| `adults` / `children` | integer | `1` / `0` | Passenger mix (for the fare lookup + booking link). |
| `maxResults` | integer | `1000` | Hard cap on total rows. |

#### 📦 Output sample

```json
{
  "airline": "Wizz Air",
  "carrierCode": "W6",
  "direction": "outbound",
  "fromCode": "LTN",
  "toCode": "BUD",
  "date": "2026-08-05",
  "price": 60.99,
  "currency": "GBP",
  "fareClass": "LB",
  "priceType": "price",
  "hasMacFlight": false,
  "bookingUrl": "https://wizzair.com/en-gb/booking/select-flight/LTN/BUD/2026-08-05/null/1/0/0/null"
}
````

#### 🗂 Key output fields

| Field | Meaning |
|---|---|
| `fromCode`, `toCode` | route airports (IATA) |
| `direction` | `outbound` or `inbound` (round-trip return) |
| `date` | the flight date |
| `price`, `currency` | cheapest fare that day, in the route's currency |
| `fareClass` | Wizz fare bucket (`classOfService`) |
| `bookingUrl` | Wizz Air deep-link with your passenger mix |

#### ❓ FAQ

**Is this one row per flight or per day?**
One row per **day** — the cheapest available fare for each date in your window. It's a price *calendar* (ideal for "when is it cheapest to fly?"), not a per-flight timetable.

**How does round-trip work?**
It scans your outbound route over the outbound window **and** the reverse route over the return window, tagging each row `outbound` / `inbound` — so you can find the cheapest day in each direction independently.

**Which currency?**
The route's currency, derived from the departure country (e.g. UK departures in GBP, Polish departures in PLN).

**How current are the prices?**
Pulled live at run time. Re-run on a schedule to track the cheapest day over time.

#### 💬 Support

- Issues / feature requests: the **Issues** tab on the actor's Apify Console page.
- Author: <https://muhamed-didovic.github.io/> · <muhamed.didovic@gmail.com>

#### 🔎 Explore more scrapers

See other scrapers at [memo23's Apify profile](https://apify.com/memo23) — flights, travel, real estate, jobs, SEO, social media, and more. Pair this with the **Ryanair**, **EasyJet** and **Google Flights** scrapers for full low-cost-carrier + mainstream coverage.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Wizz Air Hungary Ltd. or any of its subsidiaries. All trademarks are the property of their respective owners. The scraper accesses only publicly available fare data; users are responsible for ensuring their use complies with Wizz Air's Terms of Service and applicable law (GDPR, etc.).

***

### SEO Keywords

wizzair scraper, wizz air scraper, scrape wizzair, wizzair fares api, wizz air price scraper, wizzair fare calendar, cheapest wizz air flights, wizz air cheapest day, flight price scraper, low cost carrier scraper, budget flight scraper, wizzair one way, wizzair round trip, flight price monitoring, fare alert api, cheapest day to fly, wizz air deals, flight fare calendar, europe flight prices, wizzair booking links

# Actor input Schema

## `origin` (type: `string`):

Origin airport IATA code. Comma-separate for several origins (e.g. `LTN,LGW`).

## `destination` (type: `string`):

Destination airport IATA code(s), comma-separated (e.g. `BUD,WAW`).

## `tripType` (type: `string`):

`oneWay` (default) or `roundTrip`. Round-trip also scans the reverse route over the return window (so you get both calendars).

## `departDateFrom` (type: `string`):

Earliest outbound date (YYYY-MM-DD). Defaults to today.

## `departDateTo` (type: `string`):

Latest outbound date (YYYY-MM-DD). Defaults to 14 days after the start.

## `returnDateFrom` (type: `string`):

Earliest return date (YYYY-MM-DD). Required for round-trip.

## `returnDateTo` (type: `string`):

Latest return date (YYYY-MM-DD).

## `maxPrice` (type: `integer`):

Keep only days at or below this price (in the route's currency). Leave empty for no limit.

## `sortBy` (type: `string`):

Order the saved fare-days.

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

Number of adults (for the fare lookup + booking link).

## `children` (type: `integer`):

Number of children.

## `dayInterval` (type: `integer`):

Window radius per API call, 3–10 days. Higher = fewer requests for a wide range.

## `maxResults` (type: `integer`):

Hard cap on the total number of fare-day rows returned.

## `proxyConfiguration` (type: `object`):

Optional. Wizz Air's fare data is open, so a proxy isn't required — but for very large multi-route or wide-window runs you can route requests through a proxy to avoid IP rate-limits. Paying users are automatically routed through premium rotating residential proxies.

## Actor input object example

```json
{
  "origin": "LTN",
  "destination": "BUD",
  "tripType": "oneWay",
  "sortBy": "sourceOrder",
  "adults": 1,
  "children": 0,
  "dayInterval": 10,
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "origin": "LTN",
    "destination": "BUD"
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/wizzair-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 = {
    "origin": "LTN",
    "destination": "BUD",
}

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

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

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

```

## CLI example

```bash
echo '{
  "origin": "LTN",
  "destination": "BUD"
}' |
apify call memo23/wizzair-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/wizzair-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wizz Air Scraper — Fare Calendar & Cheapest Days",
        "description": "Scrape Wizz Air fares by route and flexible date window — the cheapest price for every day, one-way or round-trip (both directions). Each row: date, price, currency, fare class and a booking link. Filter by max price, sort by cheapest. JSON or CSV.",
        "version": "0.0",
        "x-build-id": "L63PKdbpUSoU9dVEd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~wizzair-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-wizzair-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~wizzair-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-wizzair-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~wizzair-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-wizzair-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "origin",
                    "destination"
                ],
                "properties": {
                    "origin": {
                        "title": "Origin airport(s)",
                        "type": "string",
                        "description": "Origin airport IATA code. Comma-separate for several origins (e.g. `LTN,LGW`)."
                    },
                    "destination": {
                        "title": "Destination airport(s)",
                        "type": "string",
                        "description": "Destination airport IATA code(s), comma-separated (e.g. `BUD,WAW`)."
                    },
                    "tripType": {
                        "title": "Trip type",
                        "enum": [
                            "oneWay",
                            "roundTrip"
                        ],
                        "type": "string",
                        "description": "`oneWay` (default) or `roundTrip`. Round-trip also scans the reverse route over the return window (so you get both calendars).",
                        "default": "oneWay"
                    },
                    "departDateFrom": {
                        "title": "Outbound date from",
                        "type": "string",
                        "description": "Earliest outbound date (YYYY-MM-DD). Defaults to today."
                    },
                    "departDateTo": {
                        "title": "Outbound date to",
                        "type": "string",
                        "description": "Latest outbound date (YYYY-MM-DD). Defaults to 14 days after the start."
                    },
                    "returnDateFrom": {
                        "title": "Return date from (round-trip)",
                        "type": "string",
                        "description": "Earliest return date (YYYY-MM-DD). Required for round-trip."
                    },
                    "returnDateTo": {
                        "title": "Return date to (round-trip)",
                        "type": "string",
                        "description": "Latest return date (YYYY-MM-DD)."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "type": "integer",
                        "description": "Keep only days at or below this price (in the route's currency). Leave empty for no limit."
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "sourceOrder",
                            "cheapest",
                            "earliestDate"
                        ],
                        "type": "string",
                        "description": "Order the saved fare-days.",
                        "default": "sourceOrder"
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of adults (for the fare lookup + booking link).",
                        "default": 1
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of children.",
                        "default": 0
                    },
                    "dayInterval": {
                        "title": "Days per request (advanced)",
                        "minimum": 3,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Window radius per API call, 3–10 days. Higher = fewer requests for a wide range.",
                        "default": 10
                    },
                    "maxResults": {
                        "title": "Maximum rows",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the total number of fare-day rows returned.",
                        "default": 1000
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. Wizz Air's fare data is open, so a proxy isn't required — but for very large multi-route or wide-window runs you can route requests through a proxy to avoid IP rate-limits. Paying users are automatically routed through premium rotating residential proxies.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
