Shein Product Scraper — Prices, Variants & Reviews
Pricing
from $40.00 / 1,000 product scrapeds
Shein Product Scraper — Prices, Variants & Reviews
Scrape Shein products by keyword search, category URL, product URL, or goods ID. Returns price, variants, sizes, colors, images, rating, description, and optional reviews. Browser-based via Apify Residential proxy. MCP-ready.
Pricing
from $40.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape Shein products from keyword searches, category URLs, product URLs, or goods IDs. This Apify Actor returns one record per product or listing card, with fields such as goods ID, title, brand, sale and retail price, discount percent, currency, rating, review count, stock status, colors, sizes, SKUs, images, category context, description, attributes, optional reviews, and the scraped timestamp. It is browser-based via Apify Residential proxy and usable through Apify MCP.
Best fit and connected workflows
Use this Actor when you need structured Shein product data for one of these workflows:
- Keyword discovery from plain text search terms, such as a style, category, or product type.
- Category or search page collection when you already have a Shein listing URL.
- Single-product enrichment from a product URL or goods ID.
- Catalog snapshots for pricing, variant, and attribute analysis.
- Review capture when you want embedded review data in each product detail record.
- AI-agent retrieval through Apify MCP for downstream analysis, comparison, or extraction workflows.
Focused standalone workflow
This Actor is designed as a focused standalone workflow.
Practical scenario
Maya, a merchandiser, starts with a Shein category URL for women's tops. She sets scrapeProductDetails to true and leaves scrapeReviews off. The run returns records with goodsId, title, salePrice, discountPercent, rating, colors, sizes, mainImage, and productUrl. Maya uses those fields to identify which items to compare in her pricing sheet, then opens the product URLs that match her target price range.
Input fields
| Field | Type | Purpose |
|---|---|---|
searchQueries | array of strings | Plain-text Shein searches such as summer dress or men cargo pants. |
startUrls | array of URLs | Shein product, search, or category URLs. The input type is auto-detected. |
goodsIds | array of strings | Shein numeric goods IDs resolved to product detail pages. |
country | string | Storefront and matching residential proxy country: us, uk, au, de, fr, es, it, or global. |
maxItems | integer | Maximum items collected per query or listing URL. Range 1 to 500. |
scrapeProductDetails | boolean | When true, listing results are enriched into full product detail records. |
scrapeReviews | boolean | When true, embedded customer reviews are included in product detail records. |
maxReviews | integer | Maximum reviews embedded per product when review scraping is enabled. |
proxyConfiguration | object | Proxy settings for the run. |
Valid focused JSON input example
{"searchQueries": ["summer dress"],"country": "us","maxItems": 5,"scrapeProductDetails": true,"scrapeReviews": false}
Output fields
| Field | Description |
|---|---|
_type | Record type such as product, search_result, or diagnostic. |
goodsId | Shein internal numeric goods ID. |
goodsSn | Shein product SKU code. |
productUrl | Canonical Shein product page URL. |
title | Product name. |
brand | Brand or store name. |
salePrice | Current selling price as a number. |
salePriceText | Current price as shown on Shein. |
retailPrice | Original or list price as a number. |
retailPriceText | Original price as shown on Shein. |
discountPercent | Discount percentage off retail price. |
currency | ISO currency code for the selected storefront. |
rating | Average customer rating from 0 to 5. |
reviewCount | Number of reviews. |
inStock | Stock status. |
color | Selected or primary color name. |
colors | Available color names. |
sizes | Available size names. |
skus | SKU variants with size, code, price, and stock. |
mainImage | Primary product image URL. |
images | All product image URLs. |
category | Leaf category name. |
categoryId | Shein category ID. |
breadcrumbs | Category breadcrumb trail. |
description | Product description text. |
attributes | Key-value product attributes. |
mallCode | Shein mall code for the product. |
reviews | Embedded reviews when enabled. |
country | Storefront country code used for the run. |
scrapeSource | Source of the extracted record, such as listing or bff. |
scrapedAt | ISO 8601 scrape timestamp. |
Illustrative output record
{"_type": "product","goodsId": "100123456","productUrl": "https://us.shein.com/sample-product-p-100123456.html","title": "Sample Dress","brand": "SHEIN","salePrice": 18.99,"salePriceText": "$18.99","retailPrice": 29.99,"retailPriceText": "$29.99","discountPercent": 36.7,"currency": "USD","rating": 4.6,"reviewCount": 128,"inStock": true,"color": "Black","colors": ["Black", "White"],"sizes": ["S", "M", "L"],"mainImage": "https://img.shein.com/sample.jpg","category": "Dresses","country": "us","scrapeSource": "bff","scrapedAt": "2026-07-27T12:00:00.000Z"}
How it works
This Actor runs in a real browser and uses Apify Residential proxy matched to the selected storefront country. The input is auto-detected from keyword searches, Shein URLs, or goods IDs. For search and category inputs, it can return either lightweight listing cards or full product detail records, depending on scrapeProductDetails. When scrapeReviews is enabled, it embeds up to maxReviews customer reviews in each product detail record. Product URLs and goods IDs always resolve to full product detail records.
Pricing
This Actor uses Pay per event pricing plus standard Apify platform usage. The live Pricing tab in Apify shows the current event prices and any platform usage that applies to your run.
Event billing is based on the records produced:
- Actor start
- Product scraped
- Search result
For example, a run that returns twenty full product detail records is billed as twenty Product scraped events, plus one Actor start event. A run that returns twenty listing cards with scrapeProductDetails=false is billed as twenty Search result events, plus one Actor start event.
Please check the live Pricing tab for the current pricing details before running.
Use with AI agents (MCP)
This Actor is available through Apify MCP as a tool for retrieving Shein product data in structured form.
Tool description: use this Actor to search Shein by keyword, listing URL, product URL, or goods ID and receive product or listing-card records with prices, variants, images, ratings, and optional reviews.
Exact Actor identity: khadinakbar/shein-product-scraper
Find Shein products for the keyword "summer dress" in the US storefront. Return the product title, price, rating, sizes, colors, and canonical product URL.
When used through MCP, the output should be interpreted as dataset records. Product detail records include rich catalog fields, while search-result records include a lighter listing-card subset when scrapeProductDetails=false. Each record is provenance-tagged with scrapeSource, country, and scrapedAt. If the input targets a search or category page, pagination is handled by the Actor up to maxItems. Costs still follow the same event-based pricing, so agent workflows should keep maxItems and maxReviews aligned with the amount of detail needed.
Apify API example
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/shein-product-scraper').call({searchQueries: ['summer dress'],country: 'us',maxItems: 3,scrapeProductDetails: true,scrapeReviews: false,});const datasetItems = await client.dataset(run.defaultDatasetId).listItems();console.log(datasetItems.items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(token=os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/shein-product-scraper").call(run_input={"goodsIds": ["100123456"],"country": "us","scrapeReviews": True,"maxReviews": 10})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(items)
Best results and outcome guidance
Use the narrowest input that matches your source:
goodsIdsfor direct product lookup.startUrlswith a product URL for one exact item.startUrlswith a search or category URL for a product list.searchQueriesfor discovery from plain text.
Choose the storefront country that matches the market you want to inspect, because it drives localized pricing and currency. Use scrapeProductDetails=true when you need variants, SKUs, images, description, and attributes. Use scrapeReviews=true when review content is part of the workflow, and keep maxReviews aligned with the number of reviews you actually need.
Design note
I found that the live dataset contract requires scrapedAt on every output record, which makes the timestamp a reliable anchor for downstream syncing and change tracking.
FAQ
Which input should I use for a single product page?
Use startUrls with the product URL, or goodsIds if you already have the numeric Shein goods ID.
Which input should I use for search exploration?
Use searchQueries for plain-text discovery, or startUrls for an exact Shein search or category page.
What happens when I want only listing cards?
Set scrapeProductDetails=false. The Actor returns lighter search-result records with fields such as goods ID, title, price, image, and rating.
Can I include customer reviews?
Yes. Set scrapeReviews=true and choose a maxReviews value. Reviews are embedded inside each product detail record.
Which storefronts are available?
The input supports us, uk, au, de, fr, es, it, and global.
Responsible use
Use this Actor only for lawful collection and analysis of publicly available Shein product data. Review your intended use against Shein's terms and any applicable data, privacy, and copyright obligations in your jurisdiction. Keep request volume, review depth, and pagination aligned with your actual business need.