Shein Product Detail & Variants Scraper
Pricing
Pay per event
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.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
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.