Skip to main content

Catalog API reference

Early access

Agentic commerce is rolling out to Dev Dashboard. Sign up to be notified.

The Catalog API provides access to product data across all eligible Shopify merchants, enabling agentic commerce applications to search, discover, and retrieve detailed product information to render product details pages.

All Catalog API requests require a valid bearer token.

API keys created in the Dev Dashboard provide a client ID and secret that can be used to generate a bearer token.

POST

/auth/access_token

curl --request POST \
--url https://api.shopify.com/auth/access_token \
--header 'Content-Type: application/json' \
--data '{
"client_id": "{your_client_id}",
"client_secret": "{your_client_secret}",
"grant_type": "client_credentials"
}'

Include your token as a Authorization: Bearer {token} header on all API queries.

Learn more about building agentic commerce experiences.

GET

/global/v2/search

curl -X GET \
'https://discover.shopifyapps.com/global/v2/search?query=glossier%20lip%20balm' \
-H 'Authorization: Bearer {BEARER_TOKEN}'

Anchor to Endpoints and requestsEndpoints and requests

Catalog API endpoints are organized by resource type. You’ll need to use different endpoints depending on your agent's requirements.

All Catalog API endpoints follow this pattern: https://discover.shopifyapps.com/global/{API_VERSION}/{resource}.

The Catalog API provides two main endpoints:

  • Search: Search for products across the global Shopify Catalog
  • Lookup: Get detailed product information using a Universal Product ID (UPID)

The references and examples below document https://discover.shopifyapps.com/global/v2/search as the endpoint, which assumes Search and Lookup against the entire Shopify catalog. If you want your agents to make requests against a saved catalog you've created in Dev Dashboard, update the endpoint URLs accordingly.

Tip

For usage guidelines, see About Catalog.

Anchor to Status and error codesStatus and error codes

All API queries return HTTP status codes that can tell you more about the response.

200 OK

The request was successful.

400 Bad Request

The request contains invalid parameters. Check the errors object in the response for details.

401 Unauthorized

The bearer token is missing or invalid.

404 Not Found

The requested product (UPID) was not found.

429 Too Many Requests

Rate limit exceeded. Wait before retrying.

{} Sample error responses

{
"errors": {
"limit": ["must be greater than or equal to 1"],
"max_price": ["must be greater than 0"],
"categories": {
"0": ["must be a Shopify Taxonomy category identifier"]
}
}
}
{
"error": "Unauthorized"
}
{
"errors": {
"product": [
"Not found"
]
}
}

Retrieve products from the Shopify Catalog using the /global/v2/search endpoint. The resource returns an array of Universal Products, each representing a high-level product grouping that might contain multiple variants or offers from different shops.

Pass a search query to retrieve products from the Shopify Catalog.

This example illustrates how to retrieve information from many products using the Search resource and the /global/v2/search endpoint. Replace {query} with the buyer's search terms and {BEARER_TOKEN} with the bearer token you generated in the Authentication section.

The resource returns an array of Universal Products, each representing a high-level product grouping that might contain multiple variants or offers from different shops.

Append additional supported parameters from the table below to the path.

query•StringRequired

Keywords for search. For example, Running Shoes

available_for_sale•Int (0,1)Default: 1 (only available items)

Filter by availability.

When 1, only products available for sale are included. When 0, unavailable items are only included if they are a good match for the query.

categories•String

Comma-delimited list of global IDs for taxonomy categories. Refer to the Shopify Standard Product Taxonomy and raw category list.

For example, for shoes, use: gid://shopify/TaxonomyCategory/aa-8.

include_secondhand•Int (0,1)Default: 1 (include)

Include secondhand products.

When 1, include secondhand products in the results.

limit•Integer (1-10)Default: 10

Max results to return.

max_price•Decimal

Maximum price.

min_price•Decimal

Minimum price (currency determined by ships_to). API accepts decimals.

products_limit•Integer (1-10)Default: 10

The maximum number of variants to return per Universal Product.

ships_from•String

ISO country code. For example, US

ships_to•StringDefault: US

An ISO 3166 country code.

shop_ids•String

Filter by specific shops. For example, gid://shopify/Shop/1234 or 1234

GET

/global/v2/search

# Search the Catalog
curl -X GET \
'https://discover.shopifyapps.com/global/v2/search?query={query}' \
-H 'Authorization: Bearer {BEARER_TOKEN}'

{} Response

[
{
"id": "gid://shopify/p/abc123XYZ789defGHI456jk",
"title": "Classic Crewneck Sweatshirt",
"description": "A comfortable everyday sweatshirt with a classic fit and soft cotton-polyester blend.",
"lookupUrl": "https://discover.shopifyapps.com/global/v2/p/abc123XYZ789defGHI456jk",
"media": [
{
"url": "https://cdn.shopify.com/s/files/1/0000/0001/0002/files/classic-crewneck.webp?v=1700000001",
"altText": "Classic Crewneck Sweatshirt"
}
],
"options": [
{
"name": "Color",
"values": [
{
"value": "Heather Gray"
}
]
},
{
"name": "Size",
"values": [
{
"value": "Medium"
}
]
}
],
"priceRange": {
"min": {
"amount": 4500,
"currency": "USD"
},
"max": {

Anchor to Search response schemaSearch response schema

The Search endpoint returns an array of UniversalProduct objects. Each object contains product information optimized for discovery and browsing.

Some fields are generated using machine learning and are marked with Inferred in the documentation. These fields may not always be present or may have varying accuracy depending on the available product data.

Response type
UniversalProduct[]

Anchor to The UniversalProduct resourceThe UniversalProduct resource

Represents a high-level product grouping that may contain multiple variants or offers from different shops.

attributes•Hash[]•Inferred

Array of product attributes as name-value pairs.

description•string•Inferred

Detailed product description.

id•string

Unique identifier for the universal product.

For example, gid://shopify/p/1UT1zYWaL8WeTNCllgUbsM

lookupUrl•string

URL for subsequent calls to the Lookup endpoint.

media•Media[]

Product media from the top-ranked variant. Currently returns images only.

options•ProductOption[]•Inferred

Array of product options/variants.

priceRange•PriceRange

Price range from the top-ranked variant.

rating•Rating

Universal product rating information.

techSpecs•string[]•Inferred

Array of technical specifications.

title•string

Product title from the top-ranked variant.

topFeatures•string[]•Inferred

Array of top product features.

uniqueSellingPoint•string•Inferred

The unique selling point for the product.

variants•Variant[]

Array of product variants.

{} UniversalProduct

{
"id": "gid://shopify/p/abc123XYZ789defGHI456jk",
"title": "Classic Crewneck Sweatshirt",
"description": "A comfortable everyday sweatshirt.",
"lookupUrl": "https://discover.shopifyapps.com/global/v2/p/abc123XYZ789defGHI456jk",
"media": [
{
"url": "https://cdn.shopify.com/s/files/classic-crewneck.webp",
"altText": "Classic Crewneck Sweatshirt"
}
],
"options": [
{
"name": "Color",
"values": [{ "value": "Heather Gray" }]
},
{
"name": "Size",
"values": [{ "value": "Medium" }]
}
],
"priceRange": {
"min": { "amount": 4500, "currency": "USD" },
"max": { "amount": 5500, "currency": "USD" }
},
"variants": [
{
"id": "gid://shopify/ProductVariant/2000000000001?shop=10000000001",
"productId": "gid://shopify/Product/1000000000001",
"displayName": "Classic Crewneck - Heather Gray / Medium",
"availableForSale": true,
"price": { "amount": 4500, "currency": "USD" },
"options": [
{ "name": "Color", "value": "Heather Gray" },
{ "name": "Size", "value": "Medium" }
],
"shop": {
"id": "gid://shopify/Shop/10000000001",
"name": "Mock Shop",
"permanentDomain": "mock-shop.myshopify.com"
},
"lookupUrl": "https://discover.shopifyapps.com/global/v2/p/abc123"
}
],
"rating": { "rating": 4.5, "count": 120 }
}

Anchor to The Variant resourceThe Variant resource

Represents a specific product variant with pricing, availability, and checkout information.

availableForSale•boolean

Whether the variant is available for purchase.

checkoutUrl•string

Direct checkout URL for this variant.

displayName•string

Display name for the variant.

eligibleForNativeCheckout•boolean

Whether the variant supports native checkout. This field is not returned by default and requires opt-in from Shopify.

id•string

Unique variant identifier.

lookupUrl•string

URL for looking up this variant.

media•Media[]

Media for this variant. Currently returns images only.

options•VariantOption[]

Array of options for this variant.

price•Price

Price information for this variant.

productId•string

ID of the parent product.

rating•Rating

Rating information for this variant.

secondhand•boolean•Inferred

Whether the variant is secondhand.

shop•Shop

Shop offering this variant.

variantUrl•string

URL for the variant's product page.

{} Variant

{
"id": "gid://shopify/ProductVariant/2000000000001?shop=10000000001",
"productId": "gid://shopify/Product/1000000000001",
"displayName": "Classic Crewneck - Heather Gray / Medium",
"availableForSale": true,
"price": { "amount": 4500, "currency": "USD" },
"media": [
{
"url": "https://cdn.shopify.com/s/files/variant.webp",
"altText": "Heather Gray variant"
}
],
"options": [
{ "name": "Color", "value": "Heather Gray" },
{ "name": "Size", "value": "Medium" }
],
"shop": {
"id": "gid://shopify/Shop/10000000001",
"name": "Mock Shop",
"onlineStoreUrl": "https://mock.shop",
"permanentDomain": "mock-shop.myshopify.com"
},
"variantUrl": "https://mock.shop/products/crewneck?variant=2000000000001",
"checkoutUrl": "https://mock.shop/cart/2000000000001:1",
"eligibleForNativeCheckout": true,
"rating": { "rating": 4.8, "count": 24 },
"secondhand": false,
"lookupUrl": "https://discover.shopifyapps.com/global/v2/p/abc123"
}

Represents the shop offering the product. In Search responses, Shop contains only basic information.

id•string

Unique shop identifier. For example, gid://shopify/Shop/54623456

name•string

Shop name.

onlineStoreUrl•string

Shop page URL.

permanentDomain•string

Shop's permanent domain. For example, mock-shop.myshopify.com. This field is null if the client is not opted in to receive eligibleForNativeCheckout.

{} Shop

{
"id": "gid://shopify/Shop/10000000001",
"name": "Mock Shop",
"onlineStoreUrl": "https://mock.shop",
"permanentDomain": "mock-shop.myshopify.com"
}

Anchor to The ProductOption resourceThe ProductOption resource

Represents a product option like Size or Color.

name•string

Option name. For example, Color or Size

values•OptionValue[]

Array of possible values for this option.

{} ProductOption

{
"name": "Color",
"values": [
{ "value": "Heather Gray" },
{ "value": "Navy" }
]
}

Anchor to The OptionValue resourceThe OptionValue resource

Represents a product option value. In Search responses, OptionValue contains only the value.

value•string

Option value, configured by the merchant. For example, US5.5

{} OptionValue

{
"value": "Heather Gray"
}

Anchor to The PriceRange resourceThe PriceRange resource

Represents the minimum and maximum prices for a product or collection of variants.

max•Price

Maximum price in the range.

min•Price

Minimum price in the range.

{} PriceRange

{
"min": { "amount": 2999, "currency": "USD" },
"max": { "amount": 4999, "currency": "USD" }
}

Retrieve details of a single UniversalProduct.

This example illustrates how to retrieve detailed information for a single product using the UniversalProduct resource and the /global{API_VERSION}/p/{upid} endpoint. Replace {upid} with the Universal Product ID for the product of interest and {bearer_token} with the bearer token you generated in the Authentication section.

Use this endpoint to retrieve comprehensive variant information, including availability and option filtering.

Anchor to [object Object], Retrieve detailed information about a Universal Product
GET
Retrieve detailed information about a Universal Product

Retrieve details of a single UniversalProduct.

This example illustrates how to retrieve detailed information for a single product using the UniversalProduct resource and the /global{API_VERSION}/p/{upid} endpoint. Replace {upid} with the variant ID of a previous Search query or more generally the Universal Product ID for the product of interest and {bearer_token} with the bearer token you generated in the Authentication section.

Use this endpoint to retrieve comprehensive variant information, including availability and option filtering.

Variant selection behavior

If no variant matches the passed option filters, a relaxation of filters occurs to select the closest matching variant. If no match is found, the rightmost option filter is dropped until a match is found. The selectionState field in the response indicates whether the variant is a match (exact match) or fallback (relaxed match).

_gsid•String

Reference to the Catalog Search which generated the URL. Optional, and pre-populated in Catalog Search Results.

For example, xuUi3kiX3Fzt

available_for_sale•Int (0,1)Default: 1 (only available items)

Filter by availability.

When 1, only products available for sale are included in the result. When 0, unavailable items are included if they're a good match for the query.

include_secondhand•Int (0,1)Default: 1 (include)

Include secondhand products.

When 1 include secondhand products in the result, not that only secondhand products will appear in the results.

limit•Integer (1-100)Default: 10

Maximum number of results to return.

max_price•Decimal

Maximum price (currency determined by ships_to). API accepts decimals.

min_price•Decimal

Minimum price (currency determined by ships_to). API accepts decimals.

option.{name}•String

Option for inclusive and exclusive filtering. Filter products by appending option.{NAME}={VALUE} to the URL. Multiple options can be included per request. Different option keys are combined using AND logic. This affects the selected variant on onlineStoreUrl and checkoutUrl.

For example, option.color=red&option.material=steel

option_preferences•String

Comma-delimited list of option names. If no variant matches passed filters, a relaxation of filters occurs to select the closest matching variant. If no match is found, the rightmost option filter is dropped until a match is found.

For example, color, material

query•String

Keywords for search. For example, Running Shoes

ships_from•String

An ISO 3166 country code. For example, US

ships_to•StringDefault: US

An ISO 3166 country code.

shop_ids•String

Filter by specific shops. For example, gid://shopify/Shop/1234 or 1234

variant_id•Int

Preselect this product variant. For example, 46731565826293

GET

/global/v2/p/{upid}

# Retrieve details about an individual product.
curl -X GET \
'https://discover.shopifyapps.com/global/v2/p/{d}' \
-H 'Authorization: Bearer {BEARER_TOKEN}'

{} Response

{
"id": "gid://shopify/p/abc123XYZ789defGHI456jk",
"description": "A comfortable everyday sweatshirt with a classic fit and soft cotton-polyester blend.",
"options": [
{
"name": "Color",
"values": [
{
"value": "Heather Gray",
"availableForSale": true,
"exists": true
}
]
},
{
"name": "Size",
"values": [
{
"value": "Medium",
"availableForSale": true,
"exists": true
}
]
}
],
"selectedOptions": [
{
"name": "Color",
"value": "Heather Gray"
},
{
"name": "Size",
"value": "Medium"
}
],
"rating": { "rating": 4.5, "count": 128 },
Note

The schema returned by the Universal Product ID query (Catalog Lookup) is the same returned by the Catalog Search, except for the UniversalProduct's url param, which is omitted.

Use options to pre-select variants.

By specifying options, you can ensure that the relevant variant is selected when users are redirected to onlineStoreUrl and checkoutUrl.

For example, consider product gid://shopify/p/def456GHI789jklMNO123pq which has multiple color and size options.

Using the request's option params, a color and size combination of Navy/Large can be specified. The returned payload's onlineStoreUrl and checkoutUrl will pre-select these options for the user.

Variant selection behavior

If no variant exists with the combination of options that were requested, a relaxation of option filters will occur to find the next best variant. The parameter option_preferences can be used to decide the order in which options are relaxed.

{} Response

{
"id": "gid://shopify/p/def456GHI789jklMNO123pq",
"title": "Premium Pullover Hoodie",
...
"options": [
{
"name": "color",
"values": [
"Heather Gray",
"Navy",
"Black",
"Forest Green",
"Burgundy",
"Charcoal",
"Oatmeal",
"White"
]
},
{
"name": "size",
"values": [
"Small",
"Large"
]
}
],
...
}
GET

/global/v2/p/{uid}

curl --location 'https://discover.shopifyapps.com/global/v2/p/def456GHI789jklMNO123pq?ships_to=US&ships_from=US&available_for_sale=1&min_price=25.00&max_price=75.00&query=hoodie&_gsid=xyz789abc123&option.color=Navy&option.size=Large' \
--header 'Authorization: Bearer API_TOKEN'

{} Response

{
"id": "gid://shopify/p/def456GHI789jklMNO123pq",
"description": "A cozy pullover hoodie with kangaroo pocket and drawstring hood.",
...
"variants": [
{
"id": "gid://shopify/ProductVariant/2000000000002?shop=10000000001",
"productId": "gid://shopify/Product/1000000000002",
"displayName": "Premium Pullover Hoodie - Navy / Large",
"productDescription": "A cozy pullover hoodie...",
...
"variantUrl": "https://mock.shop/products/premium-pullover-hoodie?variant=2000000000002&_gsid=xyz789abc123",
"checkoutUrl": "https://mock.shop/cart/2000000000002:1?_gsid=xyz789abc123&payment=shop_pay",
"price": {
...
},
...
},
...
}

Anchor to Lookup response schemaLookup response schema

The Lookup endpoint returns a single UniversalProduct object with comprehensive product details for building product detail pages.

Some fields are generated using machine learning and are marked with Inferred in the documentation. These fields may not always be present or may have varying accuracy depending on the available product data.

Response type
UniversalProduct

Anchor to The UniversalProduct resourceThe UniversalProduct resource

Represents a high-level product grouping that may contain multiple variants or offers from different shops.

attributes•Attribute[]•Inferred

Array of product attributes.

description•string•Inferred

Detailed product description.

featuredVariantId•string

The ID of the featured variant for this product.

featuredVariantMedia•Media[]

Media for the featured variant. Currently returns images only.

id•string

Unique identifier for the universal product.

For example, gid://shopify/p/1UT1zYWaL8WeTNCllgUbsM

options•ProductOption[]•Inferred

Array of product options/variants.

rating•Rating

Universal product rating information.

selectedOptions•VariantOption[]

Array of selected variant options.

status•Status

Product status information.

techSpecs•string[]•Inferred

Array of technical specifications.

topFeatures•string[]•Inferred

Array of top product features.

uniqueSellingPoint•string•Inferred

The unique selling point for the product.

variants•Variant[]

Array of product variants. Default: 5.

{} UniversalProduct

{
"id": "gid://shopify/p/abc123XYZ789defGHI456jk",
"description": "A comfortable everyday sweatshirt.",
"featuredVariantId": "gid://shopify/ProductVariant/2000000000001",
"featuredVariantMedia": [
{
"url": "https://cdn.shopify.com/s/files/variant.webp",
"altText": "Featured variant"
}
],
"options": [
{
"name": "Color",
"values": [
{ "value": "Heather Gray", "availableForSale": true, "exists": true },
{ "value": "Navy", "availableForSale": false, "exists": true }
]
}
],
"selectedOptions": [
{ "name": "Color", "value": "Heather Gray" }
],
"status": null,
"variants": [
{
"id": "gid://shopify/ProductVariant/2000000000001",
"productId": "gid://shopify/Product/1000000000001",
"displayName": "Classic Crewneck - Heather Gray",
"productDescription": "A comfortable everyday sweatshirt.",
"availableForSale": true,
"price": { "amount": 4500, "currency": "USD" },
"shop": {
"id": "gid://shopify/Shop/10000000001",
"name": "Mock Shop",
"permanentDomain": "mock-shop.myshopify.com",
"privacyPolicy": { "url": "https://checkout.shopify.com/..." },
"refundPolicy": { "url": "https://checkout.shopify.com/..." }
}
}
],
"rating": { "rating": 4.5, "count": 120 }
}

Anchor to The Variant resourceThe Variant resource

Represents a specific product variant with pricing, availability, and checkout information.

availableForSale•boolean

Whether the variant is available for purchase.

checkoutUrl•string

Direct checkout URL for this variant.

displayName•string

Display name for the variant.

eligibleForNativeCheckout•boolean

Whether the variant supports native checkout. This field is not returned by default and requires opt-in from Shopify.

id•string

Unique variant identifier.

media•Media[]

Media for this variant. Currently returns images only.

price•Price

Price information for this variant.

productDescription•string

Description of the parent product.

productId•string

ID of the parent product.

rating•Rating

Rating information for this variant.

secondhand•boolean•Inferred

Whether the variant is secondhand.

shop•Shop

Shop offering this variant.

variantUrl•string

URL for the variant's product page.

{} Variant

{
"id": "gid://shopify/ProductVariant/2000000000001",
"productId": "gid://shopify/Product/1000000000001",
"displayName": "Classic Crewneck - Heather Gray",
"productDescription": "A comfortable everyday sweatshirt.",
"availableForSale": true,
"price": { "amount": 4500, "currency": "USD" },
"media": [
{
"url": "https://cdn.shopify.com/s/files/variant.webp",
"altText": "Heather Gray variant"
}
],
"shop": {
"id": "gid://shopify/Shop/10000000001",
"name": "Mock Shop",
"onlineStoreUrl": "https://mock.shop",
"permanentDomain": "mock-shop.myshopify.com",
"privacyPolicy": { "url": "https://checkout.shopify.com/..." },
"refundPolicy": { "url": "https://checkout.shopify.com/..." },
"shippingPolicy": { "url": "https://checkout.shopify.com/..." },
"termsOfService": { "url": "https://checkout.shopify.com/..." }
},
"variantUrl": "https://mock.shop/products/crewneck?variant=2000000000001",
"checkoutUrl": "https://mock.shop/cart/2000000000001:1",
"eligibleForNativeCheckout": true,
"rating": { "rating": 4.8, "count": 24 },
"secondhand": false
}

Represents the shop offering the product. In Lookup responses, Shop includes policy information.

id•string

Unique shop identifier. For example, gid://shopify/Shop/54623456

name•string

Shop name.

onlineStoreUrl•string

Shop page URL.

permanentDomain•string

Shop's permanent domain. For example, mock-shop.myshopify.com. This field is null if the client is not opted in to receive eligibleForNativeCheckout.

privacyPolicy•Policy

Shop's privacy policy.

refundPolicy•Policy

Shop's refund policy.

shippingPolicy•Policy

Shop's shipping policy.

termsOfService•Policy

Shop's terms of service.

{} Shop

{
"id": "gid://shopify/Shop/10000000001",
"name": "Mock Shop",
"onlineStoreUrl": "https://mock.shop",
"permanentDomain": "mock-shop.myshopify.com",
"privacyPolicy": {
"url": "https://checkout.shopify.com/10000000001/policies/privacy.html"
},
"refundPolicy": {
"url": "https://checkout.shopify.com/10000000001/policies/refund.html"
},
"shippingPolicy": {
"url": "https://checkout.shopify.com/10000000001/policies/shipping.html"
},
"termsOfService": {
"url": "https://checkout.shopify.com/10000000001/policies/terms.html"
}
}

Anchor to The ProductOption resourceThe ProductOption resource

Represents a product option like Size or Color.

name•string

Option name. For example, Color or Size

values•OptionValue[]

Array of possible values for this option.

{} ProductOption

{
"name": "Color",
"values": [
{ "value": "Heather Gray", "availableForSale": true, "exists": true },
{ "value": "Navy", "availableForSale": false, "exists": true }
]
}

Anchor to The OptionValue resourceThe OptionValue resource

Represents a product option value. In Lookup responses, OptionValue includes availability information.

availableForSale•boolean

Whether a variant with this option is available for sale.

exists•boolean

Whether a variant with this option exists.

value•string

Option value, configured by the merchant. For example, US5.5

{} OptionValue

{
"value": "Heather Gray",
"availableForSale": true,
"exists": true
}

Anchor to The Attribute resourceThe Attribute resource

Represents a product attribute with a name and array of values.

name•string

Attribute name.

values•string[]

Array of attribute values.

{} Attribute

{
"name": "Fabric",
"values": ["Cotton", "Polyester"]
}

Indicates the state of the requested UPID or variant, including whether it was redirected, expired, or fell back to a different selection.

requestedFilters•string

Indicates if the requested filters caused a fallback. Value: fallback

requestedId•string

Indicates if the requested product ID was redirected or expired. Values: redirected, expired

requestedVariantId•string

Indicates if the requested variant caused a fallback. Value: fallback

{} Status

{
"requestedId": "redirected",
"requestedVariantId": null,
"requestedFilters": null
}

Represents a shop policy document.

url•string

URL to the policy document.

{} Policy

{
"url": "https://checkout.shopify.com/10000000001/policies/privacy.html"
}

The following resources are identical in both Search and Lookup responses.

Represents product media. Currently returns images only.

altText•string

Alt text for the media.

url•string

URL of the media asset.

{
"url": "https://cdn.shopify.com/s/files/1/0/0/products/sneaker.jpg",
"altText": "White running sneaker side view"
}

Represents a monetary value with currency.

amount•integer

The price amount in the smallest currency unit (e.g., cents for USD).

currency•string

The three-letter ISO 4217 currency code (e.g., USD, EUR).

{
"amount": 12999,
"currency": "USD"
}

Represents product or variant rating information.

count•integer

The total number of ratings.

rating•number

The average rating value.

{
"rating": 4.5,
"count": 128
}

Anchor to The VariantOption resourceThe VariantOption resource

Represents a selected option for a specific variant.

name•string

The name of the option (e.g., Color, Size).

value•string

The selected value for this option (e.g., Blue, Medium).

{
"name": "Color",
"value": "Heather Gray"
}

Anchor to Status and error codesStatus and error codes

All API queries return HTTP status codes that can tell you more about the response.

200 OK

The request was successful.

400 Bad Request

The request contains invalid parameters. Check the errors object in the response for details.

401 Unauthorized

The bearer token is missing or invalid.

404 Not Found

The requested product (UPID) was not found.

429 Too Many Requests

Rate limit exceeded. Wait before retrying.

{} Sample error responses

{
"errors": {
"limit": ["must be greater than or equal to 1"],
"max_price": ["must be greater than 0"],
"categories": {
"0": ["must be a Shopify Taxonomy category identifier"]
}
}
}
{
"error": "Unauthorized"
}
{
"errors": {
"product": [
"Not found"
]
}
}