Shein Product Detail & Variants Scraper
ECOMMERCE
Shein Product Detail & Variants Scraper
Extract full product detail from Shein PDPs: all color/size variants with per-variant stock, pricing, size guide, composition, ratings, and images. Supports us.shein.com and regional storefronts. Built for apparel-catalog and dropshipping-import workflows.
What you get
Each scraped PDP produces one dataset record with:
| Field | Type | Description |
|---|---|---|
goods_id |
string | Shein internal product id (numeric string, extracted from PDP or URL) |
goods_sn |
string | Shein product SKU/style code (e.g. sw2212215742) |
product_url |
string | Canonical product page URL |
product_name |
string | Product display title |
brand |
string | Brand name (Shein sub-brand where available) |
category_path |
string | Breadcrumb category path (e.g. Women / Dresses / Maxi Dresses) |
description |
string | Product description text |
sale_price |
number | Current discounted sale price |
retail_price |
number | Original / retail price before discount |
discount_pct |
number | Discount percentage off retail price (0–100) |
currency |
string | Currency code (e.g. USD, GBP, EUR) |
in_stock |
boolean | True if at least one variant is available |
stock_hint |
string | Low-stock banner text (e.g. "Almost Sold Out") — null if none |
colors |
array | Color option objects — {color_name, thumb_url, goods_id_for_color} |
sizes |
array | Size objects — {size_label, size_measurements, in_stock} |
size_fit |
string | Size fit feedback summary (e.g. "Runs small", "True to size") |
size_guide |
object | Size guide chart — {unit, rows:[{size, bust, waist, hip, length}]} |
images |
array | Product image URLs (main + all gallery images) |
video_url |
string | Product video URL — null if none |
material |
string | Primary material name |
composition |
string | Full fabric composition (e.g. 95% Polyester, 5% Spandex) |
care_instructions |
string | Care instruction text |
review_count |
integer | Total number of customer reviews |
avg_rating |
number | Average star rating (0–5) |
rating_breakdown |
object | {true_to_size_pct, quality_pct, shipping_speed_pct} |
seller_name |
string | Seller/store name — null for standard Shein listings |
is_flash_sale |
boolean | True if the product is on a flash/limited-time sale |
flash_sale_price |
number | Flash-sale price if active — null otherwise |
flash_sale_end |
string | ISO 8601 end timestamp of the flash sale — null if not a flash sale |
scraped_at |
string | ISO 8601 timestamp when this record was scraped |
region |
string | Storefront region code (us / uk / de / etc.) |
Input
| Parameter | Type | Required | Description |
|---|---|---|---|
productUrls |
array | Yes | List of Shein PDP URLs to scrape. Each entry is {"url": "https://us.shein.com/...-p-<id>.html"}. URLs must end in -p-<id>.html. |
maxItems |
integer | Yes | Maximum number of records to return. |
region |
string | No | Storefront region code (e.g. us, uk, de). Auto-detected from the URL if omitted. |
Example input
{
"productUrls": [
{"url": "https://us.shein.com/product-p-28861291.html"},
{"url": "https://us.shein.com/product-p-12345678.html"}
],
"region": "us",
"maxItems": 100
}
Supported URLs
https://us.shein.com/...-p-<id>.htmlhttps://shein.co.uk/...-p-<id>.htmlhttps://shein.de/...-p-<id>.html- Any
*.shein.*orshein.com*hostname with a-p-<id>.htmlpath
URLs that do not match the -p-<id>.html pattern are skipped with a warning.
Resuming a large crawl
To continue a run that was interrupted or hit maxItems before finishing:
- Find
resumeCursorin the previous run's OUTPUT key-value store entry. - Pass it as
resumeCursorin the new run's input alongside the sameproductUrlslist.
The actor reopens the previous run's request queue, skipping pages already processed — no duplicate charges, no duplicate records.
Note: resumption only benefits runs that did not complete in a single execution. Single-URL or fully-completed runs do not need it.
Notes
- Uses Bright Data Web Unlocker (IceBreaker) for guaranteed access to Shein PDPs. BD handles JS rendering and anti-bot detection server-side.
- A read-through cache reduces redundant BD fetches on re-runs of the same URLs.
- Halo challenge pages (BD verdict:ok but no product data) are detected and skipped automatically.
- Price and stock data reflects the state at scrape time. For price monitoring use the companion Shein Product Monitor actor.