SHEIN Scraper - Products, Prices and Categories avatar

SHEIN Scraper - Products, Prices and Categories

Pricing

from $2.20 / 1,000 results

Go to Apify Store
SHEIN Scraper - Products, Prices and Categories

SHEIN Scraper - Products, Prices and Categories

Extract SHEIN products and categories from regional storefronts including the US, UK, Germany, France, and the Philippines. Get prices, images, sizes, colors, and available ratings; pay per delivered row plus a start fee.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

5

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

SHEIN Scraper

Extract SHEIN products, prices, sizes, colors, and category rows from regional storefronts into an exportable dataset.

  • Search by keyword, category, product URL, or goods ID.
  • Compare local-currency prices and source-provided USD amounts.
  • Get product images, SKU options, and available ratings.
  • Export product rows or a two-level category tree.
  • Pay $3.00 per 1,000 delivered rows on the Free plan, plus a start fee.

What does SHEIN Scraper do?

SHEIN Scraper collects public product listings and details for price monitoring and assortment research. Regional choices include us, uk, de, fr, ph, au, mx, and br. Availability and fields vary by storefront; choose one region per run.

  • Keyword search: use query or keywords for product listings.
  • Category listing: use categoryUrl, catId, categorySlug, or bucket.
  • Product detail: use productUrl or goodsId for one product.
  • Categories: set mode to categories for category rows, not products.
  • Detail enrichment: enabled by default for up to three listing rows. It fills the same product row, without a separate row charge.
  • Optional extras: includeReviews adds available review samples to product rows. expandColors can add billed color-product rows within the row limit. Both are off by default.

What data can you extract from SHEIN?

Product rows

Detail fields depend on the product page being available. A listing without enrichment may contain fewer fields.

FieldDescriptionExample
rowTypeRow category for productsproduct
typeListing or detail subtypeproductDetail
idStable product identifier414286470
goodsIdSHEIN goods identifier414286470
goodsSnProduct series codesz25042590866423837
titleProduct nameLinen blend dress
urlProduct page addresshttps://us.shein.com/Dress-p-414286470.html
regionSelected storefrontus
currencyPrice currencyUSD
salePriceCurrent local-currency price12.49
retailPriceLocal-currency list price18.99
usdSalePriceUSD amount when supplied12.49
usdRetailPriceUSD list price when supplied18.99
imageMain product image addresshttps://img.ltwebstatic.com/example.jpg
imagesAvailable image gallery[]
skuListSize-level SKU options[{"skuCode":"EXAMPLE-M","size":"M"}]
skuCountOptions found before truncation4
colorsRelated color IDs and labels[{"goodsId":"12345678","attrValue":"Blue"}]
stockSource availability value, not a verified inventory countnull
ratingValueAverage published rating4.8
ratingCountPublished aggregate rating or review count120
reviewsOptional review sample[]
reviewCountReviews found in the sample source, not the overall total0
enrichedWhether details were addedtrue
scrapedAtCollection timestamp2026-10-24T08:00:00+00:00

goodsId identifies a product; skuList[].skuCode identifies a size option. priceLocal and priceUsd remain compatibility aliases; prefer salePrice and usdSalePrice.

Category rows

FieldDescriptionExample
rowTypeRow categorycategory
idStable category identifierwomen
nameCategory display nameWomen
bucketCategory groupingclothing
levelParent or child level1
parentIdParent identifier on child rowswomen
catIdSHEIN category identifier2223
categorySlugCategory address slugWomen-Tops
categoryUrlCategory address, when availablenull
childCountChildren of a parent category5

How to scrape SHEIN

  1. Open SHEIN Scraper in Apify Console.
  2. Fill one target field and choose region if you do not want the US storefront.
  3. Set maxResults to 3 for a small first run.
  4. Click Start and wait for completion.
  5. Download the dataset or read it through the API.

Empty input starts an example US search for dress, limited to three rows. It is a normal billed run. With mode: "auto", filling one target chooses the matching mode. When targets conflict, URLs take priority over IDs, then category shortcuts, then keywords. INPUT_REPORT records ignored fields.

Fill query, keyword, or keywords. keyword takes precedence over query; with a batch, it runs before keywords. Each keyword has its own row limit. Products repeated across inputs are deduplicated.

Category listing

Use a current categoryUrl, a known catId, or a shortcut such as bucket: "sale". Category IDs and promotional destinations can differ by region.

Product detail

Use goodsId or a SHEIN HTTPS product URL containing -p-<number>.html. Relative paths are accepted. This mode returns a product row, not a separate row for every size.

Categories

Set mode: "categories" explicitly; no target is required. An optional bucket narrows the category tree. It uses normal row limits rather than the three-row example limit.

What to fill in

FieldWhat to enterDefault
modeauto, keywordSearch, categorySearch, productDetail, or categoriesauto
queryOne search phraseEmpty; sample dress
keywordAlternative single search phraseEmpty
keywordsArray of search phrasesEmpty
productUrlSHEIN product URL or relative pathEmpty
goodsIdNumeric product identifierEmpty
categoryUrlCategory or promotion URLEmpty
catIdNumeric category identifierEmpty
categorySlugCategory slug, preferably with catIdEmpty
bucketCategory shortcut, such as sale or womenEmpty
regionStorefront code such as us, uk, or phus
browseCountryCountry alias; GB selects uk; overrides regionEmpty
currencyCurrency hint such as USD or EURRegional currency
maxResultsMaximum rows per input, from 1 to 50070; form sample 3
sortrecommend, sales, price_asc, price_desc, or newestSite order
minPriceMinimum local-currency priceUnset
maxPriceMaximum local-currency priceUnset
colorSite-specific color filter valueEmpty
sizeSite-specific size filter valueEmpty
refineKnown category filter expressionEmpty
enrichDetailsAdd available details to listing rowstrue
enrichLimitMaximum listing rows to enrich, from 0 to 503
includeReviewsInclude available review samplesfalse
expandColorsAdd color-product rows when space remainsfalse
pageStarting listing page, from 1 to 1001
maxPagesLegacy page setting; use maxResults to limit this ActorForm 1; API omission 3
pageRetryPage retry setting, from 1 to 51
forceSuggestRequest the alternate search option on later pagesfalse

Keyword search:

{
"query": "linen dress",
"region": "us",
"maxResults": 3
}

Category listing:

{
"bucket": "sale",
"region": "us",
"maxResults": 3
}

Product detail; replace the example ID with a current product:

{
"goodsId": "414286470",
"region": "us",
"maxResults": 1
}

Category tree:

{
"mode": "categories",
"region": "us",
"maxResults": 5
}

maxItems and limit are accepted aliases for maxResults. Close field-name misspellings are corrected; other unknown fields and invalid sort choices are ignored with a note. Invalid targets stop before any row charge with INVALID_INPUT: followed by the field and a correction. The start fee can still apply. Each run records its input interpretation in INPUT_REPORT in the default key-value store.

Output example

Illustrative product row; prices and availability are not a current offer:

{
"rowType": "product",
"type": "product",
"id": "414286470",
"goodsId": "414286470",
"title": "Linen blend dress",
"url": "https://us.shein.com/Dress-p-414286470.html",
"mode": "keywordSearch",
"region": "us",
"currency": "USD",
"salePrice": 12.49,
"ratingValue": 4.8,
"ratingCount": 120,
"scrapedAt": "2026-10-24T08:00:00+00:00"
}

Export the dataset as JSON, CSV, Excel, XML, RSS, or an HTML table. Use JSON when you need nested arrays such as skuList and reviews.

Why use this SHEIN scraper?

  • Pay for delivered rows. Failed page attempts are not dataset rows.
  • Keep available results. Partial results returned for delivery can be saved; rows already written remain available after a stop. Pending rows are not guaranteed after a manual abort.
  • Understand failures. ERROR_SUMMARY contains failure details; RUN_SUMMARY includes warnings and partial-result information.
  • Preserve missing values. Unavailable titles or prices are not invented.
  • Batch searches. Collect several keywords in one run and schedule repeat price checks.
  • No proxy setup. You do not need to set up proxies.

How much does it cost to scrape SHEIN?

Pricing is pay per event: $0.005 per start event, plus delivered rows. At the default 512 MB, a start incurs one start event. Start billing is one event per GB, with a minimum of one. Platform usage is included in these prices.

Apify planStart eventPrice per rowPrice per 1,000 rows
Free$0.005$0.003$3.00
Starter$0.005$0.003$3.00
Scale$0.005$0.0026$2.60
Business$0.005$0.0022$2.20

maxResults applies to each keyword; a category, product, or category-tree request counts as one input. The default is 70. Larger requests are collected in parts of up to 70, subject to available results. The Free plan is capped at 200 rows per run and 10 runs of this Actor. Paid plans remove that run-count restriction, not row charges.

The whole run stops at the Maximum cost per run you set (maxTotalChargeUsd in the API). Additional color-product rows share the row limit and price. Enrichment and embedded reviews do not add separate row charges.

Example: two keywords delivering three distinct rows each give six rows. On the Free plan, one start at 512 MB costs $0.005 + 6 × $0.003 = $0.023.

What happens when the run timeout is too short

When automatic recovery is accepted, a short timeout can pause a run rather than fail it. Its status message says: "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." The run temporarily appears as ABORTED.

When results are ready, the same run resumes, writes to the same dataset, and finishes as SUCCEEDED if collection succeeds. Already delivered rows are skipped, so recovery does not deliver or charge them twice. If delivery had already started, the status can say "Resumed: delivering N rows." You do not need to restart a paused run manually.

Recovery is limited to at most three pauses per run. Keep the default timeout of 3600 seconds to reduce interruptions. Recovery is not a guarantee that failed collection will succeed.

The synchronous endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return an empty dataset while a run is paused. For longer jobs, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook.

Use with AI agents and the API

Apify MCP server

In Claude, ChatGPT, Cursor, VS Code, or another remote MCP client, add:

https://mcp.apify.com?tools=lentic_clockss/shein-scraper

Sign in with Apify through OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/shein-scraper with APIFY_TOKEN set.

Example prompt: "Find three linen dresses on SHEIN US and return their names, prices, and product URLs."

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/shein-scraper").call(
run_input={"query": "linen dress", "region": "us", "maxResults": 3}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/shein-scraper').call({
query: 'linen dress', region: 'us', maxResults: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Over HTTP, send input as JSON to POST https://api.apify.com/v2/acts/lentic_clockss~shein-scraper/runs with an Authorization: Bearer token header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.

Integrations

Use the Integrations tab to connect Google Sheets, Make, Zapier, n8n, Slack, Airtable, or a webhook. Use Apify Schedules for recurring runs.

FAQ

This Actor collects public data and is not affiliated with SHEIN. You are responsible for complying with applicable terms and data-protection law. Processing personal data, including review content, requires a lawful basis.

Why did my run end as ABORTED?

It may be paused for automatic recovery; check the status message above. A manual abort is different and should not be assumed to resume automatically.

How many results can I get?

Set maxResults from 1 to 500 per input. The overall cost cap, Free-plan allowance, deduplication, and available products can reduce delivered rows.

Why are some fields empty?

Listings have fewer details than product pages, and fields vary by region. Enrichment can add available fields, but does not guarantee every price, size, rating, or image.

Can I collect every review?

No. includeReviews returns available samples, up to 50 entries per product. reviewCount is not the total review count and may exceed the returned sample length when truncated. Use ratingCount for the published aggregate when present.

Does stock mean exact inventory?

No. stock preserves a source value whose inventory meaning is not established. Do not interpret 0 as confirmed out of stock.

Are color rows independently checked products?

Not necessarily. expandColors can reuse parent details for additional color IDs. Check expandedFrom and colorLabel; do not assume a separate price or URL was verified for every color.

Limitations

  • No checkout, orders, private accounts, or full review pagination.
  • Regional support does not guarantee every product or category is available. Unknown region codes are rejected.
  • Category mappings and sample IDs can become stale; use current category URLs.
  • Detail galleries contain up to 40 images; SKU, color, and size-attribute lists are capped at 50.
  • maxPages is not a reliable Actor row cap; use maxResults and the run cost limit.
  • Seller-specific contact details are not promised; any contact fields describe the platform rather than an individual product seller.

More e-commerce and marketplace scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report problems or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.