Shopify hub

Shopify Collections API

Every collection on a storefront, as summary rows with cursor paging.

GET /v1/shopify/collections

1 credit Failed requests are free

About this endpoint

GET /v1/shopify/collections?store=… returns data.collections, each with id, gid, handle, title, url, description, descriptionHtml, seo, image, updatedAt and productsCount.

productsCount is filled only when the store's collection route answered for that row, so it can be null. Use limit and cursor to page through the list.

Shopify Collections API FAQ

Why is productsCount null?

The count comes from the store's collection summary route. When that route does not answer for a row, productsCount is null instead of an invented number.

Can I get the products in a collection?

Yes. Use GET /v1/shopify/collections/{handle}/products, which also returns the collection's filter facets.

How do I page?

Read page.hasMore and pass page.nextCursor back as cursor with the same filters.

How do I name the store?

The store is the domain, for example allbirds.com, www.allbirds.com or weareallbirds.myshopify.com. A full URL is reduced to its host.

How is it billed?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.

What does lookupStatus mean?

found means the lookup succeeded. not_found means the store or entity does not exist or is not a Shopify store. private means the storefront is password-protected. restricted means it is paused or frozen. HTTP 200 only means the request finished, so branch on lookupStatus.