Shein Search Products Scraper
Pricing
from $3.99 / 1,000 results
Shein Search Products Scraper
SHEIN Search Products Scraper extracts product listings, prices, ratings, reviews, images, categories, product details, and URLs from SHEIN search results. Automate product research, price tracking, competitor analysis, trend discovery, and e-commerce market research.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Shein Search Products Scraper — Product Listings, Prices & Images from 38 Country Sites
Search SHEIN by keyword across 38 regional sites and export the results as structured product data: product ID, name, product URL, image, sale price and the listing fields SHEIN publishes on its search results.
Filter by price range and category, sort by popularity, new arrivals, rating or price, and page as deep as you need — up to 1,000 products per query.
What is Shein Search Products Scraper?
SHEIN moves faster than almost any retailer on earth — thousands of new SKUs a day — and it has no public product API. Its search pages are heavily protected, JavaScript-rendered, and challenge unfamiliar traffic.
This Actor handles that. It runs a real browser session, works through SHEIN's search results page by page, deduplicates by product ID, and streams each product into your dataset as it is found so partial results survive an interrupted run.
It also has a two-path extraction strategy: the primary path reads SHEIN's embedded product data, and a DOM fallback reads the visible product cards when that data is missing or has changed shape. If a page comes back empty after a challenge, the Actor clears the challenge and re-reads the page rather than abandoning the run.
What data can you extract?
| Field | Description |
|---|---|
goods_id | SHEIN product identifier — the deduplication key |
goods_name | Product title |
goods_url | Link to the product page |
goods_img | Product image URL |
salePrice | Current price as displayed |
query | The search keyword that produced this row |
section, section_index | Which query section the row belongs to |
country | Regional SHEIN site the row came from |
sort_order | Sort mode applied to the search |
Additional listing fields published by SHEIN in its search payload are passed through on each row. Rows recovered by the DOM fallback are marked with _source: "dom" and carry the core subset above.
Why teams scrape SHEIN search results
For fashion trend research
SHEIN's catalogue turnover is its own trend signal. Sorting by NewArrivals shows what the fastest-moving retailer in fast fashion is betting on this week — often weeks before it shows up elsewhere.
For competitive pricing
Price benchmarking against SHEIN is unavoidable in apparel. minPrice/maxPrice plus PriceLowtoHigh gives you the entry-price floor in any category, by market.
For dropshipping and reselling product research
MostPopular and TopRated sorting surfaces products with demonstrated demand rather than guesses, and the product URL takes you straight to the listing.
For market and localisation analysis
The same keyword across us, de, br and ae returns different assortments and prices. That comparison is how you understand regional pricing strategy and catalogue differences.
For e-commerce data teams
Product IDs, names, images and prices across a category form a clean dataset for classification, image models or price-tracking systems.
For brand protection
Searching your brand or product names on SHEIN surfaces copies and lookalikes, with links for evidence.
How to scrape SHEIN products step by step
- Open the Actor and enter your search terms in Search Query — one product type per line.
- Pick a Country — the regional SHEIN site to search.
- Choose a Sort Order and set Max Items Per Query.
- (Optional) Set a price range, category ID, page number and items per page.
- Keep residential proxy enabled — this is not optional in practice.
- Click Start, then export the Output tab as CSV, Excel or JSON.
⬇️ Input
Example input
{"query": ["jacket", "winter coat"],"countryCode": "us","orderBy": "MostPopular","maxItems": 200,"perPage": "120","minPrice": "10","maxPrice": "60"}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
query | array | ["jacket"] | Required. Product types to search. Each entry runs as a separate search. |
countryCode | string | us | Regional SHEIN site. 38 options: us, uk, de, fr, it, es, nl, be, at, ch, pl, pt, se, dk, no, fi, ie, ca, mx, br, ae, sa, il, tr, ru, jp, kr, cn, tw, hk, au, in, id, ph, my, sg, vn, th. |
orderBy | string | recommend | recommend, MostPopular, NewArrivals, TopRated, PriceLowtoHigh, PriceHightoLow. |
maxItems | integer | 10 | Maximum products per search query, 1–1000. |
page | integer | 1 | Start page for pagination. |
perPage | string | 120 | Products per page: 20, 40, 60, 80, 100, 120. |
minPrice | string | — | Minimum price in the site's local currency. |
maxPrice | string | — | Maximum price in local currency. |
categoryId | string | — | Restrict to a category. Leave empty for all. |
filter | string | — | Additional SHEIN filter options. |
proxyConfiguration | object | Apify Residential | Residential is the only reliable mode — SHEIN blocks bare datacenter IPs. |
Prices are in local currency.
minPrice: "10"means 10 USD onusand 10 EUR onde— the filter is not converted.
⬆️ Output
Example output
{"section_index": 0,"section": "jacket","query": "jacket","country": "US","sort_order": "MostPopular","goods_id": "34567890","goods_name": "Women's Oversized Denim Jacket Washed Blue","goods_url": "https://us.shein.com/Womens-Oversized-Denim-Jacket-p-34567890.html","goods_img": "https://img.ltwebstatic.com/images3_pi/…","salePrice": "$27.99"}
Illustrative values — a live run returns current SHEIN data.
Usage recipes
Category price floor
{"query": ["dress"],"countryCode": "us","orderBy": "PriceLowtoHigh","maxItems": 200}
What is new this week
{"query": ["jacket", "coat", "blazer"],"countryCode": "uk","orderBy": "NewArrivals","maxItems": 300,"perPage": "120"}
Schedule it weekly and deduplicate on goods_id — anything new is genuinely new to the catalogue.
Proven sellers in a price band
{"query": ["sneakers"],"countryCode": "de","orderBy": "TopRated","minPrice": "20","maxPrice": "50","maxItems": 200}
Cross-market comparison
Run the same query with countryCode set to us, de, br and ae, then compare salePrice and assortment. Every row carries country, so one export supports the whole comparison.
Deep pagination
{"query": ["hoodie"],"countryCode": "us","page": 1,"perPage": "120","maxItems": 1000}
Larger perPage values mean fewer page loads for the same number of products — noticeably faster and less exposed to challenges.
How does this compare to an official SHEIN API?
SHEIN has no public product API. Its developer-facing programmes are partner and supplier oriented (seller tooling, logistics, affiliate feeds), not a catalogue query interface for third parties. Affiliate feeds, where available, cover a curated product subset with affiliate terms attached — they are not a general search API.
That leaves scraping the public storefront as the practical route to SHEIN catalogue data, which is what this Actor does — while handling the anti-bot layer that makes doing it yourself difficult.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/shein-search-products-scraper").call(run_input={"query": ["jacket"],"countryCode": "us","orderBy": "MostPopular","maxItems": 200,})for p in client.dataset(run["defaultDatasetId"]).iterate_items():print(p.get("salePrice"), "|", p.get("goods_name"), "|", p.get("goods_url"))
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/shein-search-products-scraper').call({query: ['jacket'],countryCode: 'us',maxItems: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~shein-search-products-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"query":["jacket"],"countryCode":"us","maxItems":200}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent to feed price-tracking or product-research workflows.
Schedules and webhooks
Attach a Schedule for recurring price and new-arrival tracking, and use webhooks or the Google Sheets / Airtable / Slack integrations to route results.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per product row delivered to your dataset. maxItems multiplied by the number of queries is your cost ceiling.
Because the Actor runs a real browser session through Apify Residential proxies, that proxy traffic is billed separately by the platform according to your plan.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run.
Limits, reliability and blocking
- Residential proxy is effectively mandatory. SHEIN blocks bare datacenter IPs; without residential, runs will not produce results reliably.
- SHEIN challenges traffic. The Actor detects challenge pages, clears them and re-reads rather than failing — but on a heavily challenged session some pages can still come back short. Deep pagination is the most exposed part of a run.
maxItemsis per query, so three keywords at 300 each can return up to 900 rows.- Maximum 1,000 products per query. Split a category across several keyword variations to go wider.
- Field availability varies by extraction path. Rows recovered by the DOM fallback carry the core fields (
goods_id,goods_name,goods_url,goods_img,salePrice) and are marked_source: "dom". - Prices are local-currency strings as displayed, not normalised numbers — parse them per market.
- Image URLs point at SHEIN's CDN and can change.
- Larger
perPageis usually better: fewer page loads means fewer opportunities to be challenged. - Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for deep multi-query runs.
Is it legal to scrape SHEIN?
This Actor collects publicly visible product listings — the same search results any shopper sees, without logging in. It does not log in, place orders, or access account or checkout data.
Product images and descriptions are the intellectual property of SHEIN and its suppliers: use them for research, price comparison and analysis, and do not republish imagery or copy as your own product content. SHEIN's terms restrict automated access, so keep volumes proportionate. This dataset contains no personal data. You are responsible for ensuring your use complies with SHEIN's terms and applicable law.
❓ Frequently asked questions
Do I need a SHEIN account?
No. The Actor reads public search results without logging in.
Does SHEIN have a public API?
No general product API for third parties. Partner and affiliate programmes exist but do not provide open catalogue search, which is why scraping the storefront is the practical route.
Why is residential proxy required?
SHEIN blocks datacenter IP ranges outright. Residential is the only mode that reliably completes runs.
How many products can I get per keyword?
Up to 1,000. Use several keyword variations to cover a category more broadly.
Are prices converted to a single currency?
No. Prices — and the minPrice/maxPrice filters — are in the local currency of the site you select.
What does _source: "dom" mean on a row?
That product was recovered by the DOM fallback because SHEIN's embedded data was missing or changed. The row is valid but carries the core field subset.
How do I find new products only?
Use orderBy: "NewArrivals", schedule the run, and deduplicate on goods_id between runs.
Can I filter by category?
Yes — set categoryId. Leave it empty to search all categories.
Why did a page return nothing?
Usually a challenge landing mid-navigation. The Actor clears it and re-reads once; if a page still comes back empty, lower perPage or reduce concurrency of scheduled runs.
Which export format should I use?
CSV or Excel — the rows are flat. JSON works equally well for pipelines.
🔗 Related scrapers
- Etsy Reviews Scraper — buyer sentiment on the handmade end of the market.
- Facebook Marketplace Scraper — secondhand pricing to compare against fast fashion.
- Google Search Results Scraper with Local Businesses — search demand and competitor visibility for the same products.
- TikTok Trending Videos Insights — the trend layer that drives fast-fashion demand.
Browse the full collection on the ScraperForge profile.
💬 Feedback
Need product-detail enrichment, review data, or a custom price-tracking pipeline? Open an issue on the Issues tab of this Actor.