Methodology
Last updated: August 22, 2026
This page describes exactly how HomeGadgets collects, matches and publishes prices, including the parts that are incomplete. It is written against the code that is actually running, not against our intentions for it. Where the two differ, this page follows the code.
The short version: we track online retailer advertised prices from Canadian retailersâ own public product pages, we attach an offer to a product only when a manufacturer identifier says it belongs there, we rank by price and nothing else, and we would rather show you a gap than a guess.
Coverage, as measured right now
- Retailers counts distinct retailers that recorded an in-stock offer in the last 30 days, after removing retailers whose data we have deliberately parked. Stated exactly, that is: a distinct retailer with at least one offer priced above zero in CAD and flagged in stock, seen within the last 30 days.
- Brands counts brands with at least one product that passes the display gate. A product you can actually open. We hold rows for more brands than this; publishing that larger number would advertise pages nobody can reach. The figure above is rounded down to the nearest ten, so it understates rather than flatters.
- We currently track 20,000+ SKUs and display 12,000+ of them with a live in-stock offer you can open today, properly catalogued and verified. The gap between those two numbers is exactly the set of pages that would otherwise be dead ends, so we do not publish the larger one as if it were the smaller.
How often prices are checked
Prices are refreshed at least weekly.
An offer expires after 14 days. If a retailer has not re-confirmed an offer within 14 days, it stops counting toward âavailable at N retailersâ and stops rendering as a buy link.
We have real time price tools under development since all retailers update their prices continuously. If our information is wrong it is because the retailer changed its prices after we verified its offer. Always confirm on the retailerâs own page before buying.
How an offer is attached to a product
This is the part that makes a price comparison either trustworthy or worthless. If a comparison site attaches offers by product name, it will eventually put a 55-inch TVâs price on the 65-inch model, a lens kitâs price on the bare camera body, or a cyan ink cartridgeâs price on the magenta one, and every one of those errors looks completely normal on the page.
Our resolution order is: barcode, then exact manufacturer part number, then a short list of declared reformatting rules, then nothing. Concretely:
- 1. GTIN / UPC. When the retailer publishes a barcode, we validate its check digit and resolve on that. An exact barcode match outranks everything else. An invalid barcode is discarded, never stored.
- 2. Exact manufacturer part number. The manufacturerâs own published part number, compared exactly. An exact match always wins over any looser comparison, so a longer part number can never be absorbed into a shorter, different one.
- 3. Declared, guarded tolerances for how retailers reformat a part number. Retailers drop separators, add a regional packaging suffix, or append an internal lot code to a manufacturerâs part number. Rather than guess, we hold a written-down set of transformations, per-brand conventions where a brand uses a separator inconsistently in its own catalogue, and shared reformatting rules whose collision proofs are recorded, and apply them after exact matching has already failed. A brand with no declared convention is compared verbatim. These are the honest middle ground between âexact onlyâ and âclose enoughâ, and they are why the next point matters so much.
- 4. Ambiguity is a stop, not a tiebreak. Wherever an identifier resolves to more than one candidate product, we attach nothing. There is no âpick the most popular oneâ. On top of that, several specific traps are refused outright before any tolerance can fire: a screen-size mismatch on a TV, a bundle part number that would land on one of its components, and a natural-gas/propane pair where the fuel suffix was dropped. An unprovable match is not a match.
- 5. If an identifier was captured and matches nothing, we stop there. We do not fall back to comparing names. The correct outcome is a gap in our catalogue that a manufacturer pass later fills, not a price on the wrong product.
Variants and duplicate listings
A different manufacturer part number is a different product until a written per-brand rule proves otherwise. That is the whole variant policy, and everything else follows from it:
- Never merged: colour, capacity, screen size, gas type, mount, generation, and bundles or kits. These are different things to buy at different prices.
- Merged only when declared: a regional or carrier-locale suffix, and only where a per-brand rule states that this specific suffix is region-only for that brand.
- Gas ranges and cooktops: where a model exists in both natural-gas and propane versions and a retailer has dropped the fuel suffix, we quarantine the listing instead of guessing. A propane price shown on a natural-gas appliance is a confidently wrong answer, which is worse than a missing one.
The same discipline runs the other way. When two of our own product records turn out to be the same manufacturer part number, they are merged and their offers re-pointed, so a single product does not appear twice with half its offers each.
Open-box, refurbished and marketplace offers
The main price table contains new items sold by the retailer itself, and nothing else. That is the comparison, and it is the only thing that can set the best price we show.
- Two independent tests decide the table an offer lands in: is it new, and is the retailer itself the seller? Both must be true for the main table. A marketplace seller can list a brand-new item and a retailer can sell an open-box unit directly, so keying on only one of those would misfile both.
- Open-box, refurbished, used and third-party-marketplace offers appear in a separate, labelled table below the main one, each tagged with what it is. Marketplace offers are off by default.
- They are never eligible for the headline price, the price range, or the deal score. That restriction lives in the same file as the table split, so the price basis cannot drift away from what you see.
- The test fails closed: any offer whose condition is not literally ânewâ, including one we cannot classify, is pushed to the second table, never promoted into the first.
- The structured data we publish for search engines carries the real condition per offer, so a refurbished unit is never described to Google as new.
Availability, and where we are uncertain
We store four availability states, not two: in stock, out of stock, special order (orderable, not on hand), and call for pricing (a real product behind a quote or minimum-advertised-price gate). Collapsing those four into a yes/no would misrepresent a large part of the appliance market, where âships in 4â8 weeksâ is a normal, buyable state.
The rule we want everywhere is to read the retailerâs own published purchase state from the product page: orderable language wins first, explicit unavailable language next, then a working add-to-cart control. A disabled cart button reads as out of stock; a priced product with a quote form instead of a cart reads as special order, not as unavailable, because some retailers legitimately sell without a cart at all.
Where we are uncertain, stated plainly:
- Not every collector reads the pageâs own stock signal yet. That shared rule is a gated standard for new collectors, but 72 older collectors sit on a recorded exemption list for exactly this check (measured 12 August 2026). They set availability from something weaker than the pageâs own purchase control. The list is allowed only to shrink: a collector removed from it cannot be added back, and a new collector cannot join it at all. Until a given collector is converted, read its âin stockâ as âthis retailer listed the product and did not say otherwiseâ.
- We do not hide a product because we are unsure. Hiding it would silently shrink the comparison and you would never know a retailer was missing. Instead: an individual offer whose availability we could not normalise is not rendered at all, and the product stays visible as long as some other retailer confirmed it.
- We do not let uncertainty set a price. A headline price can only come from an offer that is first-party, new, explicitly in stock, and carries a real positive number. Out-of-stock, special-order and call-for-pricing offers are shown and labelled but never priced as the best offer.
When a product goes out of stock everywhere, we do not delete the page. It stays online, states the date it went out of stock, and shows no price and no buy button, for 90 days on major appliances and 45 days on electronics, because appliances restock slowly. A product that has not returned by then is retired, and its address returns a permanent âgoneâ response rather than pretending to be a page that might come back.
Canadian dollars only
Every price on this site is a Canadian-dollar price quoted by a Canadian storefront. We do not convert currencies, we do not apply an exchange rate, and we do not show US prices. A converted price is not a price you can pay, and it goes stale the moment the rate moves.
This needs an active guard rather than good intentions. Some manufacturersâ âCanadianâ storefronts actually quote US dollars, and because a price is stored as a plain number, a US figure would silently become a Canadian one. Rows from storefronts confirmed to quote in USD are dropped at the single point every collector writes through, for every collector, automatically, and the drop is logged. A storefront is added to that list only once its currency is confirmed, and removed only when it ships a genuine Canadian-dollar price.
Prices exclude taxes and shipping.
Ranking and independence
Offers are sorted by price, with ties broken alphabetically by retailer name. Nothing else enters the ordering, not commission, not a commercial relationship, not traffic. Some outbound links earn a referral commission, and that has no effect on which retailer is shown first, on the best-price calculation, or on what the on-site AI assistant says. We are not owned by, and do not act for, any retailer or manufacturer.
Corrections
If a price, a specification, or a product match on this site is wrong, tell us and we will fix the collector, not just the row. A wrong row that we patch without finding the cause comes back on the next run. Use the bug report form or contact us. Our standing statement on what the site and the AI assistant can and cannot do is on the limitations page.
* We continuously add and update this roster adding more retailers, products and brands. The three figures above are read from a single measurement, taken against our own database and shared by every page on this site that states a coverage number, so they cannot disagree with one another.