I booked a round-trip Delta flight to visit family in late 2023. About two weeks before the trip, I randomly checked the same route and it was $140 cheaper. Delta lets you rebook at the lower price and keep the difference as an eCredit, so I rebooked and pocketed the savings. Then I thought: how many times has this happened on flights where I did not bother to check?
The answer, statistically, is a lot. Domestic airfares fluctuate constantly, and prices after booking drop more often than most people realize. The problem is that nobody checks consistently. You book, you move on, and whatever happens to the price after that is invisible to you.
The First Version
The initial idea was dead simple. A script that opens Delta.com, searches for my specific flight, reads the price, and compares it to what I paid. If it is lower, send me an email. Run it once a day. That is it.
The reality was more complicated. Delta.com is not a static page. It loads dynamically, the layout changes based on your search parameters, and the prices can take several seconds to appear depending on route complexity. A basic HTTP request would not work. I needed a real browser running in the background.
I ended up using Playwright for browser automation. The script launches a headless Chromium instance, navigates to Delta.com, fills in the search form, waits for results, and scrapes the price. It also takes a full-page screenshot at every step, which turned out to be one of the most useful features. When you contact Delta about a price difference, having a timestamped screenshot of the lower fare is much more convincing than saying "I saw it was cheaper."
Avoiding Detection
Airline websites do not love automated scrapers. Run too many searches too fast and you will get blocked, CAPTCHAed, or served different prices. I dealt with this in a few ways:
- Randomized timing. Checks run between 3 and 5 AM local time, with random delays between flights. No two consecutive checks happen at the same minute.
- One flight at a time. Each flight gets its own search session with a full browser restart between them. No parallel requests.
- 8-flight cap. The tracker limits you to 8 active flights. A full cycle of 8 checks takes about 2.5 hours. This keeps the request volume well within what a normal person would generate.
- User agent rotation and standard browser fingerprint settings so the requests look like normal desktop browsing.
This is conservative on purpose. I would rather miss a price drop by a few hours than get my IP flagged. The tracker checks once per day, and that is plenty. Airfare changes are not minute-by-minute events for most routes.
Cash and Miles Tracking
Delta flights can be purchased with dollars or SkyMiles, and the two prices move independently. A flight might drop $50 in cash but go up 3,000 miles, or vice versa. The tracker monitors both and alerts you based on whichever threshold you set. Some people only care about cash savings. Others are trying to find the best miles redemption value. The tracker handles both.
The Savings Log
When you get an alert and rebook at the lower price, you can log the actual savings in the app. Over time, this builds a record of how much money the tracker has saved you. It sounds like a small thing, but it is surprisingly motivating. Seeing "$430 saved across 6 flights" makes you want to keep every future trip monitored.
Installation Decisions
The biggest design question was whether this should be a web app or a desktop app. I went with desktop for a few reasons. First, running a headless browser on a server to scrape Delta.com for potentially thousands of users would be expensive and likely get the server IP banned quickly. Second, keeping it local means your login session and cookies stay on your machine. Third, desktop apps can run on a schedule in the background without you needing to keep a browser tab open.
On Windows it is a packaged EXE that installs to the system tray. On Mac it runs as a Terminal-based script with a launcher. Both handle all dependencies on first run. I spent a lot of time making the setup as close to "download and double-click" as possible, because the target audience is frequent travelers, not developers.
What is Next
I have been exploring support for other airlines, but each one has a completely different site structure, rate limiting behavior, and rebooking policy. United is the most requested, and their price protection policy is similar to Delta's. The Amazon Price Tracker uses a similar architecture (local scraping, email alerts, SQLite storage), so the pattern is proven. It is just a matter of building reliable parsers for each airline.
For now, the tracker does one thing well: it watches your Delta flights and tells you when to rebook. That is enough to pay for itself on a single trip.