Sephora category or brand products

GET https://api.api.sh/sephora/v1/category
1 credit / call e-commerce try it in the playground →

The products of a Sephora (US) category or brand, 60 per page: name, brand, price, rating, review count, number of shades, badges (bestseller, new, exclusive, limited edition, online only) and image. Give category (an id such as cat150006, a slug such as skincare, or a sephora.com/shop/ link) or brand (a slug such as the-ordinary, or a sephora.com/brand/ link; subcategory narrows it to one of its categories). Also returns the category tree with product counts and refinements: every filter the site offers (brand, rating, skin type, ingredients, formulation and more) with counts; pass a value's filter back as filter. Pass next_page back as page; it is null on the last page.

Every response includes credits_used: the credits this call cost.

Parameters

nametypedescription
category string Category id (e.g. cat150006), slug (e.g. skincare) or sephora.com/shop/ link. Give this or brand. Example: cat150006
brand string Brand slug (e.g. the-ordinary) or sephora.com/brand/ link. Give this or category.
subcategory string With brand: only its products in this category id (see categories in the response), e.g. cat150006.
filter string A refinement filter from the response's refinements, e.g. filters[Brand]=rhode. Repeat the parameter or separate with |; values of the same refinement match any.
price_min number Lowest price in USD.
price_max number Highest price in USD.
page integer Page number. Pass next_page from the previous response; next_page is null on the last page.
sort relevance | bestselling | rating | new | price_asc | price_desc

Every endpoint also takes fresh, raw, fields (see lean responses and caching).

Example

curl "https://api.api.sh/sephora/v1/category?category=cat150006" \
  -H "x-api-key: $APISH_KEY"

Response

A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).

The fastest way to see the full response is the playground: it runs this endpoint with your account and shows the exact JSON.