Unlock Retail Store Discovery with Shopify’s New UCP Location Search & Lookup

Shopify now lets apps locate a merchant’s physical stores via UCP location search and lookup. Learn what changed, who’s affected, and how to add the capabilities to your storefront integration.

Unlock Retail Store Discovery with Shopify’s New UCP Location Search & Lookup
6 sections

Shopify merchants with brick‑and‑mortar locations can now expose those stores to custom agents through the Unified Commerce Platform (UCP). Starting with UCP version 2026‑08‑25, two optional capabilities—dev.ucp.common.location.search and dev.ucp.common.location.lookup—are available on the storefront MCP endpoint. This post breaks down the change, who needs to act, and provides ready‑to‑copy code examples.

What’s New

  • Storefronts that have at least one active retail location now list the two location capabilities in their discovery profile (/.well-known/ucp).
  • When an agent negotiates either capability, the MCP endpoint (https://{shopDomain}/api/ucp/mcp) unlocks two tools:
  • • search_locations – Returns a paginated list of retail locations. You can filter by name, city, distance (center + radius) and by product variant availability (filters.items).

    • lookup_locations – Retrieves specific locations by their global ID (e.g., gid://shopify/Location/123). Up to 10 IDs are processed per request; excess IDs trigger a batch_limit_applied message.

  • Each location object includes id, name, full address, and geo‑coordinates (if the merchant provided them).
  • Search returns 10 results by default, up to 250 with pagination.limit. Use pagination.cursor for subsequent pages.
  • The API does not support hours, amenities, custom filters, or the serves relation. Requests containing those fields return an invalid_input error.
  • Who Is Affected?

  • Developers building custom checkout flows, recommendation engines, or fulfillment apps that query a shop’s physical inventory. If your app already talks to the storefront MCP endpoint, you’ll need to update the agent profile to declare the new capabilities.
  • Merchants who have at least one active retail location (Physical storefront enabled) will automatically expose the capabilities. No action is required on their side unless they want to disable the feature.
  • Shops without retail locations will not list the capabilities, and any requests to the new tools will return a 404.
  • How to Enable the Capabilities

  • Update your agent profile to negotiate the new capabilities at version 2026‑08‑25. Example JSON snippet:
  • {

    "ucpVersion": "2026-08-25",

    "capabilities": [

    "dev.ucp.common.location.search",

    "dev.ucp.common.location.lookup"

    ]

    }

  • Check the shop’s discovery profile before calling the tools. A simple GET to https://{shopDomain}/.well-known/ucp will list the available capabilities.
  • bash

    curl https://myshop.myshopify.com/.well-known/ucp | jq '.capabilities'

    If the response includes "dev.ucp.common.location.search" or "dev.ucp.common.location.lookup", you can safely call the corresponding MCP endpoints.

    Sample Requests

    Search locations – basic (first 10 stores):

    POST https://myshop.myshopify.com/api/ucp/mcp

    Content-Type: application/json

    {

    "search_locations": {

    "pagination": { "limit": 10 }

    }

    }

    Search with filters – find stores within 5 km of the buyer’s chosen point that carry two specific variants:

    POST https://myshop.myshopify.com/api/ucp/mcp

    Content-Type: application/json

    {

    "search_locations": {

    "filters": {

    "items": ["gid://shopify/ProductVariant/111", "gid://shopify/ProductVariant/222"]

    },

    "distance": {

    "center": { "lat": 37.7749, "lon": -122.4194 },

    "max": 5000

    },

    "pagination": { "limit": 20 }

    }

    }

    Lookup specific locations – retrieve details for three known IDs:

    POST https://myshop.myshopify.com/api/ucp/mcp

    Content-Type: application/json

    {

    "lookup_locations": {

    "ids": [

    "gid://shopify/Location/123",

    "gid://shopify/Location/456",

    "gid://shopify/Location/789"

    ]

    }

    }

    Best Practices & Gotchas

  • Only use a buyer‑provided center. Shopify will not infer location from IP; sending a center without explicit consent returns invalid_input.
  • Treat item availability as provisional. The API confirms that a variant is stocked at a location, but you still need to verify stock levels and fulfillment options during cart and checkout.
  • Paginate responsibly. The maximum pagination.limit is 250. Use the cursor token to fetch subsequent pages rather than requesting an enormous limit in one call.
  • Handle batch limits. If you send more than 10 IDs to lookup_locations, the response will include a batch_limit_applied flag. Split large batches into multiple requests.
  • No pickup checkout flow yet. Even though you can discover which stores carry items, Shopify does not currently support a checkout flow that automatically selects a pickup location based on the lookup. You’ll need to build that UX yourself or wait for a future update.
  • Conclusion & Next Steps

    The new UCP location search and lookup capabilities give developers a powerful way to surface in‑store inventory and guide shoppers to the nearest store that actually has the product. By updating your agent profile, checking the shop’s discovery capabilities, and following the request patterns above, you can start building richer omnichannel experiences today. Keep an eye on Shopify’s official UCP location specification for any future enhancements, and consider adding UI cues that let buyers share their location safely.

    Ready to bring your customers back to the storefront? Update your integration now and let shoppers see exactly where they can pick up their favorites!

    Tags
    Sources

    Related Articles

    Reactive Storage Boosts POS UI Extensions with Real‑Time Sync

    Reactive Storage Boosts POS UI Extensions with Real‑Time Sync

    Shopify’s latest POS UI extension update introduces shopify.storage.current, a reactive storage API that automatically syncs data across extension targets on the same device. Learn what changed, who it impacts, and how to implement it in minutes.

    October 22, 20264 min
    s‑pos‑list Arrives: Virtualized Lists Transform Shopify POS UI Extensions

    s‑pos‑list Arrives: Virtualized Lists Transform Shopify POS UI Extensions

    Shopify POS UI extensions get a powerful new component—s‑pos‑list—in the 2026‑10 API. Learn what changed, who it impacts, and how to adopt the virtualized list for faster, memory‑efficient rendering.

    October 22, 20264 min
    Polaris 2.0 Is Now Stable: What Shopify Developers Must Do Today

    Polaris 2.0 Is Now Stable: What Shopify Developers Must Do Today

    Polaris 2.0 has moved to the stable CDN, bringing a redesigned admin look, new semantic versioning, and updated TypeScript types. Learn how to switch script tags, update React Router apps, and keep your Shopify extensions on the latest UI framework.

    October 22, 20264 min
    Tiled Checkout Payment Methods: What Merchants Need to Know

    Tiled Checkout Payment Methods: What Merchants Need to Know

    Shopify’s refreshed payment method design now shows a sleek tiled layout for up to four payment options. Learn how this change works, who it impacts, and what steps to take to optimize your checkout experience.

    October 22, 20265 min