Skip to main content
GET
/
api
/
v3
/
store
/
products
Spree SDK
import { createClient } from '@spree/sdk'

const client = createClient({
  baseUrl: 'https://your-store.com',
  publishableKey: '<api-key>',
})

const products = await client.products.list({
  page: 1,
  limit: 25,
  sort: 'price',
  name_cont: 'shirt',
  price_gte: 20,
  price_lte: 100,
  with_option_value_ids: ['optval_abc', 'optval_def'],
  expand: ['variants', 'media'],
})
{
  "data": [
    {
      "id": "prod_UkLWZg9DAJ",
      "name": "Product 1171648",
      "slug": "product-1171648",
      "meta_title": null,
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 1,
      "available_on": "2025-05-13T22:27:20.479Z",
      "purchasable": true,
      "in_stock": false,
      "backorderable": true,
      "available": true,
      "description": "A comfortable cotton t-shirt.",
      "description_html": "<p>A <strong>comfortable</strong> cotton t-shirt.</p>",
      "default_variant_id": "variant_gbHJdmfrXB",
      "thumbnail_url": null,
      "tags": [],
      "price": {
        "id": "price_gbHJdmfrXB",
        "amount": "19.99",
        "amount_in_cents": 1999,
        "compare_at_amount": null,
        "compare_at_amount_in_cents": null,
        "currency": "USD",
        "display_amount": "$19.99",
        "display_compare_at_amount": null,
        "price_list_id": null
      },
      "original_price": null
    },
    {
      "id": "prod_gbHJdmfrXB",
      "name": "Product 1189078",
      "slug": "product-1189078",
      "meta_title": null,
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 0,
      "available_on": "2025-05-13T22:27:20.542Z",
      "purchasable": true,
      "in_stock": false,
      "backorderable": true,
      "available": true,
      "description": "Nisi nostrum blanditiis sit reiciendis id dolorum. Rerum consequatur laudantium fugiat corrupti eum atque perspiciatis repellendus. Repellendus eum laborum praesentium totam consequuntur. Dignissimos facere aut eaque suscipit. Sit itaque officiis recusandae tempore libero sapiente laboriosam. Quod quisquam natus deleniti provident et error velit. Veritatis facere temporibus qui maiores quaerat iure aliquid. Iusto repudiandae tenetur assumenda officia occaecati.",
      "description_html": "Nisi nostrum blanditiis sit reiciendis id dolorum. Rerum consequatur laudantium fugiat corrupti eum atque perspiciatis repellendus. Repellendus eum laborum praesentium totam consequuntur.\nDignissimos facere aut eaque suscipit. Sit itaque officiis recusandae tempore libero sapiente laboriosam. Quod quisquam natus deleniti provident et error velit. Veritatis facere temporibus qui maiores quaerat iure aliquid. Iusto repudiandae tenetur assumenda officia occaecati.",
      "default_variant_id": "variant_EfhxLZ9ck8",
      "thumbnail_url": null,
      "tags": [],
      "price": {
        "id": "price_EfhxLZ9ck8",
        "amount": "19.99",
        "amount_in_cents": 1999,
        "compare_at_amount": null,
        "compare_at_amount_in_cents": null,
        "currency": "USD",
        "display_amount": "$19.99",
        "display_compare_at_amount": null,
        "price_list_id": null
      },
      "original_price": null
    }
  ],
  "meta": {
    "page": 1,
    "limit": 25,
    "count": 2,
    "pages": 1,
    "from": 1,
    "to": 2,
    "in": 2,
    "previous": null,
    "next": null
  }
}

Documentation Index

Fetch the complete documentation index at: https://spreecommerce.org/docs/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

x-spree-api-key
string
header
required

Publishable API key for store access

Headers

x-spree-api-key
string
required

Publishable API key

Query Parameters

page
integer

Page number (default: 1)

limit
integer

Number of items per page (default: 25, max: 100)

sort
string

Sort order. Prefix with - for descending. Values: price, -price, best_selling, name, -name, -available_on, available_on

q[name_cont]
string

Filter by name containing string

q[in_category]
string

Filter by category prefixed ID (includes descendants)

q[in_categories][]
string

Filter by multiple category prefixed IDs (OR logic, includes descendants)

q[price_gte]
number

Filter by minimum price

q[price_lte]
number

Filter by maximum price

q[with_option_value_ids][]
string

Filter by option value prefix IDs (e.g., optval_abc). Pass multiple values for OR logic.

q[in_stock]
boolean

Filter to only in-stock products

expand
string

Comma-separated associations to expand (variants, media, categories, option_types)

fields
string

Comma-separated list of fields to include (e.g., name,slug,price). id is always included.

Response

products found

data
object[]
required
meta
object
required