Skip to prices

How we verify prices

Every number on this site is either something we watched a retailer charge or nothing at all. This page is the full method, including the cases where we refuse to show you a price.

Where the number comes from

Every price on the site today comes from Amazon, through the Amazon Creators API and never from crawling. It is the price Amazon offers a logged-out shopper in the United States — not a member price, not a cart-only price, not a price we typed in by hand. The Associates operating agreement forbids displaying hand-entered or scraped Amazon prices, and the older Product Advertising API v5 is deprecated and answers our requests with HTTP 403. If the Creators API has no price for an item, that item shows no Amazon price. It does not get an estimate.

We also built a crawler for Walmart, Target, Best Buy and Newegg, and it is switched off. On none of the four served a price it could read: Walmart answered with a bot check, Best Buy did not answer at all, and Target and Newegg draw the price with script rather than publishing it in the page. A retailer is added back only through its own API, and only then does it appear here.

How often it is re-checked

Amazon prices are re-read every six hours. Each card shows the exact timestamp of the check behind its number, so you never have to guess how old it is.

Amazon
A cached price may be displayed for 24 hours. That is the cap in Amazon’s IP license, not a preference of ours.

Past that window we hide the number and the card says “check price” instead. A stale price shown confidently is worse than no price: it sends you to a checkout expecting a figure that is not there.

How the “was” price is established

Not from the retailer’s claim. The strikethrough on a card is the highest price we recorded for that product at that retailer, and it appears only once we hold at least 10 observations for that pair.

Below that threshold there is no strikethrough, no percentage and no chart. With four data points every product is trivially at its all-time low, and an instrument that lies once is never trusted again.

The other thing a record can tell you

History here is written only when a price moves, so a product with a single observation is ambiguous: it can mean we have barely started, or it can mean the price has not shifted once since we began watching. Those are opposite facts, and for a long time this site reported both as “not enough to call this”.

So there is a second rule, and it is measured in time rather than in changes. Once we have watched a price stand still for 14 days — every check reading the same number — the card says so: unchanged for 21 days. That is not a claim that the price is low. It is a claim that waiting is unlikely to change it, which is the other half of the question a shopper arrives with.

Two weeks is the floor because a promotion would have ended inside it and a repricing bot would have fired. Below that, “held for three days” is noise. A price we cannot re-confirm recently enough to publish makes no stability claim either — standing still is only meaningful while we are still looking.

How the discount is computed

Savings percentage is (was − now) ÷ was, floored to a whole number. 49.6% off is published as 49% off, never 50%. Rounding a discount up is the smallest possible lie and we do not have a reason to tell it. The minus sign is a true minus, not a hyphen, because the number is arithmetic and not decoration.

What the floor badge actually claims

Lowest in 90d means: the lowest price that one retailer has charged in the ninety-day window we have been watching. It does not mean lowest anywhere, and it does not mean lowest ever. The dashed line under a card is drawn from the same single-retailer series the badge reads, so the mark and the badge can never disagree — see the correction of 5 September 2026, which is exactly the bug that rule exists to prevent.

What we refuse to publish

  • Arithmetic impossibilities. A “list price” below the selling price, or a claimed discount of 95% or more, is never published in any form. The row is flagged and dropped.
  • Suspect list prices. When a retailer’s claimed original price sits above anything we have observed in ninety days, the deal is flagged suspect_list_price: the offer still appears, the strikethrough and the percentage do not.
  • Prices past their window. See the table above.

What “expired” means, and how fast we notice

A deal is expired when a re-check finds the offer gone or the price back above our recorded level. Because the re-check runs every six hours, the worst case between a deal dying and us marking it dead is six hours, not days.

An expired deal page returns HTTP 410 Gone rather than redirecting you to the homepage. The product hub at /p/ keeps the price history and stays up permanently — the deal was the event, the product is the record.

Who we do not track, and why

  • Membership-gated retailers such as warehouse clubs. The price behind a login is not the price a logged-out reader can act on, so we would be publishing a number most visitors cannot get.
  • Third-party marketplace listings. A price that belongs to an individual seller rather than the retailer is not a series — it disappears when that seller runs out, and a chart built from it describes nobody’s buying decision.
  • Any retailer whose price we could only obtain by breaking its terms. That is why Amazon is API-only here.

What we cannot yet tell you

Our price record begins . Where you see a short series, it is short because our record is short — not because the product is new. We would rather show you an honest ninety-day window than a two-year chart we did not watch.

Published , the day this site opened. Something here wrong or out of date? [email protected] — fixes get logged at /corrections.