Shopify Collections — Category Map of Any Store
Pricing
from $2.10 / 1,000 collections
Shopify Collections — Category Map of Any Store
List every collection a Shopify store publishes, with how many products sit in it and how recently it was merchandised. One row per collection, ready for a spreadsheet.
Pricing
from $2.10 / 1,000 collections
Rating
0.0
(0)
Developer
tidyfeed
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
How does this brand organise what it sells?
Every collection a Shopify store publishes, with how big it is and how recently it was merchandised. One row each, biggest first. It is the fastest way to read a competitor's category structure without clicking through their navigation.
No API key. No login. No Shopify partner account. No proxies.
The number nobody else checks
Shopify publishes a products_count on every collection. It is not the number of products the store actually publishes, and it is not close.
Measured 2 September 2026, cross-checked against each store's own sitemap:
| Store | "All Products" collection reports | Store actually publishes | Sitemap agrees |
|---|---|---|---|
| deathwishcoffee.com | 1,281 | 150 | 149 |
| allbirds.com | 4,143 | 293 | 293 |
Every tool that pipes products_count straight into a column called "products" is handing you a number that is wrong by 8x on one of those stores and 14x on the other.
So this actor does two things. It passes Shopify's figure through under the name productsCountReported, which says what it is. And it offers Count the products for real — switch it on and the actor opens every collection and counts what the public feed returns, in a separate productsCountVerified column.
What you get
One row per collection:
| Column | What it is |
|---|---|
collectionTitle | What shoppers see |
handle | The address it lives at — /collections/<handle> |
collectionUrl | Full link |
productsCountReported | Shopify's own figure. Often inflated — see above |
productsCountVerified | What the feed really returns. Only when you ask for it |
daysSinceUpdated | How long since the store last changed this collection |
updatedAt, publishedAt | The raw dates |
imageUrl | Collection image, if any |
description | Optional, as plain text |
daysSinceUpdated is the quiet workhorse. A store with 260 collections usually has forty that are live and two hundred that were abandoned after a campaign. This column separates them at a glance.
Typical uses
- Read a competitor's category tree in one screen instead of crawling their menu.
- Find the campaign collections. Sort by most recently merchandised and their current promotional push is at the top.
- Size an assortment honestly. Turn on verified counts and compare real catalog depth across brands.
- Find the collections worth scraping. Get the handles here, then feed them to
tidyfeed/shopify-best-sellers, which reads any collection in the store's own order.
Input
| Field | What it does |
|---|---|
storeUrls | Store addresses. Normal website addresses. |
minProductCount | Hide small and empty collections. Filters on the reported figure. Default 1. |
maxCollectionsPerStore | Upper limit per store. Large brands publish several hundred. Default 500. |
sortBy | Biggest first, most recently merchandised first, or A to Z. |
verifyProductCounts | Go and count what each collection really returns. Slower, and worth it. |
includeDescription | Add the description as plain text. |
What it costs
Billed per collection delivered. Collections filtered out by minProductCount are not charged. A store with no public feed returns nothing and costs nothing beyond the run start.
Verified counting adds requests and time, not price.
Platform usage is included. No proxies are needed, so there are no proxy costs.
How it works
Shopify serves a public collection list at /collections.json on every storefront. This actor walks it 250 at a time. With verification on, it then reads /collections/<handle>/products.json for each one and counts distinct products.
Headless storefronts are followed to their real shop. Brands running a custom front end answer /collections.json with a web page. This actor reads the shop address the site publishes in its own markup and continues there — mejuri.com resolves this way.
No HTML parsing means a theme change cannot break it.
Honest limits
productsCountReportedis Shopify's number, and it is frequently wrong. It is included because it is what the store publishes, under a name that says so. UseproductsCountVerifiedwhen the figure matters.- Verified counting stops at 5,000 products per collection. Rows that hit the ceiling are flagged with
verifiedCountCapped. - Collections hidden from the storefront do not appear. This reads what a store publishes, not its admin.
- A collection can report products and return none. Usually those products are not published to the online store. The verified count shows 0 rather than guessing.
- No product-level data is returned here — this is the map, not the territory. Use
tidyfeed/shopify-best-sellersfor a collection's contents in order, ortidyfeed/shopify-product-scraperfor a full catalog. - Password-protected and pre-launch stores return nothing, with a reason per store.
Scheduling
Merchandising moves in campaigns. Schedule it monthly against a competitor list and the diffs show you exactly when a brand restructured its categories or spun up a seasonal push.
Legal
This actor reads only data a Shopify store publishes publicly, at addresses the store itself serves to anyone. It collects no personal data, requires no login, and bypasses no access control. You remain responsible for how you use the exported data.
Questions, or a store that behaves oddly? Open an issue on the actor — issues are read and answered.