Shopify hub

Shopify Search API

The store's own search results across products, articles and pages.

GET /v1/shopify/search

1 credit Failed requests are free

About this endpoint

GET /v1/shopify/search?store=…&query=shirt returns data.query, the type array that was searched, totalCount, totalCountCapped, products, articles, pages, filters and page.

Pass type=product, article or page to narrow the search. Add available, priceMin or priceMax for products, and limit and cursor to page. Product hits can carry id null when the store's search answer omits it, but handle and title are always present.

The store caps its own totalCount at 1,000. totalCountCapped is true when that cap was reached, so the count is a lower bound.

Shopify Search API FAQ

Why is totalCountCapped true?

The store caps its search count at 1,000. The number is a lower bound, not the full number of matches.

Why is a product id null in a search hit?

The store's search answer omitted it. Use handle and title to identify the hit, then call the product route for the full record.

Does search include articles and pages?

Yes, by default it searches all three types. Pass type to keep one.

Are prices in the store's currency?

Yes. Pass country to read a market where the store supports it.

How do I name the store?

The store is the domain, for example allbirds.com, www.allbirds.com or weareallbirds.myshopify.com. A full URL is reduced to its host.

How is it billed?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.

What does lookupStatus mean?

found means the lookup succeeded. not_found means the store or entity does not exist or is not a Shopify store. private means the storefront is password-protected. restricted means it is paused or frozen. HTTP 200 only means the request finished, so branch on lookupStatus.