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 398974",
      "slug": "product-398974",
      "meta_title": null,
      "meta_description": null,
      "meta_keywords": null,
      "variant_count": 0,
      "available_on": "2025-05-17T22:58:13.003Z",
      "purchasable": true,
      "in_stock": false,
      "backorderable": true,
      "available": true,
      "description": "Officiis magnam distinctio voluptatibus dolores provident. Quae neque corrupti natus id voluptatem occaecati. Eos commodi deserunt quas voluptatibus occaecati ut minus impedit. Molestias tempora quaerat fuga animi occaecati autem voluptatem. Ad error reiciendis odit architecto asperiores quaerat laborum a. Quisquam voluptas cupiditate saepe corporis. Rerum quibusdam odio recusandae minima. Rerum reprehenderit magnam qui exercitationem. Debitis ex optio rem facere officia maiores. Assumenda amet deserunt omnis reiciendis repellendus. Facere cupiditate tempore vel itaque minus. Possimus quisquam error atque recusandae vel. Pariatur repudiandae nam consequuntur fuga voluptates blanditiis dolores beatae. Temporibus vitae nam odio velit voluptatibus.",
      "description_html": "Officiis magnam distinctio voluptatibus dolores provident. Quae neque corrupti natus id voluptatem occaecati. Eos commodi deserunt quas voluptatibus occaecati ut minus impedit. Molestias tempora quaerat fuga animi occaecati autem voluptatem.\nAd error reiciendis odit architecto asperiores quaerat laborum a. Quisquam voluptas cupiditate saepe corporis. Rerum quibusdam odio recusandae minima. Rerum reprehenderit magnam qui exercitationem. Debitis ex optio rem facere officia maiores.\nAssumenda amet deserunt omnis reiciendis repellendus. Facere cupiditate tempore vel itaque minus. Possimus quisquam error atque recusandae vel. Pariatur repudiandae nam consequuntur fuga voluptates blanditiis dolores beatae. Temporibus vitae nam odio velit voluptatibus.",
      "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-17T22:58:13.027Z",
        "updated_at": "2026-05-17T22:58:13.027Z"
      },
      "original_price": null,
      "status": "active",
      "make_active_at": "2025-05-17T22:58:13.003Z",
      "discontinue_on": null,
      "metadata": {},
      "deleted_at": null,
      "created_at": "2026-05-17T22:58:13.014Z",
      "updated_at": "2026-05-17T22:58:13.028Z",
      "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