Shopify Products API
A store's catalogue as product summaries, with the store's own query and sort.
GET /v1/shopify/products1 credit Failed requests are free
About this endpoint
GET /v1/shopify/products?store=… returns data.products, each with id, gid, handle, url, title, vendor, productType, tags, availableForSale, updatedAt, priceRange, compareAtPriceRange and featuredImage. priceRange has min and max money objects with amount and currency.
Filter with the store's own query syntax, for example product_type:Shoes AND tag:sale. Add sort, reverse, available, createdAfter or createdBefore, and use limit and cursor to page. sort=relevance needs query; without one the request is refused with a 400. Pass country and language to read a market.
truncated is true when the list stops at the 25,000-item list limit. Narrow the date range to reach the rest.
Shopify Products API FAQ
What can I put in query?
The store's own product query syntax, for example product_type:Shoes AND tag:sale. It is passed to the store, so invalid syntax fails with a 400.
Which sorts are supported?
best_selling, created, updated, price, title, vendor, product_type and relevance. relevance needs query. reverse flips the order. Omit sort to keep the store's own order.
What does truncated mean?
The list reached the 25,000-item list limit. Use createdBefore or createdAfter to split the catalogue into narrower ranges.
Are prices in my currency?
No. amount and currency come from the store and the market you requested. Pass country to change the 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.
Other Shopify endpoints
- StoreGET /v1/shopify/store
- PoliciesGET /v1/shopify/store/policies
- LocationsGET /v1/shopify/store/locations
- MenuGET /v1/shopify/store/menus/{handle}
- RedirectsGET /v1/shopify/store/redirects
- SitemapGET /v1/shopify/store/sitemap
- ProductGET /v1/shopify/products/{handle}
- RecommendationsGET /v1/shopify/products/{handle}/recommendations