Building a price tracker looks like a weekend project: fetch a page, find the price, save it, email yourself when it changes. The first version usually works the same afternoon. The interesting part is everything that happens afterwards, when the pages fight back.
What a price tracker actually consists of
- A fetcher. Something that downloads the competitor's product page on a schedule, with realistic headers and sensible retries.
- A parser. Code that extracts the price from the HTML — ideally from structured data rather than a CSS class that changes on every redesign.
- Storage. One row per check, so you keep history rather than just today's number.
- A scheduler. A cron job that runs the checks hourly or daily and does not silently die.
- Alerts. An email or message when a price crosses a threshold you care about.
The reliable way to read a price
Most serious ecommerce pages publish machine-readable product data in a application/ld+json block (schema.org Product with an offers.price field), or in Open Graph tags such as og:price:amount. Read those first and fall back to visible HTML only when they are missing. Structured data survives redesigns; a class name like .price--large does not.
Then normalise: strip currency symbols, handle both 1,299.00 and1.299,00, and store the currency separately. A tracker that silently records 1.29 instead of 1,290 is worse than no tracker.
Where DIY trackers break
- JavaScript-rendered prices. The number is not in the HTML at all, so you need a headless browser — which is heavier, slower, and more expensive to run.
- Bot protection. Datacenter IPs get 403s and challenge pages. Residential proxies solve it and cost more than most monitoring subscriptions.
- Silent failure. The worst outcome is not a crash, it is a parser that returns the old price forever. Alert on "no successful check in 24 hours", not only on price changes.
- Maintenance. Every competitor redesign is a small ticket for you, forever.
Be a polite scraper
Check once an hour at most, respect robots.txt, identify yourself in the user agent, and never hammer a site in parallel. Public price data is generally fine to read; behaving like a denial-of-service attack is not.
Build or buy?
Build it if the tracking logic is part of your product, or if you enjoy the maintenance. Buy it if you just want the number. A hosted tool like Prizeee is the same five components, already maintained: paste a product URL, get history and an email when the price moves, from €2.99 a month with a 7-day free trial.
Related: how price monitoring software works and monitoring competitor prices automatically.