Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Shein API page →
docs / shein

Shein

Shein

base /shein/v15 endpoints
post/shein/v1/product/detail2 credits

Full product record by Shein product id (the number in a /-p-<id>.html URL) or by the URL itself: name, current price and list price as numbers, discount, currency, images and gallery, colour variants, rating and review count, fit-percentages, category, brand and store code, stock and clearance flag, and any promotion tags. Pass `deep=true` to also get a per-variant SIZE list with per-size stock, colour NAMES, and an authoritative deterministic price (adds latency). A product Shein no longer serves comes back as NOT_FOUND, not an empty shell. Without `deep`, prices are Shein's live promotion-driven values that can differ slightly between reads (meta.price_basis = live_estimate); discount_pct is stable. With `deep=true` the price is authoritative (meta.price_basis = authoritative).

ParameterAllowed / rangeDescription
goods_idrequiredShein product id, or pass `url` instead.
urloptionalFull product URL (alternative to goods_id).
market = usoptionalus · uk · de · fr · es · itWhich Shein storefront to read. Prices and availability are per-storefront.
deep = falseoptionalSet true to add per-variant SIZE list with per-size stock, an AUTHORITATIVE (deterministic) price, and colour NAMES — fetched from Shein's realtime surface. Adds latency (a browser session is minted) and may be briefly unavailable under load; when it is, the base record is still returned (size/colour-name fields simply absent, never faked).
Try in playground →
post/shein/v1/products_batch2 credits

Look up MANY Shein products in ONE call by product id — up to 20 per request. COST, stated plainly: Shein publishes no batched product endpoint, so this costs ONE upstream request PER ID exactly as if you had called product/detail N times, and it is priced that way. What you save is wall-clock, not requests. Ids Shein does not serve come back in `not_found` rather than being silently dropped.

ParameterAllowed / rangeDescription
goods_idsrequiredList (or comma-separated string) of Shein product ids.
market = usoptionalus · uk · de · fr · es · itWhich Shein storefront to read. Prices and availability are per-storefront.
Try in playground →
post/shein/v1/price2 credits

Cheap price and stock refresh for one product — the same upstream read as product/detail but returning only the money and availability fields, for callers who re-check a large catalogue on a schedule and do not want the rest of the record. Without `deep`, Shein's price is a live promotion-driven value that can differ between reads (meta.price_basis = live_estimate); average a few reads for one authoritative number. Pass `deep=true` for a single authoritative deterministic price in one call (adds latency; meta.price_basis = authoritative).

ParameterAllowed / rangeDescription
goods_idrequiredShein product id, or pass `url` instead.
urloptionalFull product URL (alternative to goods_id).
market = usoptionalus · uk · de · fr · es · itWhich Shein storefront to read. Prices and availability are per-storefront.
deep = falseoptionalSet true to add per-variant SIZE list with per-size stock, an AUTHORITATIVE (deterministic) price, and colour NAMES — fetched from Shein's realtime surface. Adds latency (a browser session is minted) and may be briefly unavailable under load; when it is, the base record is still returned (size/colour-name fields simply absent, never faked).
Try in playground →
post/shein/v1/category/browse1 credit

Browse a Shein category shelf by category id (the number in a /-c-<id>.html URL) or by the URL itself, with pagination — returns the same rich product cards as search. IMPORTANT (measured 2026-09-03): Shein currently risk-gates this category endpoint on direct access (it answers even a real browser's own request with a block on a cold category navigation), so this action returns a clear retryable 'not reachable' error rather than a faked or empty shelf. Use `search` with a text query for catalogue coverage today. This endpoint activates automatically if/when the gate loosens.

ParameterAllowed / rangeDescription
category_idrequiredShein category id (the number in a /-c-<id>.html URL), or pass the category URL.
market = usoptionalus · uk · de · fr · es · itWhich Shein storefront to read. Prices and availability are per-storefront.
page = 1optional1–Result page. Empty page = end of list.
limit = 100optional1–120Rows per page (max 120).
Try in playground →