SHEIN Scraper
Pricing
from $1.20 / 1,000 products
SHEIN Scraper
Scrape SHEIN product listings by keyword, product ID, or URL. Returns prices, ratings, images, and optional reviews.
Pricing
from $1.20 / 1,000 products
Rating
0.0
(0)
Developer
Data Scrapers
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
SHEIN Scraper creates a structured dataset of product listings collected from SHEIN storefront search and product pages. Each dataset item is one product and can include identifiers, pricing, ratings, images, category labels, color variants, and optional nested details and reviews arrays on the same row. Query the source using keyword search, numeric goods IDs, or SHEIN URLs, control volume with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format. Pricing starts from $0.001 per product row, with optional $0.001 per details enrichment and $0.001 per review when those options are enabled (verify current event prices in the Apify Console).
Dataset at a glance
| Property | Value |
|---|---|
| Source | www.shein.com (regional hosts such as de.shein.com) |
| Record unit | One product listing |
| Input methods | searchQueries, productIds, startUrls |
| Main identifiers | goodsId, url, goodsSn, spu |
| Delivery | Apify default dataset and Dataset API |
| Export formats | JSON, CSV, Excel, XML, RSS, HTML (via Apify export) |
| Update model | Fresh records per Actor run |
| Pricing | Pay per event: product row, optional details, optional reviews (see below) |
Coverage and available records
Supported
- Keyword search with sort options (
recommend,newest,price_asc,price_desc,popular) - Direct fetch by SHEIN goods ID (
productIds) - Product or search URLs via
startUrls(search URLs are treated as queries) - Store context via
country— currency and residential proxy country are set automatically (United Kingdom → GBP, Japan → JPY). Europe shares the EUR identity; the United States uses the US identity - Listing-card fields: name, brand code, category, sale and retail price, discount, rating, review count, stock flags, images, color swatches
- Optional details object on the same row: description, attribute table, size and stock, gallery, store info, live price when returned
- Optional reviews array on the same row: text, rating, date, buyer size hints, images (up to
maxReviewsPerProduct)
Observed behavior
- Residential proxies follow the selected store (GB → GB, JP → JP, with a nearby fallback when Apify has no exit for that ISO code)
- Products from multiple queries are enriched in parallel (up to six concurrent product jobs)
- Extra detail endpoints may be skipped when the storefront risk session is stale; the run continues with listing-card data only
Not currently collected
- Separate dataset rows per review (reviews stay nested under
reviews) - Guaranteed size or material fields on every listing (card-level
materialmay contain UI metadata) - Historical price snapshots across runs (each run is a new extract)
- Full marketplace coverage for a query in a single run (
maxItemscaps volume)
Data dictionary
Product (top-level fields)
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
goodsId | string | no | SHEIN goods ID | "234115243" |
goodsSn | string | yes | Internal goods serial | "sz25073006763685501" |
spu | string | yes | Style / SPU code | "z250730067636" |
productId | string | yes | Product relation ID from the card | "z250730067636" |
name | string | yes | Product title | "Plus Size Knit Dress..." |
url | string | no | Public product URL for country | https://de.shein.com/...-p-234115243.html |
brand | string | yes | Brand code on the card | "1et3n" |
category | string | yes | Category name | "Plus Size Dresses" |
categoryId | string | yes | Category ID | "1889" |
currency | string | yes | ISO currency when present on the card | "EUR" |
salePrice | number | yes | Numeric sale price | 25.49 |
salePriceDisplay | string | yes | Formatted sale price | "25.49€" |
retailPrice | number | yes | Numeric retail / reference price | 33.99 |
retailPriceDisplay | string | yes | Formatted retail price | "33.99€" |
discountPrice | number | yes | Discount amount when exposed | 0.0 |
discountPercent | number | yes | Discount percentage | 0.0 |
rating | number | yes | Average star rating from the card | 4.68 |
reviewCount | integer | yes | Review count when numeric | 416 |
reviewCountDisplay | string | yes | Display review count string | "100+" |
soldOut | boolean | no | Sold-out flag from card | false |
stock | string | yes | Stock indicator when present | "1" |
isClearance | boolean | no | Clearance flag | false |
isOnSale | boolean | no | On-sale flag | false |
isPlusSize | boolean | no | Plus-size flag | true |
quickship | boolean | no | Quickship flag | true |
mallCode | string | yes | Mall code | "1" |
storeCode | string | yes | Store code | "4952344492" |
imageUrl | string | yes | Primary image URL | https://img.ltwebstatic.com/... |
detailImage | string or string[] | yes | Extra gallery URLs from search card | [ "https://..." ] |
videoUrl | string | yes | Video reference when present | "0" |
colorImages | string or array | yes | Color swatch image | URL or list |
colors | object[] | no | Related color variants { goodsId, image, color } | may be empty entries |
labels | array | no | Marketing labels from card | [] |
material | object | yes | Raw card UI / material payload from search | nested object |
sourceQuery | string | yes | Keyword, ID, or URL source for the row | "dress" |
scrapedAt | string | no | UTC ISO-8601 scrape timestamp | "2026-11-03T21:43:12.399768+00:00" |
details | object | yes | Present when includeDetails is true and detail APIs succeed | see below |
reviews | object[] | yes | Present when includeReviews is true | see below |
Recommended deduplication key: goodsId within a country-specific catalog. For cross-run dedup, use goodsId plus your run timestamp or dataset id.
details (when enabled and returned)
| Field | Type | Nullable | Description |
|---|---|---|---|
description | string | yes | Product description text |
productDetails | object[] | no | Attribute rows { name, value } |
materialDetails | object | yes | Material block from detail API |
sizeAndStock | array | no | Size and stock rows when exposed |
gallery | array | yes | Detail gallery URLs |
video | object | yes | Video metadata |
storeInfo | object | yes | Store block |
salePrice | number | yes | Live sale price from detail |
salePriceDisplay | string | yes | Formatted live sale price |
currency | string | yes | Currency on detail price |
stock | string | yes | Stock from detail |
isOnSale | boolean | yes | On-sale from detail |
realtime | object | yes | Live stock, promotions, shipping hints when merged |
Review object (reviews[])
| Field | Type | Nullable | Description |
|---|---|---|---|
commentId | string | no | Review ID |
goodsId | string | no | Parent goods ID |
rating | number | yes | Star rating |
content | string | yes | Review text |
translated | string | yes | Translated text when provided |
language | string | yes | Language flag |
date | string | yes | Review date string from storefront |
userName | string | yes | Display name |
userAvatar | string | yes | Avatar URL |
userHeight | string | yes | Buyer height hint |
userWeight | string | yes | Buyer weight hint |
verifiedPurchase | boolean | no | Verified purchase flag |
color | string | yes | Purchased color |
size | string | yes | Purchased size |
images | array | no | Review image URLs |
videos | array | no | Review video URLs |
likeCount | integer | yes | Helpful votes |
Example dataset record
Produced with searchQueries: ["dress"], country: "DE", maxItems: 10, includeDetails and includeReviews disabled (listing-card fields only):
{"goodsId": "234115243","goodsSn": "sz25073006763685501","spu": "z250730067636","productId": "z250730067636","name": "Lounesse Plus Size Women High Neck Black Knit Long Sleeve Paired With Khaki Corduroy A-Line Skirt...","url": "https://de.shein.com/Lounesse-Plus-Size-Women-High-Neck-Black-Knit-Long-Sleeve-Paired-With-Khaki-Corduroy-A-Line-Skirt-Plus-Size-Dress-For-Everyday-Wear-Date-Fashion-Winter-p-234115243.html","brand": "1et3n","category": "Plus Size Dresses","categoryId": "1889","currency": "","salePrice": 25.49,"salePriceDisplay": "25.49€","retailPrice": 33.99,"retailPriceDisplay": "33.99€","discountPrice": 0.0,"discountPercent": 0.0,"rating": 4.68,"reviewCount": 416,"reviewCountDisplay": "100+","soldOut": false,"stock": "1","isClearance": false,"isOnSale": false,"isPlusSize": true,"quickship": true,"imageUrl": "http://img.ltwebstatic.com/v4/j/pi/2025/10/23/a5/17612028562f4138c1d56ab1af67ce7ea24141dd76_thumbnail_405x552.jpg","sourceQuery": "dress","scrapedAt": "2026-11-03T21:43:12.399768+00:00"}
Long arrays such as detailImage, colors, and nested material are omitted here for readability.
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchQueries | string[] | no* | prefill dress | Non-empty strings | Keyword search on SHEIN |
productIds | string[] | no* | — | Goods IDs | Direct product lookup |
startUrls | object[] | no* | search URL prefill | Product or search URLs | Request-list sources |
sort | string | no | recommend | recommend, newest, price_asc, price_desc, popular | Search sort order |
country | string | no | US | Store select (US, GB, FR, JP, AE, …) | Sets catalog, currency, and proxy country |
includeReviews | boolean | no | false | true/false | Attach reviews[] |
maxReviewsPerProduct | integer | no | 20 | ≥ 0 | Cap reviews per product |
includeDetails | boolean | no | false | true/false | Attach details when APIs succeed |
maxItems | integer | no | 0 | ≥ 0 | Max products; 0 = no cap |
proxyConfiguration | object | no | residential | Apify proxy | Country is overwritten to match country |
*At least one of searchQueries, productIds, or startUrls should be provided.
Minimal request
{"searchQueries": ["dress"],"maxItems": 100,"country": "US","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Advanced request (search + details + reviews)
{"searchQueries": ["winter jacket"],"maxItems": 50,"sort": "price_asc","country": "US","includeDetails": true,"includeReviews": true,"maxReviewsPerProduct": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Retrieve the data through the API
- Start the Actor with JSON input (Apify Console, CLI, or HTTP API).
- Wait for the run to finish, or use the synchronous dataset endpoint for small jobs.
- Read items from the run’s default dataset (
GET /v2/datasets/{datasetId}/items). - Paginate with
offsetandlimit, or export the full dataset from the Console.
Python (Apify client)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("datascrapers/shein-scraper").call(run_input={"searchQueries": ["dress"],"maxItems": 25,"country": "US","proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["goodsId"], item.get("salePriceDisplay"), item.get("rating"))
cURL (start run)
curl -s -X POST "https://api.apify.com/v2/acts/datascrapers~shein-scraper/runs" \-H "Authorization: Bearer <YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["dress"],"maxItems":10,"country":"US"}'
OpenAPI spec and generated clients are available on the Actor API tab in Apify Console.
Data quality and record handling
- Completeness: Search cards populate most listing fields.
currencymay be empty on the card whilesalePriceDisplaystill shows a formatted price. Optionaldetailsandreviewsare omitted when disabled or when a single product fails enrichment. - Fail-soft: One failed detail or review fetch does not stop the run; that product’s optional fields are skipped and processing continues.
- Deduplication: Within a run, the same
goodsIdshould appear once per discovery path; cap volume withmaxItems. - Cross-run dedup: Not built in. Merge datasets on
goodsIdin your warehouse or use Apify webhooks to append only new ids. - Retries: Transient network errors are retried on HTTP fetches; blocked detail endpoints are skipped after logging once per run.
- Derived fields: Public
urlis built from the listing slug,goodsId, andcountry.scrapedAtis set at parse time in UTC.
Run statistics (product, detail, and review charge counts) are stored in the key-value store under run-stats.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API + scheduled Actor | Fashion catalog monitoring |
| Google Sheets | Apify integration or CSV export | Merchandising samples |
| S3 / cloud storage | Apify dataset export or webhook | Raw JSON archive |
| BI tools (Looker, Power BI) | CSV/Excel export | Price and rating dashboards |
Pricing and cost examples
This Actor uses pay-per-event billing on the Apify platform. Placeholder Store prices (verify in Console before budgeting):
| Event | What triggers it | Placeholder unit price (Free tier) |
|---|---|---|
| Actor start | Each run | $0.00005 |
product | Each product row pushed to the dataset | $0.001 |
product-details | Each product where a non-empty details object is returned | $0.001 |
product-review | Each review object inside reviews | $0.001 |
Higher Apify plans may receive tier discounts on result events. Residential proxy usage is billed separately through Apify proxy consumption.
Illustrative totals (product event only, details/reviews off)
| Products | Estimated product event cost |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Illustrative totals (100 products, details on for 80 products, 20 reviews each)
| Charge | Count | Placeholder cost |
|---|---|---|
| Product rows | 100 | $0.10 |
| Details | 80 | $0.08 |
| Reviews | 2,000 | $2.00 |
| Total (events only) | ~$2.18 |
Estimates exclude compute, proxy, and plan discounts. Edit event prices in the Apify Console monetization tab.
Limitations and responsible data use
- Collects data exposed on the public SHEIN storefront for the selected country context; availability and fields change when SHEIN updates its apps or sites.
- You are responsible for complying with SHEIN terms, applicable commerce and privacy laws, and your own data retention policies.
- Reviews are user-generated content; do not treat them as verified facts without your own validation.
- Extra product details depend on storefront session state; runs may return listing cards only when detail endpoints are blocked.
- The Actor does not guarantee complete catalog coverage for a query—use filters, multiple queries, and repeated runs if you need broader samples.
Dataset questions
What does one dataset item represent?
One SHEIN product listing from search, ID lookup, or URL discovery. Reviews and extended attributes are nested on that same item, not separate rows.
Which field should I use as a unique identifier?
Use goodsId as the primary key. Pair it with country if you compare the same style across regional storefronts.
Are fields nullable or conditional?
Yes. Card metrics may be partial. details and reviews appear only when enabled and successfully fetched. Individual review text or buyer fields may be empty.
Can I retrieve the records as CSV or JSON?
Yes. Export from the Apify Console or call the Dataset API with format=csv or format=json.
How do I paginate large datasets?
Use dataset API offset and limit parameters, or download split files from the Console export dialog.
Does the Actor return historical data?
Each run captures a current snapshot. Store dataset exports yourself if you need history.
Which countries return real store prices?
Select country only. Currency and the residential proxy exit follow that store (Japan → JPY + JP, United Kingdom → GBP + GB). The bundled identity is the common/aws store (Middle East, Asia, Americas, Oceania). Europe and the United States need their own data-center identity after a switch-country hop.
What counts as a billable result?
Each product row bills the product event. A returned details object bills product-details once for that product. Each object in reviews bills one product-review event.
Related datasets from Data Scrapers
| Actor | Relationship |
|---|---|
| AliExpress Scraper | Marketplace product rows with optional nested details and reviews |
| H&M Scraper | Apparel catalog listings with product-page enrichment |
| Adidas Scraper | Brand retail product data for assortment comparison |
Browse the full Data Scrapers Store profile for more commerce and catalog Actors.
Data Scrapers support
Need an additional field, regional preset, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample SHEIN URL or search phrase, required fields, expected product volume, and whether you need nested reviews or details on every row.
