Shein Product Scraper — Prices, Variants & Reviews avatar

Shein Product Scraper — Prices, Variants & Reviews

Pricing

from $9.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, category URL, product URL or goods ID, with price, variants, sizes, colors, images, rating, description and optional reviews. Works with Apify MCP and the API.

Pricing

from $9.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

60

Total users

19

Monthly active users

4 days ago

Last modified

Share

What is Shein Product Scraper — Prices, Variants, Reviews API?

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.

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.
useUnblockerbooleanExperimental, bounded public-page diagnostic route; disabled by default because Shein armor is session-bound.
enableCaptchaSolverbooleanExplicitly permit the configured paid GeeTest-v4 fallback for a public armor challenge; disabled by default.
useBrightDataSheinProviderbooleanExplicitly use the owner-configured Bright Data Shein API for direct product URLs/goods IDs.
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 a 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 use full product detail extraction first.

If Shein's armor prevents every full-detail attempt for a product URL or goods ID, the Actor may use its managed public-index route to recover a price-bearing record for the exact same goods ID. It checks two independent search providers when the first response lacks enough data. That row is explicitly _type: "search_result" with scrapeSource: "public-index"; it is labeled as a partial search record rather than a full-detail row, and the terminal outcome is PARTIAL. The bounded recovery checks one direct ID per run. A record is emitted and billed only when the index verifies a current title and numeric price for that ID.

For direct product URLs and goods IDs, an owner can instead opt in to the Bright Data Shein Scraper with useBrightDataSheinProvider: true after configuring the BRIGHTDATA_API_TOKEN secret. This route is used before the browser attempt and is limited to 25 direct products per run. It makes one source-bound request per product because Bright Data's documented response can omit the origin URL; it accepts only a canonical product URL, title, and numeric current price, and any explicit returned ID or URL must match the requested product. A provider fault, incomplete response, ambiguous response, or ID mismatch falls back to the normal browser flow without creating a placeholder row. This is a separate owner-managed provider cost and defaults to off.

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.

enableCaptchaSolver is separate from Actor billing. When explicitly enabled, it may invoke the configured 2Captcha GeeTest-v4 provider during a public-page armor challenge. That provider bills separately on a per-solve basis; consult ./PROVIDER_PRICING.json and the provider's current pricing before enabling it. The option defaults to false, and a configured secret alone never activates it.

useBrightDataSheinProvider is also separate from Actor billing. It is disabled by default and requires both the explicit input flag and an owner-configured BRIGHTDATA_API_TOKEN; see ./PROVIDER_PRICING.json for the current provider terms before enabling it.

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.

Continue the workflow

  • Then use Shopee Scraper to extend Shein Product Scraper — Prices, Variants, Reviews API with a neighboring commerce research source when the brief calls for Shopee data.
  • Then use Sephora Product Scraper for US Catalog Research to extend Shein Product Scraper — Prices, Variants, Reviews API with a neighboring commerce research source when the brief calls for Sephora data.

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.