List collections, or one collection's products
See how a store organizes its catalog, or read one of those groups. Without collection, this returns the store's collections with their titles, handles, descriptions, images and product counts. With a collection URL or handle, it returns that collection's products in the same full shape /products returns. Both forms page with pages and cursor. A collection's reported productCount is the store's own number and can exceed what the collection actually returns.
/collections Catalog https://api.fetchlayer.dev/shopify-stores/collections Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
store string required Store domain, or any URL on the store — for example example.com, https://example.com/products/foo, or a myshopify.com domain.
collection string optional Collection URL or handle. Omit to list the store's collections; supply it to get that collection's products.
limit number optional Maximum items returned (max 2000), or -1 for everything available. (default: 30)
pages number optional Pages of results to collect in one request (max 40), or -1 for the maximum allowed. Each page counts as one request.
cursor string optional Resume from a previous response's nextCursor.
format string optional json or markdown. Markdown returns the same result rendered for a model to read. (default: json)
timeoutMs number optional Per-request time limit in milliseconds (max 120000).
Response Fields
collections
List collections, or one collection's products
requestedUrl string The store URL this result corresponds to.
scrapedAt string When the store was read, as an ISO timestamp.
transport string Always shopify-storefront — the upstream source this data came from.
notes string[] Caveats about this specific result: a truncated walk, an upstream limit, or a field this store does not publish. Read it before treating a result as complete.
pagesScraped number Pages actually collected. Each page counts as one request against your plan.
pagesRequested number Pages the request asked for.
nextCursor string Pass back as cursor to continue, or null when the listing is exhausted.
hasNextPage boolean Whether more results are available beyond this response.
resultType string Always collection-list.
domain string The store the result came from.
collections object[] The store's collections, each with id, handle, title, collectionUrl, description, descriptionHtml, imageUrl, productCount and timestamps. Empty when one collection was requested.
collectionCount number Number of collections in this response.
collection object The collection the products below belong to, when one was requested. Null when listing collections.
products object[] The products, in the order the store publishes them.
products[].id string The product's id on the store.
products[].handle string The product's identifier in its store URL — what product-detail takes.
products[].title string Product title.
products[].productUrl string Canonical product page URL on the store.
products[].vendor string Vendor or brand the store attributes the product to.
products[].productType string The store's own product type for this item.
products[].tags string[] Merchandising tags, often the store's internal taxonomy.
products[].description string Description as plain text; descriptionHtml carries the original markup.
products[].publishedAt string When the product was published, and createdAt / updatedAt alongside it.
products[].images object[] Every image, each with url, downloadUrl, width, height, position, altText and the variants it belongs to.
products[].options object[] The choices a buyer makes — for example Size and the sizes available.
products[].variants object[] Every buyable version, with price, compareAtPrice, sku, barcode, optionValues, grams, requiresShipping, taxable and available.
products[].variants[].inventoryQuantity number Units on hand. Published only by product-detail, and only by stores that track inventory.
products[].variantsTruncated boolean True when the product has more variants than the store publishes; the first 250 are returned.
products[].priceMin string Lowest variant price, with priceMax and currency alongside it.
products[].available boolean True when at least one variant can be bought.
products[].onSale boolean True when at least one variant carries a compareAtPrice above its price.
productCount number Number of products in this response. Zero when listing the store's collections.
Request
curl -X POST "https://api.fetchlayer.dev/shopify-stores/collections" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"store":"allbirds.com","collection":"mens-shoes","limit":100}'Response
{
"resultType": "collection-list",
"domain": "allbirds.com",
"collections": [],
"collectionCount": 0,
"collection": {
"handle": "mens-shoes",
"title": "Men's Shoes",
"productCount": 64
},
"productCount": 64,
"hasNextPage": false,
"nextCursor": null,
"notes": []
}