Shopify now runs a search across every store on the platform. It is called the Global Catalog, it answers at catalog.shopify.com/api/ucp/mcp, and each result carries the selling store's name, id and domain, which means a product search is also a store search. ShopLeads is our product and it sells store and contact data, so we say so; everything below is a public surface you can hit yourself, and the Global Catalog is the one the pages ranking for this query do not mention.
The phrase "search Shopify stores" covers four jobs that have almost nothing in common, and the right answer depends entirely on which one you have. Every endpoint, operator and reading below was run on November 9, 2026.
Four different searches hide behind one query
| What you actually want | What answers it | What comes back |
|---|---|---|
| Products from any store on Shopify | Global Catalog MCP | Products clustered across merchants, each with the seller name, shop id and domain |
| Products inside one store you already know | The store's own search endpoints | That store's products as JSON, from the store itself, no key needed |
| Any Shopify store matching a phrase or a URL shape | Google, with operators | A sample biased toward smaller and older stores, as measured below |
| Stores filtered by platform, size, country or installed app | A store index such as Store Leads or ShopLeads | Rows you can filter and export, with each index counting a different population |
The first two surfaces are Shopify's own and are documented on shopify.dev. The third is free and imprecise. The fourth is where you end up if the question is "which stores should I sell to".
Most of the guides on this query answer the fourth job and call it the only one. The first job is new, and it is the one worth learning first.
Search across every Shopify store with the Global Catalog
Shopify publishes two catalog interfaces for agents. The Storefront Catalog is scoped to one merchant and answers at that merchant's own domain; the Global Catalog searches all Shopify merchants and answers at catalog.shopify.com/api/ucp/mcp. Both implement the catalog capability of the Universal Commerce Protocol, the standard Shopify co-developed with Google and published at ucp.dev.
Both expose the same three tools, and the one you want is search_catalog: find products by keyword, by image, or by a set of product ids to find similar items. Results are clustered by a Universal Product ID so the same product from several merchants collapses into one entry with several offers. There is no API key. Instead, every request carries a URL pointing at your agent's UCP profile, which declares the capabilities you are asking for, and Shopify applies rate limits and tool access by the trust tier of that profile (Shopify.dev).
- **The filters are the interesting part.**
ships_toby country, region or postal code;ships_fromby merchant origin country;price;condition(new or secondhand);ratingwith a minimum value and a minimum review count;price_tierrelative to the product's own category;mediaso you only get products with video or a 3D model;categoriesby Shopify taxonomy id; andshops, which takes up to 1000 shop ids per request (Global Catalog reference). - **Every offer names its store.** Each variant in a result carries a
sellerobject withname,idas a shop GID,domainandurl, plus links to that store's policies. That is what turns a product search into a store search (Global Catalog reference). - **You do not have to write the client.** Shopify's AI toolkit installs a
ucpskill for Claude Code, Cursor and other compatible editors, and there is a UCP CLI whereucp catalogqueries the global catalog and--business <url>scopes the same search to one merchant. - **Some fields are generated.** Shopify marks parts of the response
Inferredand says in its own docs to treat those as discovery signals rather than merchant-authored text (Shopify.dev).
If you want the consumer-facing version of the same index with nothing to install, Shop is it. It redirects to shop.com and searches across store catalogs, but the results render in the browser, so there is no list to copy out of it.
Search inside one store using the endpoints it already serves
Every Shopify storefront answers a small set of public JSON endpoints, no key and no account. Shopify documents the search one as predictive search, and Shopify Help describes the storefront search features behind it. Here is what each one returned for Beardbrand on November 9, 2026.
| Request | What it is for | What it returned |
|---|---|---|
/search/suggest.json?q=beard&resources[type]=product | Search that store's products by phrase | A resources.results.products array, each product with its availability, body text, handle and price |
/products.json?limit=250 | Page through the whole product list | 68 products on the first page, each with published_at, created_at, updated_at, vendor, type, tags, and variants |
/sitemap.xml | Find every product, collection, page and article URL | A sitemap index pointing to products, pages, collections, blogs, articles, and one more listed below |
/sitemap_products_1.xml | Count products without paginating a JSON API | 67 product URLs |
/sitemap_agentic_discovery.xml | The newest one: where the store tells agents how to shop it | A single URL, /agents.md, which on this store names the Shop skill and the store's UCP integration |
Run against beardbrand.com on November 9, 2026. The predictive search endpoint and its parameters are documented on shopify.dev.
Two things in that table are worth sitting with. The product sitemap and the JSON list disagree by one, because a product can be published and excluded from the sitemap, so pick one method and stay with it. And the agentic discovery sitemap is new: stores are now publishing a plain-text file that tells an assistant how to search and buy from them.
Look up a store by domain, and get its myshopify name
A store lookup usually starts with a domain and ends in frustration, because the custom domain is not the name Shopify knows the store by. One request fixes that. Every Shopify store answers /.well-known/ucp.json, and the service endpoints inside it are written against the store's myshopify.com host.
curl -s https://mejuri.com/.well-known/ucp.json | grep -o '[a-z0-9-]*\.myshopify\.com'
| Domain you have | myshopify name it answered with | Would you have guessed it? |
|---|---|---|
| kith.com | kithnyc.myshopify.com | Not from the domain |
| mejuri.com | 77123f.myshopify.com | No: a headless store with a generated handle |
| beardbrand.com | beardbrand.myshopify.com | Yes |
| cremo-us.myshopify.com | Already the myshopify host | This is what an indexed myshopify domain looks like |
Read from each store's own /.well-known/ucp.json on November 9, 2026. The file exists because the store implements UCP, which Shopify turns on at the platform level rather than per theme, so it answers on headless storefronts too.
That handle is worth having. It is the key most store indexes store a record under, it is what shows up in Shopify support threads and app installs, and on a headless store it is the only place the platform identity is written down in plain text.
Search Google for Shopify stores, and know the bias
Google is the free option, and it works. It is also a biased sample in a way worth measuring rather than guessing, so we ran three operator searches on November 9, 2026 and then checked every store that came back.
| Operator search | What it finds | What we found when we checked |
|---|---|---|
site:myshopify.com beard oil | Stores whose myshopify host is indexed | Five results, all live Shopify stores, including cremo-us.myshopify.com and tx-beard-company.myshopify.com. An indexed myshopify host usually means the custom domain was never set as canonical |
"powered by shopify" beard balm | Stores that still carry the footer line | Five results, all live Shopify stores. Four still had the phrase in their HTML; david-mallett.com had removed it and is still on Shopify |
inurl:collections/all beard oil | The Shopify collection URL pattern | Real stores such as badassbeardcare.com and warlordbeardoil.com, mixed with Facebook and Instagram pages that match the words |
Every store named was confirmed Shopify the same day by its powered-by: Shopify response header and a JSON answer from /.well-known/ucp.json. chasethecraft.com was in the second set and still carries the footer line.
The pattern is consistent and it decides how you read any Google-sourced list: these operators find stores that have not tidied up after themselves. Removing the footer, setting the custom domain as canonical and keeping the myshopify host out of the index are all things a store does as it grows, so an operator search skews small, new and unmaintained. That is fine if you sell to new stores and misleading if you do not.
What the store indexes count, and why no two agree
The fourth job is the one with a market around it, and the first thing to understand is that every index answers a different question. Three published counts for "Shopify stores", read on the same morning:
| Index | Shopify stores it counts | What it says it counts |
|---|---|---|
| Store Leads | 3,245,947 | Active stores, inside a 13,990,637-store index across 421 platforms, updated weekly, with 9,098 apps and 1,006 technologies tracked |
| EachSpy | 2,697,934 | Active stores across 21 markets and 357 niches, with 1,013,434 of them in the United States |
| CartInsight | 390,408 | A curated list: it says it scans millions of stores, then removes side projects and templates to keep the stores it calls prospecting-worthy |
Each figure read from that company's own page on November 9, 2026 (Store Leads, EachSpy, CartInsight). They move.
An eight-fold spread is not an error by any of them. The widest count includes every storefront that resolves, including development stores, abandoned stores and template clones. The narrowest deliberately throws most of that away. If you are sizing a market, the big number flatters you; if you are building a list to write to, the small number is closer to the truth and still too big.
From a store search to the decision-maker
Every surface above returns stores. None of them returns a person, and a store without a person is a tab you will close. The sequence that turns one into the other:
- Search for stores on the thing you sell against, not the thing that is easiest to query. An installed app, a missing app, a sales band or a category holds still; a theme name and a footer line do not.
- Drop the stores that are not businesses. Development stores, template clones and dropshipping storefronts all answer every endpoint in this article exactly like a real brand does.
- Read one store properly before you write to any of them. Its product list, its installed apps, whether it also sells through other retailers, and when it last shipped a product are all public and all free.
- Add the person last: decision-makers only, in the departments you sell to, with a work email whose status you can see.
- Spend money at the end. Searching and counting should cost nothing, so do every cut for free and pay only for the contacts you will actually write to.
ShopLeads is built for that last step. The store filters and the people filters are one search, so you can go from platform, category, country, monthly sales band, installed apps and technologies by exact name, or a tech gap such as no reviews app, straight to the named decision-makers at the stores that match. Every search and count is free and never reveals a contact, contacts come back masked, and a free preview shows the exact cost before a credit is spent. The REST API and MCP server take the same filters. Browse the Shopify store directory, see how to build a Shopify store list for the cleaning work, then start the free trial or read the pricing page.
Before you trust any search result, confirm the store is on Shopify at all: a storefront that answers /products.json with JSON, or references cdn.shopify.com, is on Shopify whatever a generic lookup says, and what a Shopify app detector sees covers reading the apps once you have the store.
Where to go next
- How to build a Shopify store list covers the cleaning work a search leaves behind.
- What a Shopify app detector can and cannot see covers the fourth search, the one on installed apps.
- The indexes that answer these searches for you: ShopLeads vs StoreLeads and Store Leads alternatives.
- The browsable version: the Shopify store directory.
- Watch the launch film, or read the pricing page.
Questions people ask
Is there a Shopify-wide search engine?
Yes, two. Shopify's Global Catalog searches products across all its merchants at catalog.shopify.com/api/ucp/mcp and returns the selling store's name, id and domain with every offer. Shop, at shop.app, is the consumer version of the same idea.
How do I look up a Shopify store by its domain?
Request /.well-known/ucp.json on that domain. If it answers JSON, the site is on Shopify, and the service endpoints inside name the store's myshopify.com host, which is the identifier most store indexes file it under.
Can I search Shopify stores by the apps they have installed?
Not with Shopify's own surfaces, which search products rather than store attributes. For that you need a store index with an app filter, such as Store Leads, StoreCensus or ShopLeads, and the app names have to match exactly.
Is there a free way to search Shopify stores?
Several. Every storefront serves its own product search, product list and sitemap for free; Google operators such as site:myshopify.com and inurl:collections/all find stores at no cost; and most store indexes let you search and count for nothing and charge only for contacts.
Why do Shopify store counts differ so much between tools?
Because they count different populations. One index counts every storefront that resolves, another counts only stores it judges to be real businesses, and the gap between those two definitions is large enough to make the same question return numbers that differ by a factor of eight.
Sources
- Shopify.dev: catalog interfaces for agents · read November 9, 2026
- Shopify.dev: Global Catalog MCP · read November 9, 2026
- Shopify.dev: build commerce agents with UCP · read November 9, 2026
- Shopify: Universal Commerce Protocol · read November 9, 2026
- Shopify.dev: predictive search endpoint · read November 9, 2026
- Shopify Help: storefront search · read November 9, 2026
- Shop, the consumer shopping surface Shopify runs · read November 9, 2026
- Store Leads homepage (platform counts) · read November 9, 2026
- EachSpy Shopify store directory · read November 9, 2026
- CartInsight: websites using Shopify · read November 9, 2026
- Beardbrand storefront · read November 9, 2026
- Mejuri storefront (headless) · read November 9, 2026
- Kith storefront · read November 9, 2026
- Cremo storefront on its myshopify domain · read November 9, 2026
- Texas Beard Co storefront on its myshopify domain · read November 9, 2026
- Badass Beard Care storefront · read November 9, 2026
- Warlord Beard Oil storefront · read November 9, 2026
- Chase the Craft storefront · read November 9, 2026
- David Mallett storefront · read November 9, 2026