Skip to main content
GET
/
api
/
v3
/
admin
/
products
Spree Admin SDK
import { createAdminClient } from '@spree/admin-sdk'

const client = createAdminClient({
  baseUrl: 'https://your-store.com',
  secretKey: 'sk_xxx',
})

const { data: products } = await client.products.list({
  name_cont: 'shirt',
  status_eq: 'active',
  sort: '-created_at',
  limit: 25,
})
{
  "data": [
    {
      "id": "prod_UkLWZg9DAJ",
      "name": "Product 393216",
      "slug": "product-393216",
      "meta_title": null,
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 0,
      "available_on": "2025-05-21T18:11:34.653Z",
      "purchasable": true,
      "in_stock": false,
      "backorderable": true,
      "available": true,
      "description": "Vero nulla quasi dignissimos maxime sequi ipsam voluptas eaque. Distinctio quibusdam sint accusantium consectetur. Suscipit nobis aliquid laudantium nihil. Asperiores modi laudantium culpa blanditiis sapiente ab architecto ut. Provident ipsa doloribus illo accusamus fugiat ullam magni voluptates. Aut laboriosam repellendus iusto omnis alias. Ipsam eius totam minima rerum molestiae. Aspernatur sequi voluptatum quia cum architecto sunt eveniet esse. Quibusdam consequatur totam in non neque. Nam quaerat molestias fugit neque nemo vitae veritatis saepe. Voluptatibus minima aspernatur pariatur doloribus repudiandae eaque. Doloremque quisquam eveniet repellendus aut eos quam blanditiis occaecati. Sequi iste asperiores distinctio harum. Voluptatibus optio asperiores voluptas labore non laboriosam.",
      "description_html": "Vero nulla quasi dignissimos maxime sequi ipsam voluptas eaque. Distinctio quibusdam sint accusantium consectetur. Suscipit nobis aliquid laudantium nihil. Asperiores modi laudantium culpa blanditiis sapiente ab architecto ut.\nProvident ipsa doloribus illo accusamus fugiat ullam magni voluptates. Aut laboriosam repellendus iusto omnis alias. Ipsam eius totam minima rerum molestiae. Aspernatur sequi voluptatum quia cum architecto sunt eveniet esse. Quibusdam consequatur totam in non neque.\nNam quaerat molestias fugit neque nemo vitae veritatis saepe. Voluptatibus minima aspernatur pariatur doloribus repudiandae eaque. Doloremque quisquam eveniet repellendus aut eos quam blanditiis occaecati. Sequi iste asperiores distinctio harum. Voluptatibus optio asperiores voluptas labore non laboriosam.",
      "default_variant_id": "variant_UkLWZg9DAJ",
      "thumbnail_url": null,
      "tags": [],
      "price": {
        "id": "price_UkLWZg9DAJ",
        "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,
        "variant_id": "variant_UkLWZg9DAJ",
        "created_at": "2026-05-21T18:11:34.688Z",
        "updated_at": "2026-05-21T18:11:34.688Z"
      },
      "original_price": null,
      "status": "active",
      "make_active_at": "2025-05-21T18:11:34.654Z",
      "discontinue_on": null,
      "metadata": {},
      "deleted_at": null,
      "created_at": "2026-05-21T18:11:34.668Z",
      "updated_at": "2026-05-21T18:11:34.690Z",
      "tax_category_id": "taxcat_UkLWZg9DAJ"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 25,
    "count": 1,
    "pages": 1,
    "from": 1,
    "to": 1,
    "in": 1,
    "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

Secret API key for admin access

Authorization
string
header
required

JWT token for admin user authentication

Headers

x-spree-api-key
string
required
Authorization
string
required

Bearer token for admin authentication

Query Parameters

page
integer

Page number

limit
integer

Number of records per page

sort
string

Sort field (e.g., name, -name, price, -price, best_selling)

expand
string

Comma-separated associations to expand (e.g., variants, media, option_types, categories). Use dot notation for nested expand (max 4 levels).

fields
string

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

q[name_cont]
string

Filter by name (contains)

q[status_eq]
string

Filter by status

Response

products found

data
object[]
required
meta
object
required