WizzAir created a subscription service called All You Can Fly, where subscribers can pay a nominal fix price (10 EUR) for flight tickets booked at most 3 days in advance. However, not all seats or all flights are eligible for the cheap tickets.
From the All You Can Fly FAQ:
[...] flight and seat availability seen in the normal booking flow does not guarantee that the available flights and seats for All You Can Fly members will be the same.
Flight availability data is published every day in the morning (Central European Time), and is publicly available in the PDF format at https://multipass.wizzair.com/aycf-availability.pdf
This project aims to record the availability data in an accessible format, csv
, for analysis. At this time, the earliest datapoint is from 2025-03-15
. If you have earlier data, get in touch with me by opening an issue, or send a toot my way on mastodon! (see my profile for username)
The following disclaimer is present in the source PDFs:
Please note: all the information on this page is correct at the time of its publication (7:00 AM every day). If you are trying to book at a later time, the list of available flights may be different. Please also note that seats are subject to availability, which depends on several external and internal factors. Seat availability seen in the normal booking flow does not guarantee that the available seats for All You Can Fly will be the same. Please review the Terms & Conditions for more information.
The raw data can be found in the data
directory, in the csv
format. The fields are as follows:
Field Name | Meaning |
---|---|
departure_from | City where the flight leaves from |
departure_to | City where the flight arrives |
availability_start | Start of the period for which this route was advertised as available (ISO 8601) |
availability_end | End of the period for which this route was advertised as available (ISO 8601) |
data_generated | Time when the availability data was generated by WizzAir staff (ISO 8601) |
To locally update the data with the current day's PDF, run the main.py
script with the uv
tool:
$ uv run main.py fetch-and-parse --help
Usage: main.py fetch-and-parse [OPTIONS]
Fetch today’s availability PDF, parse it, and store both the source PDF and
the data
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --url TEXT [default: │
│ https://multipass.wizzair.com/aycf-availability.pdf] │
│ --pdf-dir PATH [default: pdfs] │
│ --data-dir PATH [default: data] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
OR use the provided container to run wizz-aycf-data. The following command will mount your current working directory in the container.
docker build . -f Containerfile -t wizz-aycf-data
docker run -v "${PWD}:/app" wizz-aycf-data
- Create Containerfile to execute using a container runtime (use
uv
+ installcamelot
prerequisites) - Refactor code
- Availability PDF URL should be a parameter
- Separate functionality of downloading and parsing
- Make parsing more bulletproof: handle different timezones in string, clear occasional possible leading/trailing whitespace
- Automatically execute every day (GitHub Actions?)
- Choose license(s), possibly different license for the data