Skip to main content

Global Catalog extension

The Global Catalog extension adds Shopify-specific fields to the base UCP catalog tools. Every Global Catalog response includes the additional filters, variant fields, and ML-inferred metadata documented on this page.

  • Extension name: dev.shopify.catalog.global
  • Version: 2026-04-08
  • Extends: dev.ucp.shopping.catalog.search, dev.ucp.shopping.catalog.lookup

This extension is scoped to the global catalog — products from across all Shopify merchants. For the single-store extension, see Storefront Catalog extension.


All three tools (search_catalog, lookup_catalog, and get_product) accept a catalog.filters object with the following Shopify-specific fields:

FieldTypeDefaultDescription
availablebooleantrueWhen true (default), only sale-ready items are returned. Set to false to include unavailable items.
conditionarray—Product condition filter. Known values: "new", "secondhand". Multiple values use OR logic. Absent means no condition filter.
ships_toobject—Filter to products that ship to a given location. When country matches context.address_country, the implementation may enrich with context region and postal code. Accepts country (required, ISO 3166-1 alpha-2), region, and postal_code.
ships_fromarray—Filter by merchant origin country. Each entry accepts country (required, ISO 3166-1 alpha-2). Multiple entries use OR logic. Digital products that don't require shipping can still match this filter.

search_catalog also accepts these additional filters:

FilterTypeDefaultDescription
shop_idsarray—Restrict results to specific shops by GID. You can pass up to 1000 shop IDs per request.
categoriesarray—Filter by product category. Each item is a taxonomy category GID (for example, "gid://shopify/TaxonomyCategory/123"). Multiple values use OR logic.
attributesarray—Filter by Shopify taxonomy attributes. Supported names are Color, Size, and Target gender. Entries combine with AND logic. Values within one entry combine with OR logic. Unsupported attribute names are ignored and returned in messages.
ratingobject—Filter by variant rating. Accepts variant, which matches products with at least one variant whose rating meets the given thresholds. variant.min sets the minimum rating value (0–5 scale) and variant.min_count sets the minimum number of reviews.
price_tierarray—Filter by relative price tier within each product's category. Supported values are low, medium, and high. Multiple values use OR logic. Unsupported values are ignored and returned in messages.
{
"catalog": {
"query": "running shoes",
"filters": {
"available": true,
"condition": ["new"],
"ships_to": {"country": "US"},
"ships_from": [{"country": "US"}],
"attributes": [
{"name": "Color", "values": ["Black", "Blue"]},
{"name": "Size", "values": ["10"]},
{"name": "Target gender", "values": ["Unisex"]}
],
"rating": {"variant": {"min": 4.5, "min_count": 10}},
"price_tier": ["low", "medium"]
}
}
}

Use catalog.like in a search_catalog request to find products similar to a reference product, variant, or image. Pass one item as one of:

  • Item reference: A product or variant GID. For example, {"id": "gid://shopify/p/..."}, {"id": "gid://shopify/Product/..."}, or {"id": "gid://shopify/ProductVariant/..."}.
  • Image content: A base64-encoded image with its MIME type. For example, {"image": {"content_type": "image/jpeg", "data": "<base64>"}}.

You can combine like with query in a single request to narrow similarity results by keyword. When like contains an image and query is present, Global Catalog uses multimodal search. Multimodal search uses the text query to describe what the agent is looking for and the image to provide visual context, such as style, shape, or pattern. When like contains only an image, Global Catalog uses visual similarity search, which returns items that visually resemble the image without additional text intent.

{
"catalog": {
"query": "trail running shoes",
"like": [
{"id": "gid://shopify/p/7f3a2b8c1d9e"}
],
"filters": {
"ships_to": {"country": "US"}
}
}
}

All three tool responses include these additional fields on each product:

FieldTypeDescription
metadata.attributesArray[Attribute]ML-inferred product attributes such as material, style, and occasion.
metadata.tech_specsArray[string]ML-inferred technical specifications.
metadata.top_featuresArray[string]ML-inferred top product features.
metadata.unique_selling_pointsArray[string]ML-inferred unique selling propositions.

Each attribute object contains:

FieldTypeDescription
namestringAttribute name (for example, "Material", "Style").
valuestringAttribute value (for example, "Cotton", "Casual").

Variants include checkout URLs, purchase requirements, inventory signals, and seller identity:

FieldTypeDescription
checkout_urlstringDirect checkout URL for this variant.
requires.shippingbooleanWhether a shipping address is needed. When false, checkout can skip address collection.
requires.componentsbooleanWhether the variant requires bundle components. When true, the variant can only be purchased as a parent bundle.
conditionArray[string]Product condition labels for this variant. Known values: "new", "secondhand".
eligible.native_checkoutbooleanWhether this variant supports native (non-redirect) checkout. Default false.
availability.running_lowbooleanWhether inventory is limited. Only meaningful when available is true.
seller.idstringThe shop GID.
seller.urlstringThe storefront URL.
seller.domainstringThe primary domain of the shop.
Info

seller.name and seller.links are part of the base UCP spec and always present in Global Catalog responses.


The following example shows a search_catalog response with Global Catalog extension fields:

{
"result": {
"structuredContent": {
"ucp": {
"version": "2026-04-08",
"capabilities": {
"dev.ucp.shopping.catalog.search": [{"version": "2026-04-08"}],
"dev.shopify.catalog.global": [{"version": "2026-04-08"}]
}
},
"products": [
{
"id": "gid://shopify/p/7f3a2b8c1d9e",
"title": "Trail Runner Pro",
"description": {"html": "<p>Lightweight trail running shoe for road and light trail.</p>"},
"price_range": {
"min": {"amount": 8999, "currency": "USD"},
"max": {"amount": 12999, "currency": "USD"}
},
"metadata": {
"attributes": [
{"name": "Material", "value": "Mesh"},
{"name": "Style", "value": "Athletic"}
],
"top_features": ["Lightweight", "Breathable mesh upper", "Cushioned sole"],
"unique_selling_points": ["Designed for road and light trail", "Responsive foam midsole"]
},
"variants": [
{
"id": "gid://shopify/ProductVariant/12345678",
"title": "Black / Size 10",
"price": {"amount": 8999, "currency": "USD"},
"checkout_url": "https://example-running.myshopify.com/cart/12345678:1",
"condition": ["new"],
"eligible": {"native_checkout": true},
"availability": {
"available": true,
"status": "in_stock",
"running_low": false
},
"requires": {"shipping": true, "selling_plan": false, "components": false},
"seller": {
"name": "Example Running",
"id": "gid://shopify/Shop/987654321",
"domain": "example-running.myshopify.com",
"url": "https://example-running.myshopify.com",
"links": [
{"type": "refund_policy", "url": "https://example-running.myshopify.com/policies/refunds"}
]
}
}
]
}
]
}
}
}

Was this page helpful?