Price Tracker
Problem
Watching a product's price over time usually means trusting a third-party service with subscriptions, accounts, and questions about who owns the data. I wanted private, autonomous price monitoring for arbitrary product URLs with no external dependency and no one else holding the history - but scraping real e-commerce pages is hard, because prices live in wildly different places in the markup and many sites sit behind bot protection.
Approach
Built a self-hosted FastAPI service where you submit a URL along with the current price and currency, and the system fingerprints where that price lives on the page and rechecks it daily on a randomized schedule. Reliability comes from two layered chains. An eight-stage fetch chain escalates through progressively heavier techniques - httpx, curl-cffi, a surf-proxy sidecar, Playwright, FlareSolverr, and undetected-chromedriver - to get past TLS fingerprinting and Cloudflare when a simple request fails. A six-stage extraction chain then locates the price by trying JSON-LD, OpenGraph, Microdata, inline script JSON, CSS selectors, and finally regex. APScheduler drives the randomized daily checks, prices are normalized across currencies via the Frankfurter API (cached daily), and an HTMX single-page dashboard charts history. Everything persists to local SQLite.
Outcome
A private price monitor with no authentication, no subscription, and minimal setup - just point it at a product page and it tracks the price on its own. The layered fetch and extraction chains make it resilient to the variety of markup and bot-protection schemes real stores use, and because all history lives in a local SQLite file, the data never leaves the machine.