> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/shopify/products>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/shopify/products.mdx>

---

# Shopify Products API

A store's catalogue as product summaries, with the store's own query and sort.

`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.

## Request

- **Endpoint:** `GET /v1/shopify/products`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by store
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/shopify/products/get)
- **Platform page:** [/platforms/shopify](https://www.socialfetch.dev/platforms/shopify)

## 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.
