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', 'images'],
})
{
  "data": [
    {
      "id": "prod_UkLWZg9DAJ",
      "name": "Product 791573",
      "description": "Dolor nihil nisi soluta voluptatem necessitatibus doloribus facilis. Accusantium quo esse at natus explicabo dolorem. Nesciunt corrupti quos voluptatibus exercitationem. Provident at natus molestias placeat odit veritatis. Enim temporibus maiores explicabo adipisci accusamus eius.\nMinima maiores porro aspernatur corporis ea deserunt quos. Accusantium libero dolor aspernatur rem omnis voluptatibus distinctio saepe. Inventore rerum temporibus voluptatum atque. Animi recusandae omnis ad commodi.\nQui dicta amet consequuntur asperiores quasi esse blanditiis modi. Provident excepturi similique laborum ea. Repellat non hic temporibus nisi.",
      "slug": "product-791573",
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 1,
      "available_on": "2025-03-11T14:46:28.471Z",
      "created_at": "2026-03-11T14:46:28.484Z",
      "updated_at": "2026-03-11T14:46:28.522Z",
      "purchasable": true,
      "in_stock": false,
      "backorderable": true,
      "available": true,
      "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 802302",
      "description": "Quo cum inventore ipsa ex ipsam quis. Optio et accusamus ducimus sed. Molestiae debitis libero culpa ipsum. Quam aspernatur eveniet adipisci dolorum.\nSuscipit ab quisquam magni velit perspiciatis veniam odio repellat. Necessitatibus ipsa quam amet reiciendis sunt. Doloremque quidem similique repellat nemo id deserunt dolor.\nEaque occaecati nulla excepturi officia distinctio amet tempore. Voluptatem veniam corrupti sequi ullam placeat. Sit unde mollitia nulla repellendus ab dolor culpa.",
      "slug": "product-802302",
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 0,
      "available_on": "2025-03-11T14:46:28.527Z",
      "created_at": "2026-03-11T14:46:28.536Z",
      "updated_at": "2026-03-11T14:46:28.548Z",
      "purchasable": true,
      "in_stock": false,
      "backorderable": true,
      "available": true,
      "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
  }
}

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[categories_id_eq]
string

Filter by category ID

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, images, 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