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

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

const product = await client.products.get('spree-tote', {
  expand: ['variants', 'media'],
})
{
  "id": "prod_UkLWZg9DAJ",
  "name": "Product 896469",
  "slug": "product-896469",
  "meta_description": null,
  "meta_keywords": null,
  "variant_count": 1,
  "available_on": "2025-04-14T09:17:50.257Z",
  "purchasable": true,
  "in_stock": false,
  "backorderable": true,
  "available": true,
  "description": "A comfortable cotton t-shirt.",
  "description_html": "<p>A <strong>comfortable</strong> cotton t-shirt.</p>",
  "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,
  "prior_price": {
    "id": "_AXs1igzRC6",
    "amount": "9.99",
    "amount_in_cents": 999,
    "currency": "USD",
    "display_amount": "$9.99",
    "recorded_at": "2026-03-30T09:17:50Z"
  }
}

Authorizations

x-spree-api-key
string
header
required

Publishable API key for store access

Headers

x-spree-api-key
string
required

Publishable API key

Path Parameters

id
string
required

Product slug (e.g., spree-tote) or prefix ID (e.g., product_abc123)

Query Parameters

expand
string

Comma-separated associations to expand

fields
string

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

Response

product without prior_price expanded does not include field

id
string
required
name
string
required
slug
string
required
meta_description
string | null
required
meta_keywords
string | null
required
variant_count
number
required
available_on
string | null
required
purchasable
boolean
required
in_stock
boolean
required
backorderable
boolean
required
available
boolean
required
description
string | null
required
description_html
string | null
required
default_variant_id
string
required
thumbnail_url
string | null
required
tags
string[]
required
price
object
required
original_price
object
required
primary_media
object
media
object[]
variants
object[]
default_variant
object
option_types
object[]
categories
object[]
custom_fields
object[]
prior_price
object