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,
})spree api get /products -d '{"name_cont":"shirt","status_eq":"active","sort":"-created_at","limit":25}'{
"data": [
{
"id": "prod_UkLWZg9DAJ",
"name": "Product 629418",
"slug": "product-629418",
"meta_title": null,
"meta_description": null,
"meta_keywords": null,
"variant_count": 0,
"available_on": null,
"preorder_ships_at": null,
"purchasable": true,
"preorder": false,
"in_stock": false,
"backorderable": true,
"available": true,
"description": "Possimus consequuntur molestiae mollitia hic esse culpa soluta. Non fugit vel labore in id at natus. Dolore voluptatem pariatur cumque dolorem tempora. Beatae explicabo architecto optio quam. Sit dolore cumque adipisci doloremque ex quisquam ea. Eum beatae laboriosam magni at sit ex. Maxime esse dicta natus corporis exercitationem. Libero repudiandae nesciunt officia placeat. Nihil voluptatibus dolor consequuntur deleniti perferendis. Magni vero provident natus blanditiis placeat. Aliquam molestiae cum ullam deserunt consectetur debitis. Blanditiis consequuntur minima beatae perferendis. Tenetur magni deserunt odit sequi expedita in quis quos. Eligendi iusto repellendus quae ratione iure. Magni fugit dolor quae tempora praesentium. Quia ex facere enim ipsum facilis hic. Eos facilis sapiente consequatur veritatis pariatur ad officiis. Odio consequuntur rerum aspernatur maxime. Quis consequatur totam eveniet quidem officiis.",
"description_html": "Possimus consequuntur molestiae mollitia hic esse culpa soluta. Non fugit vel labore in id at natus. Dolore voluptatem pariatur cumque dolorem tempora. Beatae explicabo architecto optio quam. Sit dolore cumque adipisci doloremque ex quisquam ea.\nEum beatae laboriosam magni at sit ex. Maxime esse dicta natus corporis exercitationem. Libero repudiandae nesciunt officia placeat. Nihil voluptatibus dolor consequuntur deleniti perferendis.\nMagni vero provident natus blanditiis placeat. Aliquam molestiae cum ullam deserunt consectetur debitis. Blanditiis consequuntur minima beatae perferendis.\nTenetur magni deserunt odit sequi expedita in quis quos. Eligendi iusto repellendus quae ratione iure. Magni fugit dolor quae tempora praesentium.\nQuia ex facere enim ipsum facilis hic. Eos facilis sapiente consequatur veritatis pariatur ad officiis. Odio consequuntur rerum aspernatur maxime. Quis consequatur totam eveniet quidem officiis.",
"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-07-27T20:01:26.819Z",
"updated_at": "2026-07-27T20:01:26.819Z"
},
"original_price": null,
"status": "active",
"metadata": {},
"deleted_at": null,
"created_at": "2026-07-27T20:01:26.811Z",
"updated_at": "2026-07-27T20:01:26.825Z",
"tax_category_id": "taxcat_UkLWZg9DAJ"
}
],
"meta": {
"page": 1,
"limit": 25,
"count": 1,
"pages": 1,
"from": 1,
"to": 1,
"in": 1,
"previous": null,
"next": null
}
}{
"error": {
"code": "authentication_required",
"message": "Authentication required"
}
}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,
})spree api get /products -d '{"name_cont":"shirt","status_eq":"active","sort":"-created_at","limit":25}'{
"data": [
{
"id": "prod_UkLWZg9DAJ",
"name": "Product 629418",
"slug": "product-629418",
"meta_title": null,
"meta_description": null,
"meta_keywords": null,
"variant_count": 0,
"available_on": null,
"preorder_ships_at": null,
"purchasable": true,
"preorder": false,
"in_stock": false,
"backorderable": true,
"available": true,
"description": "Possimus consequuntur molestiae mollitia hic esse culpa soluta. Non fugit vel labore in id at natus. Dolore voluptatem pariatur cumque dolorem tempora. Beatae explicabo architecto optio quam. Sit dolore cumque adipisci doloremque ex quisquam ea. Eum beatae laboriosam magni at sit ex. Maxime esse dicta natus corporis exercitationem. Libero repudiandae nesciunt officia placeat. Nihil voluptatibus dolor consequuntur deleniti perferendis. Magni vero provident natus blanditiis placeat. Aliquam molestiae cum ullam deserunt consectetur debitis. Blanditiis consequuntur minima beatae perferendis. Tenetur magni deserunt odit sequi expedita in quis quos. Eligendi iusto repellendus quae ratione iure. Magni fugit dolor quae tempora praesentium. Quia ex facere enim ipsum facilis hic. Eos facilis sapiente consequatur veritatis pariatur ad officiis. Odio consequuntur rerum aspernatur maxime. Quis consequatur totam eveniet quidem officiis.",
"description_html": "Possimus consequuntur molestiae mollitia hic esse culpa soluta. Non fugit vel labore in id at natus. Dolore voluptatem pariatur cumque dolorem tempora. Beatae explicabo architecto optio quam. Sit dolore cumque adipisci doloremque ex quisquam ea.\nEum beatae laboriosam magni at sit ex. Maxime esse dicta natus corporis exercitationem. Libero repudiandae nesciunt officia placeat. Nihil voluptatibus dolor consequuntur deleniti perferendis.\nMagni vero provident natus blanditiis placeat. Aliquam molestiae cum ullam deserunt consectetur debitis. Blanditiis consequuntur minima beatae perferendis.\nTenetur magni deserunt odit sequi expedita in quis quos. Eligendi iusto repellendus quae ratione iure. Magni fugit dolor quae tempora praesentium.\nQuia ex facere enim ipsum facilis hic. Eos facilis sapiente consequatur veritatis pariatur ad officiis. Odio consequuntur rerum aspernatur maxime. Quis consequatur totam eveniet quidem officiis.",
"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-07-27T20:01:26.819Z",
"updated_at": "2026-07-27T20:01:26.819Z"
},
"original_price": null,
"status": "active",
"metadata": {},
"deleted_at": null,
"created_at": "2026-07-27T20:01:26.811Z",
"updated_at": "2026-07-27T20:01:26.825Z",
"tax_category_id": "taxcat_UkLWZg9DAJ"
}
],
"meta": {
"page": 1,
"limit": 25,
"count": 1,
"pages": 1,
"from": 1,
"to": 1,
"in": 1,
"previous": null,
"next": null
}
}{
"error": {
"code": "authentication_required",
"message": "Authentication required"
}
}
