A Python tool to extract and export your flight data from FlightMemory.com to CSV format.
FlightMemory.com is a popular flight logging service. It offers a PDF export of your flight history, but no export in a machine-readable format like CSV or JSON. This script fills that gap by parsing FlightMemory's HTML pages (either saved locally or scraped live) and producing a clean, structured CSV file you can load into a spreadsheet, database, or other application.
I originally built this to migrate my own flight history into Taya Flights, my (free) flight logging app, which can import this tool's CSV output directly. But the CSV is generic and can be used for anyone looking for structured data.
- Scrape flight data directly from FlightMemory.com by logging in (requires account)
- Extract flight data from saved HTML files from FlightMemory.com
- Handle pagination to get all flights across multiple pages
- Parse journey information to group related flights
- Separate aircraft type and registration information
- Extract detailed seat, class, role, and reason information
- Deduplicate flights when scraping across pages
- Automatically prepend the current date to output filenames
- Python 3.9 or newer
- A FlightMemory.com account (for web mode)
- Clone this repository:
git clone https://github.com/ehjacobs/flightmemory-exporter.git
cd flightmemory-exporter- Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate- Install dependencies:
pip install -r requirements.txtWhen you're finished, you can leave the virtual environment with deactivate.
For most users, this is the only command you need:
python3 fm-download.py --webThe script logs in to FlightMemory.com (it will prompt for your username and password), fetches all pages of your flight data, and writes everything to a dated CSV file. Your credentials are sent only to FlightMemory.com to log in — they are never stored or transmitted anywhere else.
You can limit the number of pages fetched:
python3 fm-download.py --web --max-pages 5Useful for testing, or if you prefer not to enter your credentials into a script. Save your FlightMemory flight data page as HTML in your browser, then:
python3 fm-download.py --file path/to/saved-page.htmlNote that FlightMemory paginates at 50 flights per page, and this mode processes a single saved page. If you have more than 50 flights, use web mode to fetch all pages automatically.
| Flag | Description |
|---|---|
--web |
Scrape live from FlightMemory.com |
--file PATH |
Path to a saved HTML file |
--output FILE |
Custom output filename (default: FlightMemory_data.csv) |
--max-pages N |
Limit pages to scrape (web mode only) |
--show-password |
Show password as you type instead of masking |
The script generates a CSV file prefixed with the current date (e.g., 2025-09-12_FlightMemory_data.csv) with these columns:
| Column | Description |
|---|---|
| Count | Sequential flight number from FlightMemory |
| Departure Date | ISO format (YYYY-MM-DD) |
| Departure Time | Local departure time |
| Arrival Date | ISO format, adjusted for overnight flights |
| Arrival Time | Local arrival time |
| Departure Code | IATA airport code |
| Departure City | City name |
| Departure Country | Country name |
| Departure Airport | Full airport name |
| Arrival Code | IATA airport code |
| Arrival City | City name |
| Arrival Country | Country name |
| Arrival Airport | Full airport name |
| Flight # | Flight number |
| Airline | Airline name |
| Aircraft Type | Aircraft model |
| Registration | Aircraft registration |
| Distance | Flight distance |
| Duration | Flight duration |
| Seat Number | Seat assignment |
| Seat Type | Window/Aisle/Middle |
| Class | Cabin class |
| Role | Passenger role |
| Reason | Travel reason |
| Journey | Journey grouping name |
| Comment | User-entered notes |
FlightMemory displays flight data in paginated HTML tables. The script:
- Authenticates (web mode) via POST to FlightMemory's login endpoint
- Fetches pages using the
dbpospagination parameter (50 flights per page) - Parses HTML tables using BeautifulSoup, identifying flight rows by
valign="top"and journey headers byJourney:markers - Deduplicates flights using a composite key of date, time, airports, airline, and flight number
- Writes CSV with all extracted fields
- Date format: The parser assumes US-style dates (MM-DD-YYYY), the FlightMemory default for English accounts. If your FlightMemory account is set to a different date format (e.g., DD-MM-YYYY), dates may be parsed incorrectly. Auto-detection or a format flag may be added in the future — PRs welcome.
- English interface: Login verification checks for the flight data table itself, but end-of-data detection, some error messages, and journey grouping (matched by the English "Journey:" label) rely on English text from FlightMemory's pages. If your account is set to another language, some features may not work correctly.
This project is an independent, unofficial tool. It is not affiliated with, endorsed by, or in any way associated with FlightMemory.com or Heret Informatik Service. "FlightMemory" is a trademark of its respective owner. This tool is intended for personal use to export your own flight data.
Contributions are welcome! If you hit a parsing issue, please open an issue and include a snippet of the offending HTML (with personal data removed). Pull requests for bug fixes and improvements are appreciated — for larger changes, please open an issue first to discuss.