October 16, 2026 · Muhammad Rehan · More by Muhammad Rehan
Shopify's Global Catalog REST API Shuts Off Nov 2
Shopify's Global Catalog REST API stops serving traffic on November 2, 2026. Here's the exact REST-to-UCP/MCP migration path, endpoint by endpoint.
On November 2, 2026, Shopify's Global Catalog REST API stops serving traffic entirely. This isn't a slow sunset — every call to the old endpoints fails after that date, including requests against catalogs you already saved. The API was deprecated back in April 2026, but the firm cutoff date only landed in an October 9, 2026 changelog entry, leaving integrators under three weeks between the announcement and the shutdown.
Four REST Calls Map to Three UCP Tools
The migration isn't a reshuffle of your existing logic — each REST endpoint has a documented, one-to-one replacement in Global Catalog MCP:
- GET /global/v2/search becomes the search_catalog tool.
- GET /global/v2/p/{upid} and GET /global/v2/p/by-variant/{vid} both become the get_product tool, passing gid://shopify/p/{upid} or gid://shopify/ProductVariant/{id} as the identifier.
- POST /global/v2/lookup becomes the lookup_catalog tool for batch identifier resolution.
If you're querying a saved catalog, pass its ID as catalog.catalog_id in the request body, instead of hitting a dedicated saved-catalog URL.
Every Request Needs an Agent Profile
Global Catalog MCP lives at https://catalog.shopify.com/api/ucp/mcp, and it's a Model Context Protocol server implementing the Universal Commerce Protocol (UCP) — not a REST endpoint with renamed routes. Every single request, with no exceptions, must include a meta.ucp-agent.profile field carrying a URL to your agent's UCP profile; there's no anonymous or profile-less call path. Authentication itself doesn't change: you still generate bearer tokens from your Dev Dashboard client credentials, so this is a request-shape migration, not a re-auth project. You can test calls before cutting over using the Shopify AI Toolkit or the UCP CLI's ucp catalog search command.
Capability Negotiation Can Silently Drop Fields
If you host your own agent profile, declaring Shopify's extension capability — dev.shopify.catalog.global — isn't enough on its own. The UCP spec requires you to also declare the base capabilities it depends on: dev.ucp.shopping.catalog.search and dev.ucp.shopping.catalog.lookup. Declare the extension without its base capability and it gets pruned during negotiation — your calls still succeed, but responses come back without Shopify's enriched fields, with nothing flagging why they're missing. Check your profile's declared capabilities against this pairing before you rely on the enriched response fields in production.