Shein Search Products Scraper
Under maintenancePricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
96
Total users
25
Monthly active users
18 days ago
Last modified
Categories
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 Category | Public | Gated 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 Name | Description |
|---|---|
goods_id | Shein's internal product ID |
goods_name | Product title |
goods_img | Primary product image URL |
imageGallery | Full image gallery array (falls back to just the primary image when Shein's payload carries no gallery) |
productUrl | Direct Shein product page link โ built by the Actor when Shein's own payload omits one |
categoryId | Shein's category ID |
categoryName | Human-readable category name |
storeCode | Seller/store code |
businessModel | Shein's internal business-model tag for the seller |
mallCode | Shein mall/marketplace code |
salePriceAmount | Sale price as a number |
salePriceDisplay | Sale price formatted with currency symbol, as shown on the site |
salePriceUsd | Sale price converted to USD, when Shein's payload includes it (otherwise null) |
retailPriceAmount | Original/retail price as a number |
retailPriceDisplay | Retail price formatted with currency symbol |
retailPriceUsd | Retail price in USD, when Shein's payload includes it |
discountPercent | Discount percentage โ taken from Shein's payload, or computed from sale vs. retail price when Shein omits it |
isOnSale | true when discountPercent is greater than zero |
ratingValue | Average star rating |
reviewCount | Number of reviews |
inStock | true/false/null, derived from whichever stock signal Shein returns; null when neither is present |
stockRaw | The raw stock/sold-out value Shein returned, unprocessed |
section_index | 1-based index of the search query this row belongs to, for multi-query runs |
section / query | The search term that produced this row |
country | The countryCode used for this row |
sort_order | The orderBy value used for this row |
rankInfoLabel | Flattened text from Shein's ranking/badge info (e.g. "Best Seller"), when present |
promotionLabels | Flattened text from Shein's promotion info, when present |
scrapedAt | ISO-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.
- Open Shein Search Products Scraper on its Apify Console page (or call it via the API/CLI/
apify_client). - Enter one or more search terms in
queryโ the only required field, e.g.["jacket", "summer dress"]. - Optionally set
countryCode,orderBy,maxItems,perPage,categoryId,minPrice/maxPriceandfilterto narrow the results. - Leave
proxyConfigurationon its residential default โ Shein blocks bare datacenter IPs. โ ๏ธ - Click Start.
- 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,discountPercentandinStockto shortlist deep-discount, in-stock items before listing them elsewhere. - ๐ Price-monitoring teams compare
salePriceAmountagainstretailPriceAmountacross differentcountryvalues to see how the same search term is priced on different Shein storefronts. - ๐ฌ Market researchers use
categoryName,ratingValueandreviewCountto gauge which product categories are performing well for a given keyword. - ๐ท๏ธ Merchandising teams track
promotionLabelsandisOnSaleacross repeated runs to see how often and how deeply a category goes on sale. - ๐ค AI engineers feed
goods_name,imageGalleryandproductUrlinto 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
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
query | Yes | array | Product types to search (jacket, dress, shoes...). Add multiple items for separate searches. Default: ["jacket"] | ["jacket", "summer dress"] |
countryCode | No | string | SHEIN regional site (e.g. US, UK, DE). Default: "us" | "de" |
orderBy | No | string | How to sort the search results. Default: "recommend" | "PriceLowtoHigh" |
maxItems | No | integer | Maximum products to scrape per search query (1โ10000). Default: 300 | 500 |
page | No | integer | Start page for pagination (1 = first page). Default: 1 | 1 |
perPage | No | string | Number of products per page (20โ120). Default: "120" | "60" |
filter | No | string | Extra filter options. Leave empty for no filter. Default: "" | "" |
categoryId | No | string | Filter by category. Leave empty for all categories. Default: "" | "" |
minPrice | No | string | Minimum price in local currency (e.g. 10). Default: "" | "15" |
maxPrice | No | string | Maximum price in local currency (e.g. 100). Default: "" | "80" |
dedupeAcrossQueries | No | boolean | If the same product shows up under two different search queries in one run, only push (and charge) it once. Default: true | true |
proxyConfiguration | No | object | Apify 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,PriceHightoLowperPage:"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 ApifyClientclient = 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.
โ๏ธ Is it legal to scrape Shein products?
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.
๐ Related scrapers
| Scraper | What it extracts |
|---|---|
| eBay Search Scraper | eBay listing search results by keyword |
| eBay Product Details Scraper โ Watchlist & Price Details | Full eBay listing details with price-history tracking |
| Etsy Reviews Scraper With Sentiment & Analytics | Etsy 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.