Shein Search Products Scraper avatar

Shein Search Products Scraper

Under maintenance

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Shein Search Products Scraper

Shein Search Products Scraper

Under maintenance

๐Ÿ›๏ธ Scrape product data from Shein search results with ease. This Apify actor collects titles, prices, ratings, images, and URLs based on your keywords. Ideal for market research, price tracking, and competitor analysis with structured, export-ready data.

Pricing

from $4.99 / 1,000 results

Rating

5.0

(1)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

1

Bookmarked

96

Total users

25

Monthly active users

18 days ago

Last modified

Share

Shein Search Products Scraper โ€” Prices, Ratings and Stock Data

Shein Search Products Scraper runs a keyword search on Shein and returns every matching product as structured JSON โ€” title, sale and retail price, discount percentage, star rating, review count, stock status, category and a direct product link. Point it at any of Shein's 38 country storefronts, search several keywords in one run, and get typed, ready-to-use data with no HTML parsing or price-string cleanup on your side. Jump to Input or hit Start on the Actor page to run your first search.

๐Ÿงญ What is Shein Search Products Scraper?

Shein Search Products Scraper is an Apify Actor that submits a keyword search to Shein's storefront and returns the resulting product listings as structured JSON, instead of you browsing and copy-pasting results by hand. It does not require a Shein account โ€” the Actor never logs in; it only searches the way any visitor would from the homepage search box. It's built for e-commerce sourcing teams, dropshippers, price-monitoring tools and developers who need Shein product data inside a pipeline rather than a browser tab.

๐ŸŒ What Shein product data is publicly available to scrape?

Everything Shein shows an anonymous visitor on its search results page is accessible without logging in โ€” product title, images, price, rating, review count, category and stock signal. What isn't there is anything tied to a Shein account.

Data CategoryPublicGated behind
Product title, image, category nameโœ…โ€”
Sale price & retail priceโœ…value and currency change with the countryCode storefront you query
Discount %, on-sale flagโœ…โ€”
Rating average, review countโœ…โ€”
Stock / sold-out signalโœ… (when Shein's payload carries one)exact unit inventory โ€” not exposed on the search results page
Product deep linkโœ…โ€”
Store code, business model, mall codeโœ…โ€”
Wishlist, order history, member-only pricingโŒShein account login

Shein Search Products Scraper only returns publicly visible data โ€” what any visitor to the selected country's storefront sees. Nothing behind a login wall.

๐Ÿ“ฆ What data can I extract with Shein Search Products Scraper?

Every row returned combines the product's identity and media, its pricing and quantitative signals, and the search context that produced it.

Field NameDescription
goods_idShein's internal product ID
goods_nameProduct title
goods_imgPrimary product image URL
imageGalleryFull image gallery array (falls back to just the primary image when Shein's payload carries no gallery)
productUrlDirect Shein product page link โ€” built by the Actor when Shein's own payload omits one
categoryIdShein's category ID
categoryNameHuman-readable category name
storeCodeSeller/store code
businessModelShein's internal business-model tag for the seller
mallCodeShein mall/marketplace code
salePriceAmountSale price as a number
salePriceDisplaySale price formatted with currency symbol, as shown on the site
salePriceUsdSale price converted to USD, when Shein's payload includes it (otherwise null)
retailPriceAmountOriginal/retail price as a number
retailPriceDisplayRetail price formatted with currency symbol
retailPriceUsdRetail price in USD, when Shein's payload includes it
discountPercentDiscount percentage โ€” taken from Shein's payload, or computed from sale vs. retail price when Shein omits it
isOnSaletrue when discountPercent is greater than zero
ratingValueAverage star rating
reviewCountNumber of reviews
inStocktrue/false/null, derived from whichever stock signal Shein returns; null when neither is present
stockRawThe raw stock/sold-out value Shein returned, unprocessed
section_index1-based index of the search query this row belongs to, for multi-query runs
section / queryThe search term that produced this row
countryThe countryCode used for this row
sort_orderThe orderBy value used for this row
rankInfoLabelFlattened text from Shein's ranking/badge info (e.g. "Best Seller"), when present
promotionLabelsFlattened text from Shein's promotion info, when present
scrapedAtISO-8601 UTC timestamp when the row was built

Shein's raw product object can carry additional fields beyond this list โ€” Shein has reshuffled its payload shape across regions before. The Actor passes any field it doesn't already promote through unchanged, so nothing in the source payload is discarded; the fields above are the ones guaranteed on every row.

๐Ÿท๏ธ Product identity & media

goods_id, goods_name, goods_img, imageGallery, productUrl, categoryId, categoryName, storeCode, businessModel, mallCode

๐Ÿ’ฒ Pricing, ratings & stock

salePriceAmount, salePriceDisplay, salePriceUsd, retailPriceAmount, retailPriceDisplay, retailPriceUsd, discountPercent, isOnSale, ratingValue, reviewCount, inStock, stockRaw

๐Ÿงต Search context & run metadata

section_index, section, query, country, sort_order, rankInfoLabel, promotionLabels, scrapedAt

๐Ÿค– Add-on: Need additional marketplace data?

If your workflow needs data alongside Shein, Scraper Engine's eBay Search Scraper and eBay Product Details Scraper โ€” Watchlist & Price Details cover eBay listings and per-item price history, and Etsy Reviews Scraper With Sentiment & Analytics covers Etsy customer reviews โ€” combine them to build cross-marketplace price or catalogue comparisons.

๐Ÿค” Why not build this yourself?

Shein has no public official API for third-party product search, so the alternative to this Actor is a scraper you build and maintain yourself. That means solving Shein's DataDome bot challenge (the /risk/ redirect that blocks a direct search-page load) with a real, undetected browser fingerprint, keeping selectors working as Shein reshuffles its search page and embedded data payload, and paying for residential proxies since Shein blocks bare datacenter IPs outright. Shein Search Products Scraper already handles the anti-bot browser automation, the sticky residential proxy session per query, and the retry logic for the risk challenge โ€” so you get JSON results instead of a scraper to babysit.

๐Ÿš€ How to use Shein Search Products Scraper

Run it from the Apify Console or trigger it programmatically โ€” no Shein account needed, only an Apify one.

  1. Open Shein Search Products Scraper on its Apify Console page (or call it via the API/CLI/apify_client).
  2. Enter one or more search terms in query โ€” the only required field, e.g. ["jacket", "summer dress"].
  3. Optionally set countryCode, orderBy, maxItems, perPage, categoryId, minPrice/maxPrice and filter to narrow the results.
  4. Leave proxyConfiguration on its residential default โ€” Shein blocks bare datacenter IPs. โš ๏ธ
  5. Click Start.
  6. Stream results live from the dataset, or download them as JSON, CSV, Excel, XML or HTML once the run finishes.

๐Ÿ“ˆ How to scale to bulk product extraction

query accepts an array, so a single run can search dozens of keywords โ€” each becomes its own numbered section in the output. dedupeAcrossQueries (on by default) skips, and doesn't re-charge, a product that already appeared under an earlier query in the same run. There's no URL-list or product-ID input here: Shein Search Products Scraper is search-driven, so scaling up means adding more terms to the same query array rather than supplying a separate ID list.

๐Ÿ’ก What can you do with Shein product data?

  • ๐Ÿ›๏ธ Dropshippers sourcing inventory use salePriceAmount, discountPercent and inStock to shortlist deep-discount, in-stock items before listing them elsewhere.
  • ๐Ÿ“Š Price-monitoring teams compare salePriceAmount against retailPriceAmount across different country values to see how the same search term is priced on different Shein storefronts.
  • ๐Ÿ”ฌ Market researchers use categoryName, ratingValue and reviewCount to gauge which product categories are performing well for a given keyword.
  • ๐Ÿท๏ธ Merchandising teams track promotionLabels and isOnSale across repeated runs to see how often and how deeply a category goes on sale.
  • ๐Ÿค– AI engineers feed goods_name, imageGallery and productUrl into a product-matching or shopping-assistant agent, using the typed JSON directly as retrieval context with no HTML scraping step of their own.

๐Ÿ›ก๏ธ How does Shein Search Products Scraper handle rate limits and blocking?

The Actor drives a real, fingerprint-patched browser โ€” Camoufox (a patched Firefox build) by default, falling back to Playwright Chromium with playwright-stealth if Camoufox fails to launch โ€” rather than making raw HTTP requests, since Shein's DataDome protection blocks bare requests and bare datacenter IPs outright. When Apify Proxy is enabled, the Actor forces residential routing and pins one session ID per search so every page of a query keeps the same exit IP; a fresh IP mid-pagination is itself a block signal. If a page lands on Shein's /risk/ challenge, the Actor waits for the invisible device check to clear and retries before rotating to a new proxy session. A search attempt runs up to 3 times on a user-supplied proxy (if one is configured) and up to 8 times on the Apify residential fallback; two consecutive empty pages end that query's pagination early, and if every attempt still returns zero products across all queries, the run fails with an error rather than finishing with a silently empty dataset. The Actor does not solve CAPTCHAs.

โฌ‡๏ธ Input

ParameterRequiredTypeDescriptionExample Value
queryYesarrayProduct types to search (jacket, dress, shoes...). Add multiple items for separate searches. Default: ["jacket"]["jacket", "summer dress"]
countryCodeNostringSHEIN regional site (e.g. US, UK, DE). Default: "us""de"
orderByNostringHow to sort the search results. Default: "recommend""PriceLowtoHigh"
maxItemsNointegerMaximum products to scrape per search query (1โ€“10000). Default: 300500
pageNointegerStart page for pagination (1 = first page). Default: 11
perPageNostringNumber of products per page (20โ€“120). Default: "120""60"
filterNostringExtra filter options. Leave empty for no filter. Default: """"
categoryIdNostringFilter by category. Leave empty for all categories. Default: """"
minPriceNostringMinimum price in local currency (e.g. 10). Default: """15"
maxPriceNostringMaximum price in local currency (e.g. 100). Default: """80"
dedupeAcrossQueriesNobooleanIf the same product shows up under two different search queries in one run, only push (and charge) it once. Default: truetrue
proxyConfigurationNoobjectApify Proxy (residential recommended). Shein blocks bare datacenter IPs โ€” residential is the only reliable mode.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Enum values

  • countryCode: us, de, fr, it, ch, pl, pt, es, se, uk, ca, mx, br, ae, sa, ru, jp, kr, cn, tw, hk, au, in, id, ph, my, sg, tr, nl, be, at, dk, no, fi, ie, vn, th, il (38 country storefronts)
  • orderBy: recommend (default), MostPopular, NewArrivals, TopRated, PriceLowtoHigh, PriceHightoLow
  • perPage: "20", "40", "60", "80", "100", "120" (default "120")

Example input

{
"query": ["jacket", "summer dress"],
"countryCode": "us",
"orderBy": "PriceLowtoHigh",
"maxItems": 500,
"page": 1,
"perPage": "60",
"filter": "",
"categoryId": "",
"minPrice": "15",
"maxPrice": "80",
"dedupeAcrossQueries": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

โฌ†๏ธ Output

Results are typed, normalized JSON with a consistent schema across runs โ€” one row per product. The Apify Console's default dataset view surfaces 14 of these columns (section_index, section, goods_name, salePriceDisplay, retailPriceDisplay, discountPercent, ratingValue, reviewCount, inStock, categoryName, productUrl, country, sort_order, goods_img); the full row carries every field documented above. Export results as JSON, CSV, Excel, XML or HTML from the Apify Console, or fetch them through the API/apify_client.

Every pushed row is billed under a single charged event, row_result โ€” there are no separate uncharged accounting rows mixed into the dataset. Leave dedupeAcrossQueries on (its default) so a product that appears under two different search terms in the same run isn't pushed, and charged, twice.

Example output

{
"section_index": 1,
"section": "jacket",
"query": "jacket",
"country": "US",
"sort_order": "recommend",
"goods_id": "27184552",
"goods_name": "Men Zip Up Corduroy Jacket",
"goods_img": "https://img.ltwebstatic.com/images3_pi/2023/09/12/example.jpg",
"productUrl": "https://us.shein.com/men-zip-up-corduroy-jacket-p-27184552.html",
"salePriceAmount": 23.99,
"salePriceDisplay": "$23.99",
"salePriceUsd": 23.99,
"retailPriceAmount": 39.99,
"retailPriceDisplay": "$39.99",
"retailPriceUsd": 39.99,
"discountPercent": 40.0,
"isOnSale": true,
"ratingValue": 4.6,
"reviewCount": 1284,
"inStock": true,
"stockRaw": 1,
"categoryId": "2038",
"categoryName": "Men Jackets",
"imageGallery": [
"https://img.ltwebstatic.com/images3_pi/2023/09/12/example.jpg",
"https://img.ltwebstatic.com/images3_pi/2023/09/12/example2.jpg"
],
"rankInfoLabel": "Best Seller",
"promotionLabels": "Flash Sale; Free Shipping",
"storeCode": "1002938",
"businessModel": "1",
"mallCode": "1",
"scrapedAt": "2026-07-30T14:02:11.483Z"
}

โš™๏ธ How does it work?

Shein Search Products Scraper drives a real, fingerprint-patched browser (Camoufox, or Playwright Chromium as a fallback) through Shein's own homepage rather than requesting the search URL directly โ€” Shein redirects a direct search-page load to a bot challenge, but a search typed into the homepage's search box and submitted with a trusted keystroke reaches results without tripping that gate. Once results load, the Actor reads Shein's embedded product data straight out of the rendered page, with a DOM-based fallback if that payload's shape changes, flattens nested price and label objects into plain columns, and pushes one row per product. Because extraction targets the rendered page rather than a single fixed URL pattern, the output schema is designed to stay the same shape even when Shein reshuffles its search UI. Only data visible on the public search results page is returned โ€” no login is ever performed.

๐Ÿ”Œ Integrations

Shein Search Products Scraper runs on the Apify platform, so it works with anything that can call Apify's API or trigger an Apify run.

Calling Shein Search Products Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("your-username/shein-search-products-scraper").call(
run_input={"query": ["jacket"], "countryCode": "us", "maxItems": 200}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["goods_name"], item["salePriceDisplay"])

Works in Go, Ruby, Node.js, cURL โ€” any language that can make an HTTP request.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node (or the Apify node) pointed at this Actor's run endpoint to trigger a search from a workflow. In Make, the Apify app's "Run an Actor" module does the same. In LangChain, wrap the same HTTP call as a custom Tool so an agent can call Shein Search Products Scraper as one step in a larger chain.

Scraping publicly available product listings โ€” prices, titles, ratings and images that any visitor can see without logging in โ€” is generally lawful, subject to Shein's own terms of service and applicable database-rights law. Shein Search Products Scraper returns only publicly available data: nothing behind a Shein account login. This is product/catalogue data, not personal data, so GDPR and CCPA do not govern the fields this Actor returns. Consult legal counsel if your use case involves large-scale reuse or redistribution of Shein's catalogue data.

โ“ Frequently asked questions

What Shein product fields does Shein Search Products Scraper return?

The top fields are goods_name, salePriceAmount/salePriceDisplay, discountPercent, ratingValue and productUrl โ€” see the data fields section above for the full list.

Does Shein Search Products Scraper require a Shein account or login?

No. The Actor searches through Shein's public homepage search box and never authenticates; it sees exactly what an anonymous visitor to that country's Shein site sees.

How many products can I extract in one run?

Up to maxItems per search query (schema range 1โ€“10000, default 300), multiplied by however many terms you put in query โ€” each query gets its own budget. The actual count can be lower if Shein's own result count for that keyword is smaller, or if pagination stops early after two consecutive empty pages.

What happens if a search query returns zero results?

That query's section is logged as returning 0 products and the run moves on to the next query. If every query in the run returns zero products, the Actor raises an error instead of finishing with a silently empty dataset, so you always know a run failed rather than assuming it succeeded with no matches.

Can I scrape multiple Shein search queries at once?

Yes โ€” query is an array. Add multiple search terms in one run, each becomes its own section in the output, and dedupeAcrossQueries (on by default) prevents the same product being pushed and charged twice under two different queries in the same run.

Does Shein Search Products Scraper work with Claude, ChatGPT and other AI agent tools?

There is no dedicated MCP server for this Actor. It's callable as an HTTP endpoint through the Apify API from any agent framework that can make an HTTP request, including LangChain tools and custom Claude/GPT tool-use integrations.

What does Shein Search Products Scraper do beyond Shein's raw search payload?

It flattens Shein's nested price objects into plain salePriceAmount/salePriceDisplay columns, computes discountPercent and isOnSale when Shein's own payload doesn't already carry them, derives inStock from whichever stock signal Shein returns, builds the product's direct link when Shein's payload omits it, and de-duplicates the same product across search terms in one run โ€” so you get a ready-to-use table instead of a nested JSON blob to parse yourself.

Does Shein Search Products Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs โ€” no HTML parsing, no selectors. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when Shein changes its layout or anti-bot system?

Shein Search Products Scraper is maintained, and the output schema is designed to stay stable across Shein's UI and payload changes โ€” the Actor extracts from Shein's embedded data payload first and falls back to reading the rendered DOM if that payload's shape changes. No specific update turnaround is promised.

Can I use Shein Search Products Scraper without managing proxies or browser infrastructure?

Yes. The Actor runs its own headless browser (Camoufox, with a Playwright fallback) and, when Apify Proxy is enabled, automatically routes through residential IPs with a sticky session per search โ€” you configure only the country and search terms, not a browser or proxy pool.

Which Shein product fields work best for AI training data and RAG indexing?

For RAG, index goods_name, categoryName, rankInfoLabel and promotionLabels โ€” the highest-information text fields. For training data, salePriceAmount, discountPercent, ratingValue and reviewCount return as consistent typed numbers across every record, with inStock and isOnSale as consistent booleans.

ScraperWhat it extracts
eBay Search ScrapereBay listing search results by keyword
eBay Product Details Scraper โ€” Watchlist & Price DetailsFull eBay listing details with price-history tracking
Etsy Reviews Scraper With Sentiment & AnalyticsEtsy product reviews with sentiment analysis

๐Ÿ’ฌ Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this Actor's Apify Console page, or message the developer directly through Apify โ€” active maintenance means field requests and layout-change reports get picked up.