The /products.json Trick: See Any Shopify Store's Full Catalog
Here's one of the most useful open secrets in e-commerce: every Shopify storefront serves its product catalog as structured JSON, publicly, by design. No API key, no login, no scraping tools. If you compete with Shopify stores — or research a niche before entering it — this is the single highest-leverage trick you can learn, and it takes thirty seconds.
The trick itself
Take any Shopify store's URL and append /products.json:
https://any-shopify-store.com/products.json
Open it in your browser. You'll see the store's products as JSON — the same catalog data their storefront theme renders into pretty pages. By default you get 30 products; bump it with a parameter:
https://any-shopify-store.com/products.json?limit=250&page=2
limit maxes out at 250 per page, and page lets you walk through the whole catalog. A store with 900 products is four requests.
What's inside (and why it's gold)
Each product object contains, among other fields:
title,handle(the URL slug),product_type,vendor,tagspublished_atandcreated_at— when the product went live. Sort by this and you see their launch history and cadence.variants[]— every size/color with its ownprice,compare_at_price(the crossed-out "was" price — so you can spot fake discounts), andavailable(in stock or not)images[]— product photography, including update timestamps
Translated into competitive questions this answers:
- What do they charge? Exact prices per variant, not eyeballed from a page.
- What's on sale?
compare_at_pricehigher thanprice= active discount. - What's sold out?
available: falseacross variants. A sold-out bestseller at your competitor is your sales window. - What did they just launch? New
published_atdates you haven't seen before. - How big is their assortment, really? Page through and count.
Two useful variants of the endpoint
Per-collection catalogs
https://store.com/collections/best-sellers/products.json
If the store maintains a "best sellers" or "new arrivals" collection, this hands you their own curation — you're reading what they consider their top products.
Single product detail
https://store.com/products/product-handle.json
Everything about one product, useful when you only track a few head-to-head items.
A minimal price-diff script
For the technically inclined: snapshot the catalog daily and diff. Here's the idea in ~20 lines of PHP (the same logic works in any language):
$url = 'https://competitor.com/products.json?limit=250';
$data = json_decode(file_get_contents($url), true);
$today = [];
foreach ($data['products'] as $p) {
foreach ($p['variants'] as $v) {
$today[$p['handle'].'|'.$v['title']] = [
'price' => $v['price'],
'available' => $v['available'],
];
}
}
$yesterday = json_decode(@file_get_contents('snapshot.json'), true) ?: [];
foreach ($today as $key => $now) {
$was = $yesterday[$key] ?? null;
if ($was && $was['price'] !== $now['price'])
echo "PRICE $key: {$was['price']} -> {$now['price']}\n";
if ($was && $was['available'] && !$now['available'])
echo "SOLD OUT $key\n";
}
file_put_contents('snapshot.json', json_encode($today));
Run it on a daily cron, pipe the output to email, and you've built a tiny competitor radar. This is genuinely how far a free DIY solution gets you — and for one or two competitors it might be all you need.
The limits (read before you build a business on it)
- Shopify only. WooCommerce, BigCommerce, custom platforms — different story, usually requiring real page parsing.
- No inventory counts. You see in-stock / out-of-stock per variant, not "17 units left."
- No sales data. You see the catalog, not their revenue. (Though launch cadence + sold-out patterns tell you more than you'd think.)
- Store owners can't disable it easily — it's part of how Shopify themes work — but a few stores put their catalog behind password gates (pre-launch mode), where this won't work.
- Be polite. A few requests a day is normal visitor behavior. Hammering the endpoint every minute is how you get your IP blocked and give the technique a bad name.
From trick to system
The trick gives you the data. The value comes from the diffing over time: what changed, when, and a notification you actually see. That means snapshots, storage, comparison logic, alert delivery, and handling the boring edge cases (variants renamed, products deleted, pagination). It's a fun weekend project — we'd know, because that weekend project is how StoreSentry started.
Want this automated?
StoreSentry runs the snapshots, does the diffing, and sends you a clean digest — price changes, new launches, restocks and sellouts across all your competitors. Email or Telegram. Free plan for 1 competitor.
Install the beta — free for 1 competitor →