Every Shopify store publishes its catalogue. Here is what that genuinely tells you, what it does not, and which "competitor intelligence" claims to walk away from.
Every Shopify storefront serves /products.json without authentication. This is not an
oversight or a leak — it is a platform feature, so that themes, apps and integrations can read a
catalogue. It returns, per product:
You can read it in a browser. Our store viewer just reads it for you and summarises the result.
Shopify records a markdown as a compare-at price above the live price. That gives you each product's actual discount, and across a catalogue it gives you the store's discounting posture.
Two brands can look identical on their homepages while one has 48% of its catalogue marked down at an average of 50% off, and the other has none. That difference tells you which one is defending margin and which one is clearing inventory — and it is checkable in seconds.
Availability is exposed per variant. A product where most sizes are unavailable has been selling. A product fully in stock three months after launch has not.
This is the closest thing to sales data that is legitimately public. It is directional, not exact — but a competitor's sold-out list is a strong signal about what their customers actually buy.
The distribution of product types shows where a brand is really investing, which is often not what their marketing suggests. A store positioning itself as an apparel brand whose catalogue is 70% accessories is telling you something about its margins.
published_at tells you when each product went live. Sort by it and you have a competitor's
release calendar: how often they drop, how big each drop is, and whether new products arrive discounted
(a sign of overproduction) or at full price.
Be sceptical of tools claiming otherwise:
| Claim | Reality |
|---|---|
| "See their exact inventory" | Shopify exposes availability as yes/no per variant. Exact counts are not public. Any number shown is invented. |
| "See their monthly revenue" | Not public. Estimates come from traffic models multiplied by assumed conversion and basket size — three guesses stacked. |
| "See their best sellers" | Not published. Stock-outs are a proxy, and a decent one, but they are not a sales rank. |
| "See their supplier" | Not in this data. The vendor field is whatever the merchant typed, usually their own brand name. |
One lookup is a photograph. The value is in the comparison.
Pull five stores in your category and line up median price, discount rate and stock-out rate. You will usually find the market splits into two or three price tiers with a visible gap — and gaps are where positioning opportunities live.
The same store, read weekly, gives you what a single snapshot cannot:
published_at since your last readThis is where doing it by hand stops working. Reading five competitors weekly is 260 lookups a year, and comparing them by eye is not a job anyone does twice. That is the point at which it should be a scheduled job that emails you only the differences — which is what the automated monitor version of this tool does.
Reading a public endpoint that a platform serves deliberately is ordinary competitive research — the same information any shopper could gather by browsing, just faster. A few lines worth holding to:
Prices, discounts, stock-outs and assortment for any Shopify store, free.
Open the store viewer →Expand their category terms into the long-tail queries their customers actually type.
Open the keyword generator →