Shein Product Scraper — Prices, Variants & Reviews avatar

Shein Product Scraper — Prices, Variants & Reviews

Pricing

from $40.00 / 1,000 product scrapeds

Go to Apify Store
Shein Product Scraper — Prices, Variants & Reviews

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

4

Monthly active users

5 days ago

Last modified

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

FieldTypePurpose
searchQueriesarray of stringsPlain-text Shein searches such as summer dress or men cargo pants.
startUrlsarray of URLsShein product, search, or category URLs. The input type is auto-detected.
goodsIdsarray of stringsShein numeric goods IDs resolved to product detail pages.
countrystringStorefront and matching residential proxy country: us, uk, au, de, fr, es, it, or global.
maxItemsintegerMaximum items collected per query or listing URL. Range 1 to 500.
scrapeProductDetailsbooleanWhen true, listing results are enriched into full product detail records.
scrapeReviewsbooleanWhen true, embedded customer reviews are included in product detail records.
maxReviewsintegerMaximum reviews embedded per product when review scraping is enabled.
proxyConfigurationobjectProxy settings for the run.

Valid focused JSON input example

{
"searchQueries": ["summer dress"],
"country": "us",
"maxItems": 5,
"scrapeProductDetails": true,
"scrapeReviews": false
}

Output fields

FieldDescription
_typeRecord type such as product, search_result, or diagnostic.
goodsIdShein internal numeric goods ID.
goodsSnShein product SKU code.
productUrlCanonical Shein product page URL.
titleProduct name.
brandBrand or store name.
salePriceCurrent selling price as a number.
salePriceTextCurrent price as shown on Shein.
retailPriceOriginal or list price as a number.
retailPriceTextOriginal price as shown on Shein.
discountPercentDiscount percentage off retail price.
currencyISO currency code for the selected storefront.
ratingAverage customer rating from 0 to 5.
reviewCountNumber of reviews.
inStockStock status.
colorSelected or primary color name.
colorsAvailable color names.
sizesAvailable size names.
skusSKU variants with size, code, price, and stock.
mainImagePrimary product image URL.
imagesAll product image URLs.
categoryLeaf category name.
categoryIdShein category ID.
breadcrumbsCategory breadcrumb trail.
descriptionProduct description text.
attributesKey-value product attributes.
mallCodeShein mall code for the product.
reviewsEmbedded reviews when enabled.
countryStorefront country code used for the run.
scrapeSourceSource of the extracted record, such as listing or bff.
scrapedAtISO 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 os
from apify_client import ApifyClient
client = 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:

  • goodsIds for direct product lookup.
  • startUrls with a product URL for one exact item.
  • startUrls with a search or category URL for a product list.
  • searchQueries for 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.