Methodology
How RangeWatch collects data and calculates verdicts.
Where price data comes from
RangeWatch collects prices directly from retailer websites. Each retailer is handled by a dedicated adapter that knows how that site exposes its catalog, pricing, and stock status. Adapters run on a schedule and capture each price as a point-in-time snapshot, so we keep a full history rather than only the current number.
Cadence varies by retailer based on catalog size, change rate, and rate limits. Most retailers are polled anywhere from hourly to daily. Higher-volume or fast-moving catalogs poll more often; slow-moving catalogs poll less. We do not source prices from user submissions, marketing feeds, or affiliate networks — only from the retailer's own public product pages.
How verdicts are calculated
Every in-stock offer is compared against the distribution of observed prices for the same canonical product over the trailing 30 days across all retailers we track. The position of the current price inside that distribution determines the verdict you see on cards and listings:
- At 30-day low — price is at or below the 10th percentile of the trailing 30-day window.
- Below market — price is between the 10th and 50th percentile.
- At market — price is between the 50th and 90th percentile.
- Above market — price is above the 90th percentile.
The 30-day window is a rolling lookback from the moment a card renders. It is long enough to smooth out single-day promos and short enough that genuine market shifts are reflected within about a month.
Why some products show no verdict
A verdict only appears when we have enough recent data to make an honest call. We require at least 20 price observations from at least 3 distinct retailers within the trailing 30-day window. Products that fall short are marked as having insufficient data rather than being scored against a thin sample. Brand-new SKUs and slow-moving items often sit in this state until coverage builds up.
How fresh is each price
The freshness timestamp on a card reflects time since the last successful scrape for that specific retailer-SKU pair — not the canonical product as a whole. If a price is past our staleness threshold, we suppress it from listings rather than show you an age that would mislead a buying decision. A missing offer is preferable to one we can no longer vouch for.
What's a canonical product
A canonical product is one real-world item rolled up across every retailer that carries it. We match offers using UPCs where available and a spec fingerprint — brand, model, caliber, capacity, and other identifying attributes — where UPCs are missing or unreliable. The range you see displayed as $X–$Y is the minimum and maximum across every in-stock offer currently aggregated under that canonical.
Questions about a specific verdict?
If a verdict looks wrong, email [email protected] with the canonical product URL and we'll investigate.