Skip to content

List Products

GET /cdp/commerce/products lists your brand’s Shopify product catalog through the CDP API. Products come from Shopify Admin GraphQL at request time, with a short read-through cache in front of Shopify. The response is normalized so your app does not depend on Shopify’s raw Admin API shape.

Requires the beta:cdp-commerce permission on your brand and a connected Shopify token that can read products — read_products, or write_products (which Shopify treats as granting read access).

GET /cdp/commerce/products
Authorization: Bearer vyg_...
ParamTypeDefaultDescription
limitinteger25Page size, clamped to a maximum of 100.
cursorstring-Shopify cursor from nextCursor on the previous page.
{
"list": [
{
"id": "gid://shopify/Product/123",
"title": "Classic Tee",
"status": "ACTIVE",
"variants": [
{
"id": "gid://shopify/ProductVariant/456",
"price": "29.00",
"sku": "TEE-BLK-M"
}
],
"images": [
{
"id": "gid://shopify/MediaImage/789",
"url": "https://cdn.shopify.com/...",
"altText": "Black classic tee"
}
]
}
],
"pageSize": 25,
"scope": "your-shop.myshopify.com",
"nextCursor": "eyJsYXN0X2lkIjoxMjN9"
}
FieldTypeDescription
listarrayNormalized products.
pageSizeintegerEffective page size.
scopestring | nullYour brand’s connected shop domain.
nextCursorstring | nullCursor for the next Shopify page, or null at the end.
Terminal window
curl -s "https://cdp.vyg.app/cdp/commerce/products?limit=25" \
-H "Authorization: Bearer vyg_your_key_here"
StatusWhen
400Invalid page size.
401Missing or invalid credential.
403Brand not enrolled in the commerce beta, no connected Shopify integration, or the token cannot read products (needs read_products or write_products).
429Shopify throttled the catalog request after bounded retry. The response includes Retry-After.
405Non-GET method.
502Shopify returned an unexpected upstream error.

The products proxy never exposes Shopify credentials or the raw Admin API response. See Get Product for the single-product contract.