Returns a paginated list of products for the current store.
Required scope: read_products (for API-key authentication).
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 574468",
"slug": "product-574468",
"meta_title": null,
"meta_description": null,
"meta_keywords": null,
"variant_count": 0,
"available_on": null,
"purchasable": true,
"in_stock": false,
"backorderable": true,
"available": true,
"description": "Omnis iusto quisquam repellat voluptatem rem porro reiciendis animi. Officia iure neque consequatur dolorum. Porro saepe perspiciatis sequi aperiam nam non deserunt libero. Maiores harum alias nihil illo praesentium. Excepturi modi molestias ullam similique officiis consequatur. Error minus consequatur perspiciatis optio molestiae non ratione placeat. Velit perspiciatis hic qui voluptatum non repudiandae unde quisquam. At vero ea sit necessitatibus sapiente ullam nostrum. Quae facilis ipsum voluptatum temporibus sint harum. Veniam odit nam ducimus dolores numquam. Esse aut architecto velit vitae ratione. Qui laborum eligendi assumenda quia quasi eum incidunt. In aspernatur nulla exercitationem veniam. Quia inventore provident quo vel perspiciatis adipisci.",
"description_html": "Omnis iusto quisquam repellat voluptatem rem porro reiciendis animi. Officia iure neque consequatur dolorum. Porro saepe perspiciatis sequi aperiam nam non deserunt libero. Maiores harum alias nihil illo praesentium. Excepturi modi molestias ullam similique officiis consequatur.\nError minus consequatur perspiciatis optio molestiae non ratione placeat. Velit perspiciatis hic qui voluptatum non repudiandae unde quisquam. At vero ea sit necessitatibus sapiente ullam nostrum. Quae facilis ipsum voluptatum temporibus sint harum. Veniam odit nam ducimus dolores numquam.\nEsse aut architecto velit vitae ratione. Qui laborum eligendi assumenda quia quasi eum incidunt. In aspernatur nulla exercitationem veniam. Quia inventore provident quo vel perspiciatis adipisci.",
"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-06-17T13:37:41.022Z",
"updated_at": "2026-06-17T13:37:41.022Z"
},
"original_price": null,
"status": "active",
"metadata": {},
"deleted_at": null,
"created_at": "2026-06-17T13:37:41.012Z",
"updated_at": "2026-06-17T13:37:41.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
}
}Authorizations
Secret API key for admin access
JWT token for admin user authentication
Headers
Bearer token for admin authentication
Query Parameters
Page number
Number of records per page
Sort field (e.g., name, -name, price, -price, best_selling)
Comma-separated associations to expand (e.g., variants, media, option_types, categories). Use dot notation for nested expand (max 4 levels).
Comma-separated list of fields to include (e.g., name,slug,price,status). id is always included.
Filter by name (contains)
Filter by status
Was this page helpful?
⌘I
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 574468",
"slug": "product-574468",
"meta_title": null,
"meta_description": null,
"meta_keywords": null,
"variant_count": 0,
"available_on": null,
"purchasable": true,
"in_stock": false,
"backorderable": true,
"available": true,
"description": "Omnis iusto quisquam repellat voluptatem rem porro reiciendis animi. Officia iure neque consequatur dolorum. Porro saepe perspiciatis sequi aperiam nam non deserunt libero. Maiores harum alias nihil illo praesentium. Excepturi modi molestias ullam similique officiis consequatur. Error minus consequatur perspiciatis optio molestiae non ratione placeat. Velit perspiciatis hic qui voluptatum non repudiandae unde quisquam. At vero ea sit necessitatibus sapiente ullam nostrum. Quae facilis ipsum voluptatum temporibus sint harum. Veniam odit nam ducimus dolores numquam. Esse aut architecto velit vitae ratione. Qui laborum eligendi assumenda quia quasi eum incidunt. In aspernatur nulla exercitationem veniam. Quia inventore provident quo vel perspiciatis adipisci.",
"description_html": "Omnis iusto quisquam repellat voluptatem rem porro reiciendis animi. Officia iure neque consequatur dolorum. Porro saepe perspiciatis sequi aperiam nam non deserunt libero. Maiores harum alias nihil illo praesentium. Excepturi modi molestias ullam similique officiis consequatur.\nError minus consequatur perspiciatis optio molestiae non ratione placeat. Velit perspiciatis hic qui voluptatum non repudiandae unde quisquam. At vero ea sit necessitatibus sapiente ullam nostrum. Quae facilis ipsum voluptatum temporibus sint harum. Veniam odit nam ducimus dolores numquam.\nEsse aut architecto velit vitae ratione. Qui laborum eligendi assumenda quia quasi eum incidunt. In aspernatur nulla exercitationem veniam. Quia inventore provident quo vel perspiciatis adipisci.",
"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-06-17T13:37:41.022Z",
"updated_at": "2026-06-17T13:37:41.022Z"
},
"original_price": null,
"status": "active",
"metadata": {},
"deleted_at": null,
"created_at": "2026-06-17T13:37:41.012Z",
"updated_at": "2026-06-17T13:37:41.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
}
}
