A store’s home page rarely tells you how big its catalog is. Collection pages show 24 or 48 products at a time, some stores hide the “All products” page, and a single product can come in dozens of sizes and colours. If you want a real number, for a competitor, a supplier or a client audit, you need the whole public product list in one place and a count of it.

Count it by hand

There are two manual ways, and both get tedious on anything bigger than a small shop:

  • The collection pages. Open /collections/all on the store, count the products on one page, and multiply by the number of pages. It only works if the store hasn’t hidden or customised that page, and the last page is usually partial.
  • The public product list. Most Shopify stores publish their catalog at /products.json, up to 250 products per page. You can step through ?limit=250&page=1, page=2 and so on until a page comes back empty, then add the pages up. It is a lot of raw JSON to scroll through, and it doesn’t give you the variant count without more work. See what the products.json endpoint is.

Let the export do the counting

CatalogCSV pages through the catalog 250 products at a time and counts as it goes. While it runs, the popup shows the running total (“Page 3 — 750 products found…”, for example). When it finishes on the free plan, the last line tells you the store’s real total, for example Done — downloaded 100 of 1240 products (free limit). The free export trims the file to the first 100 products, but it still reads the whole catalog so the count is accurate. If you only want the number, the free version is enough.

With the whole catalog in the file (a store under 100 products, or a Pro license), you can count much more than the total:

  • Products vs. variants. The Variant rows format has one row per variant, so the number of data rows is the variant count. The number of distinct values in the product_id column is the product count. In Google Sheets or Excel 365, =COUNTA(UNIQUE(J2:J5000)) on the product_id column gives it in one cell.
  • Products per brand or category. A pivot table on vendor or product_type, counting distinct product_id, shows how the catalog is split. See finding every vendor.
  • How much of it is in stock. The available column says true or false for every variant. Filter on false to see how much of the range is currently sold out.
  • How many photos. image_count gives the number of images per product, which adds up quickly if you are planning a migration.

What a count can and can’t see

The number is the size of the store’s public catalog at the moment you click. A few things to keep in mind before you quote it:

  • Only publicly listed products count. Drafts, archived products and products the store hasn’t published to its online store aren’t in the public list, so they aren’t in the count.
  • Stores that hide their product list. Some stores block the public list. CatalogCSV then tries the store’s collection pages or the product pages listed in its sitemap, and the popup says which. In the sitemap mode the popup tells you, before you export, how many product pages the sitemap lists; that is the best count available, but a sitemap isn’t always the whole catalog. That mode is also slower, and a free export stops reading once it has 100 products.
  • Bot checks and passwords. CatalogCSV can’t read a store while it is running a bot check, and a password-protected store needs its password entered on the page first.
  • No sales or inventory numbers. The count tells you how many products a store offers, not how many it sells. CatalogCSV doesn’t estimate sales, and the public list has no stock quantities, only in-stock or sold out per variant.

Counting several stores

The free limit applies per export, not per account (there is no account). You can open five competitors one after another and the popup will tell you each store’s total. That is often all you need to answer “how big is this store compared with mine?” When you want the full sheets to compare side by side, that is where a Pro license comes in: $9 a month or $79 a year, with unlimited products per export.

Each export is a snapshot. If you count the same store again next month, the difference tells you roughly how many products it added or removed, and comparing the two files by product_id tells you exactly which ones.