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

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

const products = await client.store.products.list({
  page: 1,
  limit: 25,
  sort: 'price asc',
  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 631938",
      "description": "Voluptas est harum inventore accusamus vero quod tenetur quia. Assumenda quasi veritatis iste id. Amet vero quo tempora repellendus. Est illum sapiente vero cumque qui quis esse porro. Nemo natus sunt pariatur quos.",
      "slug": "product-631938",
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 1,
      "available_on": "2025-03-05T20:52:36.543Z",
      "created_at": "2026-03-05T20:52:36.559Z",
      "updated_at": "2026-03-05T20:52:36.609Z",
      "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 643372",
      "description": "Id eos veniam suscipit nam quod. Pariatur natus nesciunt temporibus molestiae. In deleniti molestiae corrupti iusto vitae dolores. Aut perspiciatis sapiente sunt assumenda quis consequuntur saepe. Enim eaque optio nesciunt provident magni perferendis officiis.\nDolore earum rem ratione eligendi. Distinctio maiores odit consequuntur soluta exercitationem natus ea magni. Dolores sequi reprehenderit explicabo excepturi numquam. Maiores quae distinctio necessitatibus vitae aut debitis autem.",
      "slug": "product-643372",
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 0,
      "available_on": "2025-03-05T20:52:36.615Z",
      "created_at": "2026-03-05T20:52:36.625Z",
      "updated_at": "2026-03-05T20:52:36.637Z",
      "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. Values: price asc, price desc, best_selling, name asc, name desc, available_on desc, available_on asc

q[name_cont]
string

Filter by name containing string

q[taxons_id_eq]
string

Filter by taxon 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, taxons, 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