How to Track a Competitor's Best-Sellers (Without Guessing)
Knowing a competitor's prices is useful. Knowing which of their products actually sell is more useful, and it's the question most small store owners really want answered. Which SKU carries their revenue? Which product did they bet on and quietly abandon? Should you stock the thing everyone in the niche is selling, or is it a shelf-warmer that only looks popular because it's on the homepage?
Start with the disappointing part: no public endpoint reports units sold. Shopify does not publish sales figures, and any tool claiming exact revenue for a store is modelling, not measuring. What is public is a set of signals that correlate with sales well enough to act on — and one of them is the merchant flatly telling you.
Signal 1: their own Best Sellers collection
Most stores have one, and most of them sort it using Shopify's built-in "Best selling" order — which Shopify computes from the store's real recent sales, not from the merchant's opinion. If a competitor has that collection, they are publishing a ranked list of their winners.
Find it the same way you'd find any collection. First, list them all:
https://theirstore.com/collections.json?limit=250
That returns every public collection with its handle, title, and products_count. Look for handles like best-sellers, bestsellers, best-selling, most-popular, staff-picks or fan-favorites. Then pull the products inside it:
https://theirstore.com/collections/best-sellers/products.json?limit=250
You get the same product objects as the store-wide /products.json — title, handle, variants, prices, availability — but only for that collection, and typically in the collection's configured order. The first item is usually their number one.
Two more caveats worth holding onto. A "Best Sellers" collection sorted manually is marketing: it shows what the merchant wants to sell, often the highest-margin item rather than the highest-volume one. And best-selling order reflects a recent window, so a product that sold hard last quarter and stalled will slide down over weeks rather than vanish. Both are fine — you just want to know which kind of list you're reading.
Signal 2: restock rhythm (the strongest one)
This is the signal that doesn't depend on the merchant's cooperation at all, and it's the reason to collect catalog snapshots over time rather than look once.
Every variant in the public catalog carries an available flag. Shopify strips the actual inventory count — you get in stock or out, never units remaining — but you don't need the count. You need the pattern:
- Sells out repeatedly, comes back within days or weeks. That's a product moving fast enough to outrun its reorder cycle. It is almost certainly a best-seller, whatever the collection page says.
- Sells out and stays out for months. Discontinued, or a supplier problem. Not a signal about demand either way.
- Never goes out of stock, never changes. Either a well-managed core product or a dead one. Cross-check with signals 3 and 4 to tell the difference.
- One variant sells out while its siblings don't. The most actionable version of this. If the 500ml sells out monthly and the 250ml never does, you've learned which size the market wants — and if you stock the same category, that's a purchasing decision you can make tomorrow.
The catch is obvious: a single snapshot tells you nothing here. You need the history. Two months of daily checks turns "they're out of stock today" into "this is the fourth time this quarter" — a completely different piece of information. It's also the same data that powers the stockout playbook, from the other side.
Signal 3: variant expansion
Nobody adds a fourth colourway to a product that isn't selling. Watch the variant array on each product over time:
- New sizes, colours or scents appearing on an existing product — the strongest voluntary vote a merchant makes. Investment follows revenue.
- Variants quietly disappearing — pruning the tail. That size didn't work.
- A new product sharing the title pattern of an old one ("Aurora Candle — Winter Edition") — they're extending a line that earns.
Variant changes are slow-moving compared to price and stock, which makes them easy to miss by eye and easy to catch with a diff. Pair this with launch timing — a competitor who releases a variant of the same product two quarters running has found something, and their launch cadence tells you when the next one lands.
Signal 4: what they refuse to discount
Look at compare_at_price across the catalog over a few months. Best-sellers get protected; slow movers get marked down. A product that sat at full price through Black Friday, a summer sale and a clearance push is a product the merchant knows will sell without help. A product that appears in every promotion is inventory they're trying to clear.
The inverse trap: a permanent compare_at_price that never moves isn't a discount at all, it's decoration — we pulled that pattern apart in spotting fake discounts. Only treat a markdown as a signal if the price actually changed.
The history is the hard part
StoreSentry snapshots competitor Shopify and WooCommerce catalogs on a schedule and alerts you when a price moves, a product launches, or something sells out — so restock patterns and variant changes accumulate on their own instead of needing you to remember to look.
Install the app — free for 2 competitors →Doing it free, this week
You don't need a tool to start, and we'd rather you prove the data is useful before paying anyone, us included.
- The ten-minute version. Open
/collections.json?limit=250for your three closest competitors, find their best-seller collections, and read the top ten of each. Do it once a month with a note in a document. This alone answers "what's working in my niche" better than most paid dashboards, because it's their own data. - The spreadsheet version. A Google Sheet with
IMPORTDATApointed at the collection JSON, one tab per competitor, refreshed on a schedule. Add a column for the date and append rather than overwrite — the appended rows are your history, and that's the whole point. - The self-hosted version. changedetection.io in JSON mode, or an n8n workflow doing an HTTP request plus a diff step, notifying Telegram. A few hours of setup, no monthly cost beyond hosting.
All three share one failure mode, and it's the honest reason people eventually pay for this: they work perfectly for three weeks and then you stop opening the sheet, or a rate limit trips, or a handle changes — and the monitoring stops without telling you it stopped. Silent failure, not capability, is what you're buying your way out of.
What none of this tells you
Be clear about the ceiling before you build a strategy on top of it.
- No units, no revenue. You get rankings and patterns, never numbers. "Their top three products" is knowable; "their top product does $40k/month" is a guess dressed as a fact.
- Wholesale and marketplace sales are invisible. A brand whose real business is 200 stockists will have a Shopify catalog that badly misrepresents what sells.
- Traffic isn't demand. A best-seller at a store doing 30 orders a week is a different animal from one at a store doing 3,000. Rank tells you their mix, not the market's size.
- Their winner may not be yours. Different audience, price point, shipping zone, brand story. Best-seller data is a hypothesis generator, not a purchase order — and it's most reliable when it's a genuine competitor rather than a store that merely sells similar things.
- Some stores publish nothing. Password-protected catalogs, headless builds and a handful of privacy settings all remove the JSON endpoints. Nothing to do about it.
The short version
Check whether each competitor publishes a best-seller collection and whether its order is real — that takes ten minutes and gives you their own ranking. Then start collecting daily catalog snapshots, because the durable signals are restock rhythm, variant expansion and markdown behaviour, and every one of them is a pattern across time rather than a fact you can read today. In two months you'll know which of their products carry the store. In one afternoon you'll only know which ones they'd like you to think do.