Methodology
How price tracking actually works
The methodology behind every price you see — hourly scrapes, 90-day history, and why the 'was' prices on retailer sites can be misleading.
Noah Bennett
April 24, 2026·4 min read
When you see a price on Gearfinch, it's the result of a small, boring loop running in the background since the moment we started tracking that brand. This post is about exactly what that loop does — and why it gives you a more honest picture than what you'd see on the brand's own site.
The scrape cadence
Every active brand we track gets visited on a fixed schedule. For most brands that's every three hours from a residential IP; for the ones that respond well to standard requests, every hour. Each visit records, for every product:
- the current price
- the current "compare-at" price (the brand's own claim of what it used to cost)
- per-variant stock and size availability
- the URL and image, in case anything moved
Every observation is written to a time-series table. We never overwrite the previous reading. After a month, a single product has hundreds of rows; after three months, thousands. Disk is cheap. Throwing away history would be expensive.
[Screenshot: a real product's 90-day chart will land here next deploy — Sofia is curating which one to feature.]
What counts as a deal
This is where most "deal" sites get it wrong, on purpose.
A typical deal site looks at the brand's compare-at price (the strikethrough number on their site) and computes a discount from that. Brands know this. Brands also know that the compare-at price is, legally, a number they can mostly choose. So the strikethrough number on a popular pair of leggings can stay inflated for months, year-round, regardless of what the actual price has been.
We don't trust the strikethrough. We compute our own.
For each product, we ask one question: is today's price meaningfully lower than the typical price over the last 90 days? If today is at or below the lowest we've recorded in three months — and the discount versus the brand's own compare-at is at least 15% — we call it a deal. Otherwise we don't.
That's why the deals you see on Gearfinch are sparser than on most other sites. We're filtering out the noise that other sites publish as headlines.
Why the "was" price can lie
Here's a concrete example. A brand might list a sports bra at $58 with a strikethrough at $72 — a "20% off" badge plastered on top. That looks great. But our tracker has watched that bra sit at $58 for six straight weeks, and the $72 hasn't been observed at any point in 90 days. The "20% off" is theater.
A different bra might list at $48 with no strikethrough, no badge, no urgency, looking quietly unremarkable on the brand's site. But our tracker shows it has spent the last 90 days at $58 — today is the lowest price we've ever recorded for it. That one we'd flag as a deal. The first one, we wouldn't.
What we don't do
We don't FX-convert prices between markets. If you're shopping from France, you see the euro price the brand actually charges French customers, not a USD price multiplied by today's exchange rate. Different markets often have genuinely different prices that don't follow exchange rates — Shopify Markets, retailer-specific tax handling, regional inventory all play in. Showing a converted number would be a guess dressed up as a fact.
We also don't claim to have data we don't have. A new brand we just added has a thin history; the price chart looks anemic until we've watched it for a few weeks. Where the data is thin we say so, in plain English, instead of inventing a fake history line to keep the page looking busy.
What's next
The data we're collecting now is the input for several features we'll ship over the next few months: real dupe matching across brands, brand-specific sale calendars, automated alerts when a watched product drops to its 90-day low. None of those work without a long memory, and that memory takes time to grow.
In the meantime — the deals we're surfacing right now are the ones our 90-day check has cleared. If you ever see one that doesn't look right, email us. We treat every report as a bug.
— Noah