Skip to main content
GET
Measure out-of-stock rates by retailer or category

Query Parameters

category
string

Product category. Accepts a human-readable name (e.g. 'electronics', 'beauty') or a taxonomy slug path (e.g. 'electronics/headphones'); matched against the catalog's category tree (exact node, subtree, or path substring). Also accepts a GS1 GPC code (exactly 8 digits, e.g. '10001159') to filter by PRODUCT TYPE instead of by shelf placement — the same product type is shelved under different categories by different retailers, so a category filter answers from a fraction of the data while a GPC code spans them. Coarser codes (class/family/segment) match every brick beneath them. Resolve a phrase to a code with /v1/reference/classify?q=... ; when a code is used, resolved.match_source is 'gpc'.

Minimum string length: 1
brand
string

Brand name (e.g., Sony, Samsung, Nike)

Minimum string length: 1
country
enum<string>
default:us

Country (us or ca)

Available options:
us,
ca
aggregate_by
enum<string>
default:seller

Dimension to group by: retail chain (default) or category root.

Available options:
seller,
category_root

Response

Availability index

category
string | null
brand
string | null
country
string
aggregate_by
enum<string>
Available options:
seller,
category_root
groups
object[]
availability_coverage
number
Example:

0.6

coverage
object

How much data backed this answer. sufficient is false when the slice is too thin to read as a market statement; the count is always reported so you can judge for yourself, and note explains an empty or thin result rather than leaving you to infer it.

freshness
object

How current the underlying observations are. observedThrough is the newest observation behind this answer; staleHours is its age. Both null when nothing was observed.

quality
object | null
resolved
object
meta
object