Skip to the content
Agent Tools

Track a Shopify store's prices and stock from products.json: 3 real stores, measured daily

A Shopify store publishes its catalog at /products.json, and one request to /cart.json tells you whether a site runs Shopify. We read 3 stores from that feed every day. On 2026-10-08, allbirds.com listed 692 products, with 0 price changes and 10 stock changes since 2026-10-07.

By OpenKrill. Published . Updated .

The short answer

StoreProductsNewRemovedPrice changesStock changes
allbirds.com69200010
gymshark.com10,027 read6not counted0266
kyliecosmetics.com247tracked since 2026-10-08

Changes count from the snapshot of 2026-10-07 to the one of 2026-10-08. A stock change is one variant, such as a shoe size, going in or out of stock.

How to tell if a website is Shopify

Add /cart.json to the store's address. A store on a Shopify-hosted theme answers with a JSON cart, even an empty one, because Shopify serves the cart endpoints on every theme it hosts.

On 2026-10-08, www.allbirds.com and kyliecosmetics.com answered 200 with a JSON cart. Our own tools.openkrill.app answered 404.

The test misses one kind of store. Shopify's docs say the cart endpoints do not exist on a custom storefront, and www.gymshark.com answered 404, yet our tracker reads its product feed every day. So a 404 means "not a Shopify-hosted theme", not "not Shopify".

What products.json gives you, and what it does not

The feed lists each product with its title, type, vendor, variants, price and availability per variant. It returns up to 250 products a page with ?limit=250.

It has no stock counts, no sales and no past prices. One read shows what a store sells today; a price tracker has to read the feed every day and keep the snapshots itself.

That is what Store Price Tracker does. A store you ask about joins a daily snapshot list, and each answer reports new and removed products and price and stock changes since the day before.

Big catalogs, and why "removed" can read zero

gymshark.com is large: the tracker read 10,027 products and stopped at its page limit, so the store has at least that many.

On a partial read the tracker does not count removed products, because a missing product may sit on a page it did not fetch. That is why the removed cell reads "not counted". Price and stock changes still count for every product it read.

Reading feeds politely

The tracker checks robots.txt before it reads a store, names itself StorePriceTracker in every request, and backs off when a store answers 429. It reads public product data only: no cart, no checkout, no customer data.

Set it up from the Store Price Tracker install guide for Claude. More store tasks are on the page of tools for Shopify operators.

Try it: run the same check yourself with Store Price Tracker, with no key, or read every post on the Agent Tools blog.

Sources

Change log

We measure the numbers in this post again every 7 to 30 days and check that every source still loads. A new line appears here only when something in the post really changed.

  • 2026-10-08. Published. Why: First version, with the numbers we measured with our own tools on 2026-10-08.