Shein API & Scraper
Shein API returns live Shein data as clean JSON for shein The primary endpoint, search, returns matching records including goods id, name, price, list price and discount pct.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
Developers reach for it when they need to track product listings, prices, availability, variants and reviews without maintaining one-off scraping code or separate API contracts. If you were about to build or fix a Shein scraper, this API is the maintained alternative — it returns the same data as clean JSON, with the proxies, rotation and anti-bot handling already solved. This page covers the live example, request shape, response shape and available actions: search, product/detail, price, category/browse. Every request uses the same ReefAPI envelope, one API key and one shared credit pool, so it fits alongside the rest of your data stack.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/shein/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "summer dress",
"max_results": 20
}
}{
"ok": true,
"meta": {
"api": "shein",
"endpoint": "search",
"mode": "live",
"latency_ms": 2804.5,
"record_count": 20,
"bytes": 0,
"cache_hit": false,
"market": "us",
"price_basis": "listing",
"price_note": "Card prices are the offer shown on Shein's listing for one shopper session and equal the product page price for that session. Shein runs price tests, so a different session can see a different promotional price for the same product (list_price is the same for everyone). If a card price could not be verified it is returned as null (counted in rows_price_withheld), never estimated.",
"pages_from_one_session": "[redacted-secret]",
"result_count": 16054,
"charged_credits": 4,
"version": "0.3.0"
},
"data": {
"query": "summer dress",
"results": [
{
"goods_id": "458057728",
"goods_sn": "sz260112133381631268128",
"spu": "z2601121333816312",
"name": "Aloruh Women's Solid Color Sleeveless Mini Dress, Suitable For Beach Vacation,Dresses For Women Summer",
"url": "https://us.shein.com/Aloruh-Women-s-Solid-Color-Sleeveless-Mini-Dress-Suitable-For-Beach-Vacation-Dresses-For-Women-Summer-p-458057728.html",
"image": "https://img.ltwebstatic.com/v4/j/pi/2026/05/02/f8/17776852344d34295349aad8f43f4fbd32e5a672d8_thumbnail_405x552.jpg",
"images": [
"https://img.ltwebstatic.com/v4/j/pi/2026/05/02/29/1777685233ba0e65ec6e79aec758b0e3935b4921ef_thumbnail_405x552.jpg",
"https://img.ltwebstatic.com/v4/j/pi/2026/05/02/45/17776852360ca06eed24f98fcf6bfdd05c8b860495_thumbnail_405x552.jpg",
"https://img.ltwebstatic.com/v4/j/pi/2026/05/02/65/177768523835c3fa46efbfe001e6968718dffd62fb_thumbnail_405x552.jpg"
],
"price": 15.22,
"price_display": "$15.22",
"list_price": 18.29,
"list_price_display": "$18.29",
"discount_pct": "17",
"currency_code": "USD",
"in_stock": true,
"stock": null,
"is_clearance": true,
"rating": 4.61,
"reviews_count": 1001,
"fit_true_size_pct": "95%",
"fit_runs_large_pct": "1%",
"fit_runs_small_pct": "4%",
"category": "Women Mini Dresses",
"category_id": "12475",
"brand": "Aloruh",
"brand_code": "1blsm",
"store_name": "Aloruh",
"store_code": "4534970445",
"mall_code": "1",
"colors": [
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
},
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
},
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
}
],
"color_count": 22,
"promotions": [
{
"type_id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"ends": "[trimmed-depth]"
}
],
"video_url": null
},
{
"goods_id": "106108756",
"goods_sn": "sz25060944373589399",
"spu": "z250418642699",
"name": "Wandoria Women's Summer Olive Green Boho Casual Vacation Holiday Dress,Shirred Bust Tiered Skirt A-Line Backless Adjustable Tie Neck Bamboo Knot Beach Dress",
"url": "https://us.shein.com/Wandoria-Women-s-Summer-Olive-Green-Boho-Casual-Vacation-Holiday-Dress-Shirred-Bust-Tiered-Skirt-A-Line-Backless-Adjustable-Tie-Neck-Bamboo-Knot-Beach-Dress-p-106108756.html",
"image": "https://img.ltwebstatic.com/v4/j/pi/2025/06/23/64/175067005651b4eef9c4d3bfea0941db9a8e5daa55_thumbnail_405x552.jpg",
"images": [
"https://img.ltwebstatic.com/v4/j/pi/2025/06/23/73/17506700583693445051b5a3bf7e636359c4bfd530_thumbnail_405x552.jpg",
"https://img.ltwebstatic.com/v4/j/pi/2025/06/23/e4/1750670059332329e4fb2d4ebb6ae09bbb710b19fa_thumbnail_405x552.jpg",
"https://img.ltwebstatic.com/v4/j/pi/2026/04/14/7e/1776157333dbea41579324d39bb09bc61ef44c6285_thumbnail_405x552.jpg"
],
"price": 14.7,
"price_display": "$14.70",
"list_price": 19.39,
"list_price_display": "$19.39",
"discount_pct": "24",
"currency_code": "USD",
"in_stock": true,
"stock": null,
"is_clearance": true,
"rating": 4.72,
"reviews_count": 1001,
"fit_true_size_pct": "93%",
"fit_runs_large_pct": "5%",
"fit_runs_small_pct": "2%",
"category": "Women Mini Dresses",
"category_id": "12475",
"brand": "Wandoria",
"brand_code": "19wzx",
"store_name": "Wandoria",
"store_code": "7340826820",
"mall_code": "1",
"colors": [
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
},
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
},
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
}
],
"color_count": 37,
"promotions": [
{
"type_id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"ends": "[trimmed-depth]"
}
],
"video_url": null
},
{
"goods_id": "437684992",
"goods_sn": "sz260305181873185810848",
"spu": "z2603051818731858",
"name": "Pariaura Minimalist White Linen Sleeveless V-Neck Dress / Relaxed A-Line Dress / Korean Soft Style / Daily Commute Short Dress",
"url": "https://us.shein.com/Pariaura-Minimalist-White-Linen-Sleeveless-V-Neck-Dress-Relaxed-A-Line-Dress-Korean-Soft-Style-Daily-Commute-Short-Dress-p-437684992.html",
"image": "https://img.ltwebstatic.com/v4/j/dps/PS2026092323589/33ff1c4521f5200c6b1f5a9f0f2bf592f991b7f9c6b7c45f3efcc8fad0387b21_thumbnail_405x552.jpg",
"images": [
"https://img.ltwebstatic.com/v4/j/dps/PS2026092323589/65008bb6a2cdb7a6f4b699f3f343281a72bfe06d9e8d1962b12592b2abdb73b3_thumbnail_405x552.jpg",
"https://img.ltwebstatic.com/v4/j/dps/PS2026092323589/0b8e2785bb0d29596c53be973d0f5ac220766e7deb412bbc96c0d6c5dcb65c52_thumbnail_405x552.jpg",
"https://img.ltwebstatic.com/v4/j/dps/PS2026092323589/caf4755e3bec6cb2dd812203ba060a9c1ac81e84f3ff18cdf9221fa553d9b0bc_thumbnail_405x552.jpg"
],
"price": 18.42,
"price_display": "$18.42",
"list_price": 21.49,
"list_price_display": "$21.49",
"discount_pct": "14",
"currency_code": "USD",
"in_stock": true,
"stock": null,
"is_clearance": true,
"rating": 4.57,
"reviews_count": 379,
"fit_true_size_pct": "83%",
"fit_runs_large_pct": "11%",
"fit_runs_small_pct": "6%",
"category": "Women Mini Dresses",
"category_id": "12475",
"brand": "Pariaura",
"brand_code": "12xn4",
"store_name": null,
"store_code": "7361015617",
"mall_code": "1",
"colors": [
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
},
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
},
{
"goods_id": "[trimmed-depth]",
"color": "[trimmed-depth]",
"image": "[trimmed-depth]"
}
],
"color_count": 11,
"promotions": [
{
"type_id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"ends": "[trimmed-depth]"
}
],
"video_url": null
}
],
"page": 1,
"has_next": true,
"category_id": null
}
}What the Shein API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Return JSON product cards from the selected storefront with local prices, currency and product URLs. Global and regional search support page=1 and up to 40 results. US search retains pagination. Source totals can exceed returned rows; there is no automatic regional pagination. Global is the default. | Pricing teams call search to get jSON product cards from the selected storefront with local prices, currency and product URLs. | query, market, max_results, page, limit, ... |
| product/detail | Read a complete selected regional product page in its local currency, by product id or URL. Includes current page prices, all published SKUs with size and stock, total stock, images, and available size charts, attributes and description. These fields are included by default. sizes[] carries each size's price, list_price and base_price next to its stock. Shein runs price tests: two shopper sessions can see different promotional prices for the same product. price is the offer of the session that read the page; base_price (the price before any promotion) and list_price are the same for every session, and price_test_applied tells whether the test discount is in price. Shein shows stock up to 20 per SKU: a stock of 20 means 20 or more (stock_is_minimum / total_stock_is_minimum). colors[] lists the colour variants with name, goods_id and swatch image. Optional fields/exclude shape the response; the raw source blocks are about 95% of its size. Unavailable global SKU prices are null and sku_prices_complete is false. Missing product prices return an error without additional price lookup requests. Prices can change; no global product is successful without a verified positive product price. Global is the default; an explicit market wins, otherwise a product URL selects its storefront. NOT_FOUND means the selected storefront returned a product 404. UPSTREAM_HTTP with error.detail.reason=global_offer_price_unavailable means a complete priced offer could not be supplied; it does not mean the product is free or permanently removed. These outcomes are not retried within the call. Transient failures remain retryable; inspect error.retryable. Billing: a verified NOT_FOUND (error.detail.reason=product_not_found) costs 4 credits per request, including when the product is absent from the selected market. The response stays ok=false and includes meta.charged_credits=4. Timeouts, capacity limits, blocked requests, parsing errors and unavailable-price errors are not charged. | Marketplace operators call product/detail to read a complete selected regional product page in its local currency, by product id or URL. | market, url, fields, exclude |
| price | Read current price and stock from the selected regional product page in its local currency. Returns only price and availability fields, including total stock. Prices reflect the offer at retrieval time and can change. It reads the same product page as product/detail. Shein runs price tests, so price can differ between sessions; base_price (before any promotion) is the same for every session and is the stable value for change detection. Missing product prices return an error without additional price lookup requests. Global is the default; an explicit market wins, otherwise a product URL selects its storefront. NOT_FOUND means the selected storefront returned a product 404. UPSTREAM_HTTP with error.detail.reason=global_offer_price_unavailable means a complete priced offer could not be supplied; it does not mean the product is free or permanently removed. These outcomes are not retried within the call. Transient failures remain retryable; inspect error.retryable. Billing: a verified NOT_FOUND (error.detail.reason=product_not_found) costs 4 credits per request, including when the product is absent from the selected market. The response stays ok=false and includes meta.charged_credits=4. Timeouts, capacity limits, blocked requests, parsing errors and unavailable-price errors are not charged. | Catalog enrichment teams call price to read current price and stock from the selected regional product page in its local currency. | market, url |
| category/browse | Shein refuses its category shelf for API clients, so this action reports that plainly instead of returning an empty or invented shelf. Measured 2026-09-25: the shelf endpoint refuses every request for a category id while the search endpoint answers normally in the same second from the same client, and the category page itself answers with a challenge. The error is not retryable, is never charged, and names the working route: call `search` with a keyword plus the same id as `category_id`, which returns the same product cards restricted to that category and its sub-categories. A keyword is required because Shein serves no products for a keyword-less category request. | Retail analysts call category/browse to get shein refuses its category shelf for API clients, so this action reports that plainly instead…. | category_id, market, url, page, limit |
Call search from your stack
curl -X POST https://api.reefapi.com/shein/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"summer dress","max_results":20}'import requests
r = requests.post(
"https://api.reefapi.com/shein/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "summer dress",
"max_results": 20
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/shein/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "summer dress",
"max_results": 20
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.shein.search with {"query":"summer dress","max_results":20}.Who uses this API and why
- Pricing teams use Shein to get jSON product cards from the selected storefront with local prices, currency and product URLs.
- Marketplace operators use Shein to read a complete selected regional product page in its local currency, by product id or URL.
- Catalog enrichment teams use Shein to read current price and stock from the selected regional product page in its local currency.
- Retail analysts use Shein to get shein refuses its category shelf for API clients, so this action reports that plainly instead….
Questions developers ask before integrating
What is the Shein API?
Shein API is a ReefAPI endpoint group for shein It returns live JSON through POST requests under /shein/v1.
Is the Shein API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Shein calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Shein login or account?
No login to Shein is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Shein data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Shein API use?
Shein actions currently cost 1-4 credits per successful call. Verified SHEIN NOT_FOUND responses on product/detail and price cost 4 credits; timeout, blocked and capacity errors remain free. All APIs draw from one credit pool.
Can I call Shein from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call shein actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Shein API a Shein scraper?
It is the managed alternative to a DIY Shein scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same shein back as clean JSON.
Why does my Shein scraper keep getting blocked?
Most Shein scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.