Wizz Air Flights Scraper: Fares, Schedules & Price Calendar
Pricing
from $11.54 / 1,000 results
Wizz Air Flights Scraper: Fares, Schedules & Price Calendar
Scrape Wizz Air flight fares and availability for any route across 190 airports in 44 countries. Extract lowest price, currency, departure times, flights available and a 30 day price calendar. Export to JSON, CSV or Excel.
Pricing
from $11.54 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
3
Monthly active users
20 hours ago
Last modified
Categories
Share
Wizz Air Flights Scraper: Fares, Schedules & Price Calendar
Here is one real result, with every field the actor returns for a flight row:
{"origin": "LTN","originName": "London Luton","originCountry": "United Kingdom","destination": "WAW","destinationName": "Warsaw Chopin\r\n","destinationCountry": "Poland","direction": "outbound","departureDate": "2026-09-15","departureDateTime": "2026-09-15T15:25:00","arrivalDateTime": null,"flightNumber": null,"dayOfWeek": "Tuesday","daysToDeparture": 30,"duration": null,"stops": 0,"carrier": "Wizz Air","fareType": "Lowest of day","cabin": "Economy","price": 32.99,"originalPrice": 32.99,"priceReduced": false,"currency": "GBP","fareKey": null,"fareClass": null,"fareOptions": null,"seatMap": null,"source": "timetable","deepLink": "https://www.wizzair.com/en-gb/booking/select-flight/LTN/WAW/2026-09-15/null/1/0/0/null","observedAt": "2026-08-16T01:34:41.881Z","error": null}
The most complete Wizz Air flight scraper available. It returns every flight Wizz Air publishes on your route for each day you scan, not just the cheapest one, prices each fare bundle, and can add a 30 day price calendar per route, with filters for route, date range, return leg, passenger mix, and price band so you get exactly the flights you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor scans a Wizz Air route between two airports over the date range you pass, and returns every flight Wizz Air publishes on that route for each day, not only the cheapest departure. It reads the public Wizz Air timetable for the full list of daily flights (source timetable), and attempts a per-bundle fare search as a best-effort upgrade, so where Wizz Air returns detailed pricing you also get the individual fare bundles.
By default each fare bundle of a flight (Basic, Wizz Go, Wizz Plus) is its own dataset row, with fareType and cabin telling the bundles apart. Set collapseFares to true to instead get one row per flight with every bundle nested in a fareOptions array. Set includeReturn to true (or pass a returnDate) to also scan the return leg (destination back to origin) in the same run; return-leg rows are tagged direction return.
With withDetails enabled (the default), the actor also emits one price calendar record per route: a 30 day cheapest-fare-per-day breakdown with the cheapest and highest dates, average and median price, price spread, and estimated savings. Every row carries a deepLink that opens the exact route and date on wizzair.com.
Quickstart
Open the actor, paste this into the input, and press Run. It scans the LTN to WAW route for a week and returns every published flight plus a 30 day price calendar.
{"origin": "LTN","destination": "WAW","departureDate": "2026-09-15","dateRangeDays": 7,"withDetails": true,"maxFlights": 50}
Only origin and destination are required. Leave departureDate empty to default to about a month from today. Set includeReturn to true, or pass a returnDate, to also scan the way back.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
origin | string | yes | BUD | Departure airport IATA code. One of 190 Wizz Air airports. |
destination | string | yes | LTN | Arrival airport IATA code. Must be a Wizz Air airport the origin connects to. |
departureDate | string | no | (about +1 month) | First departure date to scan (YYYY-MM-DD). Must be today or later. Leave empty to default to about a month from today. |
dateRangeDays | integer | no | 7 | How many consecutive days starting at departureDate to fetch fares for (1 = only that day, 30 = a month). |
returnDate | string | no | (empty) | If set, also fetch the return leg (destination back to origin) starting at this date (YYYY-MM-DD). Leave empty for one way. |
includeReturn | boolean | no | false | Also scan the return leg (destination back to origin). If no returnDate is set it defaults to a week after departure. |
collapseFares | boolean | no | false | By default every fare bundle (Basic, Wizz Go, Wizz Plus) is a separate row. Enable this for one row per flight with all bundles nested in a fareOptions array. |
withDetails | boolean | no | true | When enabled, for each route the scraper also emits a 30 day price calendar (cheapest fare per day) as a separate details record. Turn off to only return the dates you requested. |
maxPrice | integer | no | (none) | Only return fares at or below this price (in the fare currency). Leave empty for no upper limit. |
minPrice | integer | no | (none) | Only return fares at or above this price (in the fare currency). Leave empty for no lower limit. |
adultCount | integer | no | 1 | Number of adult passengers used to price the fares. |
childCount | integer | no | 0 | Number of child passengers (age 2 to 14). |
infantCount | integer | no | 0 | Number of infant passengers (under 2). |
maxFlights | integer | no | 10 | Maximum number of flight fare records to collect across all routes and dates. Free Apify accounts are capped at 10 per run. |
Output reference
The run writes flight rows (one per fare bundle by default, or one per flight when collapseFares is true) and, when withDetails is on, one price calendar record per route. Types: string, number, integer, boolean, array, object, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
origin | string | Departure airport IATA code. |
originName | string | Departure city or airport name. |
originCountry | string | Departure country. |
destination | string | Arrival airport IATA code. |
destinationName | string | Arrival city or airport name. |
destinationCountry | string | Arrival country. |
direction | string | outbound for the requested leg, return for a return-leg row. |
departureDate | string | Departure date (YYYY-MM-DD). |
departureDateTime | string | Local scheduled departure (YYYY-MM-DDTHH:mm:ss). |
arrivalDateTime | string | Local scheduled arrival when exposed, otherwise null. |
flightNumber | string | Wizz Air flight number when exposed, otherwise null. |
dayOfWeek | string | Day of week of departure, for example Tuesday. |
daysToDeparture | integer | Whole days between the run and departure. |
duration | string | Flight duration when exposed, otherwise null. |
stops | integer | Number of stops. Wizz Air point-to-point flights are 0. |
carrier | string | Operating carrier, Wizz Air. |
fareType | string | Fare label for this row, for example Lowest of day, Basic, Wizz Go, Wizz Plus. |
cabin | string | Cabin for this fare. Wizz Air is Economy. |
price | number | Fare price in currency. |
originalPrice | number | Pre-discount price when exposed, otherwise same as price. |
priceReduced | boolean | true when the fare is below its original price. |
currency | string | ISO currency code of the prices. |
fareKey | string | Internal fare identifier when exposed, otherwise null. |
fareClass | string | Wizz Air fare class code when exposed, otherwise null. |
fareOptions | array | All fare bundles of the flight (only populated when collapseFares is true), otherwise null. |
seatMap | object | Seat map when the per-bundle search returns it, otherwise null. Best effort. |
source | string | Where the row came from: timetable (daily timetable) or a per-bundle fare search upgrade. |
departureTimes | array | Calendar record only: departure times available that day. |
flightsAvailable | integer | Calendar record only: number of flights that day. |
hasMacFlight | boolean | Calendar record only: whether a metropolitan-area (MAC) flight is included. |
averagePrice | number | Calendar record only: mean cheapest daily fare over the 30 day window. |
medianPrice | number | Calendar record only: median cheapest daily fare over the window. |
priceSpread | number | Calendar record only: highest minus lowest daily fare. |
savingsPercent | integer | Calendar record only: percent saved by picking the cheapest day versus the most expensive. |
operatingDaysOfWeek | array | Calendar record only: days of week the route operates. |
deepLink | string | Wizz Air booking URL for the exact route and date. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real price calendar record from a live run (route LTN to WAW, withDetails true). This is the per-route 30 day details record:
{"origin": "LTN","originName": "London Luton","destination": "WAW","destinationName": "Warsaw Chopin\r\n","direction": "outbound","recordType": "priceCalendar","calendarFrom": "2026-09-15","calendarTo": "2026-10-14","currency": "GBP","cheapestDate": "2026-09-16","cheapestPrice": 22.99,"highestPrice": 60.99,"averagePrice": 33.06,"medianPrice": 32.99,"priceSpread": 38,"savingsPercent": 62,"operatingDaysOfWeek": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],"daysWithFlights": 30,"dailyPrices": [{ "date": "2026-09-15", "price": 32.99, "flightsAvailable": 2 },{ "date": "2026-09-16", "price": 22.99, "flightsAvailable": 3 },{ "date": "2026-09-17", "price": 28.99, "flightsAvailable": 3 }],"deepLink": "https://www.wizzair.com/en-gb/booking/select-flight/LTN/WAW/2026-09-16/null/1/0/0/null","observedAt": "2026-08-16T01:34:58.999Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~wizzair-flights-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"origin":"LTN","destination":"WAW","departureDate":"2026-09-15","dateRangeDays":7,"withDetails":true,"maxFlights":50}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~wizzair-flights-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"origin":"BUD","destination":"LTN","includeReturn":true,"collapseFares":true}'
Apify CLI:
apify call scrapers_lat/wizzair-flights-scraper \--input '{"origin":"LTN","destination":"WAW","departureDate":"2026-09-15","returnDate":"2026-09-22"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for a higher
maxFlights. - Row count. By default each fare bundle is one row, so a flight with several bundles produces several rows. Set
collapseFaresto true for one row per flight. Price calendar details records also count toward billable results; setwithDetailsto false to skip them.
FAQ and troubleshooting
Does it return every flight or only the cheapest? Every flight Wizz Air publishes on the route for each day you scan, read from the public timetable. Where Wizz Air returns detailed pricing, a per-bundle fare search adds the individual fare bundles on top.
What is the price calendar record?
When withDetails is on, each route also gets one details record (recordType priceCalendar) with a 30 day cheapest-fare-per-day breakdown, the cheapest and highest dates, average and median price, price spread, and estimated savings. Turn withDetails off to skip it.
Why are some flight fields null?
Timetable rows (source timetable) carry the schedule and lowest daily fare but not always the flight number, duration, or arrival time. Those fill in when the per-bundle fare search succeeds for that flight.
How do I get the return leg too?
Set includeReturn to true, or pass a returnDate. Return-leg rows are tagged direction return.
How do I get one row per flight instead of per bundle?
Set collapseFares to true. Each flight becomes a single row with all its bundles in the fareOptions array.
A run returned 0 records. Why? Wizz Air may not fly the requested route, or there are no flights in the date range. Confirm both airports are on the Wizz Air network and that the origin connects to the destination. Zero-result runs are not charged.
Is this an official Wizz Air tool? No. This actor is independent and has no affiliation with Wizz Air. It reads only data that is publicly available on wizzair.com. Use it in accordance with Wizz Air's terms.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for public platforms: company registries, government data, finance, travel, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Wizz Air. Accesses only publicly available data. Use in accordance with Wizz Air's terms of service.
