SHEIN Product Scraper avatar

SHEIN Product Scraper

Pricing

from $10.00 / 1,000 product — full details

Go to Apify Store
SHEIN Product Scraper

SHEIN Product Scraper

Get SHEIN product data by URL, goods ID or SKU, or browse whole categories. Clean JSON: price in local currency and USD, full-res images, colour variants, rating, stock, size-fit. 40+ regions. From $5/1,000 results.

Pricing

from $10.00 / 1,000 product — full details

Rating

5.0

(2)

Developer

Magpie

Magpie

Maintained by Community

Actor stats

2

Bookmarked

244

Total users

76

Monthly active users

28 days

Issues response

3 days ago

Last modified

Categories

Share

SHEIN Product Scraper: SHEIN scraper API for product, price and category data

Scrape SHEIN product data two ways: browse a category to pull whole product lists, or pass a product URL, goods ID or SKU for a single product, in any region and currency. Output is clean JSON, CSV or Excel, or you can pull it through the Apify API. Built for reliability: when other SHEIN scrapers break, this one keeps working.

Reliability: detail lookup (URL / goods_id) resolves across 40+ SHEIN storefronts in real local currency — prices checked against the live SHEIN websites (UK, DE, FR, IT, ES, NL, PT, AT, CH, PL, RO, TR) and identical · 🧹 clean ~22-field schema · 🖼️ full-resolution images

Perfect for price monitoring, dropshipping & reselling, competitor research, catalog enrichment, and fashion-trend analytics.

Two ways in — one clean output

  • 🎯 Detail (URL / ID): give it exact product URLs, goods_ids or SKUs and get the full detail record for each. Works across every storefront.
  • 📂 Browse (category): give it one or more categoryIds to pull every product in that category — optionally narrowed by searchTerms to keep only matching titles.

Both return the same clean product schema, so one pipeline handles any of them.


✨ Why this scraper

  • It keeps working when SHEIN changes things. SHEIN periodically changes how it routes and gates requests; this actor automatically falls back to a working route rather than returning empty results, and tells you (via regionFallback) when it had to.
  • Detail works everywhere, in real local currency. Any goods_id / product URL resolves at the same price the SHEIN website shows in that country — GBP in the UK, AED in the UAE, JPY in Japan, and so on. If SHEIN doesn't sell a product in that country you get a clear not_available_in_region instead of a misleading price.
  • Clean output. A tidy ~22-field record — no internal junk, ready for a sheet, DB, or app.
  • Full-resolution images — the complete gallery plus colour-variant swatches.
  • Fast & cheap. Batched fetching.

ℹ️ Keyword search is no longer available — SHEIN stopped serving that service. Use categoryIds to browse categories (with searchTerms as an optional title filter) or productUrls / goodsIds for exact products. A run with nothing to do ends immediately and is not charged.

💷 Pricing

Pay per product record — you're billed only for products actually returned, never for empty results. Free trial included so you can test before you spend.

EventWhat you getPrice
Productone product from a category browse — price, images, rating, stock, discount$5 / 1,000
Product (full detail)one product from a URL / goods ID — adds size-fit %, full gallery, colour variants, review count$10 / 1,000

Category browsing is the cheap, high-volume way to pull catalogs; full detail is the premium, targeted lookup. A browse of 500 products costs $2.50; 50 exact product lookups cost $0.50.

📥 Input

FieldTypeDescription
searchTermsstring[]Title filter for categoryIds — keep only products whose title matches. Keyword search on its own is no longer available.
maxProductsPerTermintegerHow many products to return per category (default 100).
sortstringCategory sort: empty = recommended, 10 = price low→high, 11 = price high→low.
productUrlsstring[]Detail. SHEIN product URLs, any region (www.shein.co.uk, us.shein.com, de.shein.com, …).
goodsIdsstring[]Detail. SHEIN goods_id values — alternative/addition to URLs. Pair with country.
skusstring[]Detail. SHEIN SKUs (the sku field in every record, e.g. sz260429143242426816727) — alternative/addition to URLs and IDs. Pair with country.
categoryIdsstring[]Browse. SHEIN category IDs — pulls every product in the category. Combine with searchTerms to keep only title matches.
countrystringISO country for pricing/locale (GB, US, DE, FR, …). Sets the region for browse; overrides the URL's region for detail; required for goodsIds/categoryIds without URLs.
currencystringOptional currency override (GBP, USD, EUR, …).
maxItemsintegerStop after N records total.
proxyConfigurationobjectApify Proxy (default) — recommended for larger runs.

Example input

Browse a category:

{
"categoryIds": ["2030"],
"searchTerms": ["dress"],
"maxProductsPerTerm": 100,
"country": "GB"
}

By product URL or ID (detail):

{
"productUrls": [
"https://www.shein.co.uk/...-p-209758798.html",
"https://us.shein.com/...-p-47307085.html"
],
"country": "GB",
"proxyConfiguration": { "useApifyProxy": true }
}

Or fetch by ID:

{ "goodsIds": ["209758798", "47307085"], "country": "US" }

Or by SKU:

{ "skus": ["sz260429143242426816727"], "country": "GB" }

📤 Output

One clean record per product, pushed to the dataset (export JSON / CSV / Excel, or pull via the Apify API). See ./examples/example-output.json for a full real sample.

FieldDescription
id, sku, spuProduct / SKU / product-family identifiers
urlCanonical product URL
titleProduct name
category, categoryIdCategory
price, priceFormattedCurrent price (number + display string)
listPrice, listPriceFormatted, discountPercentOriginal price + discount (when on sale)
currency, priceUsdCurrency + USD price (cross-region compare)
inStockAvailability
imagesFull-resolution image gallery
colorVariantsColour-variant swatch images
colorColour (when labelled)
rating, reviewsCountRatings & review count
fitSize-fit breakdown (true-size / large / small %)
videoUrlProduct video (when present)
storeCodeMarketplace store/seller code
region{ country, currency }
regionFallbacktrue when the record came from the actor's second route because that country's own web storefront wasn't reachable. Price and currency are still that country's — it's a transparency flag, not a warning. Omitted otherwise.
scrapedAtISO timestamp
{
"id": "209758798",
"sku": "sz25092919833193799",
"title": "Sweetra Women's Oblique Shoulder Flounce Bodycon Dress",
"url": "https://www.shein.co.uk/...-p-209758798.html",
"category": "Women Mini Dresses",
"price": 9.49,
"priceFormatted": "£9.49",
"listPrice": 11.99,
"discountPercent": 20,
"currency": "GBP",
"priceUsd": 12.54,
"inStock": true,
"images": ["https://img.ltwebstatic.com/...jpg", "..."],
"colorVariants": ["https://img.ltwebstatic.com/...jpg", "..."],
"rating": 4.68,
"reviewsCount": 94,
"fit": { "trueSize": "88%", "large": "0%", "small": "12%" },
"region": { "country": "GB", "currency": "GBP" },
"scrapedAt": "2026-06-26T11:15:20.505Z"
}

🚀 How to scrape SHEIN product data

  • In the app: set the input, click Start, download from the dataset.
  • Via API / CLI: call the actor with the input above; read results from the dataset. Integrate with Make, Zapier, n8n, or your own code.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('native_emblem/shein-product-scraper').call({
goodsIds: ['209758798'],
country: 'GB',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].priceFormatted); // e.g. £9.49

Runnable Python, Node and curl examples, plus a daily SHEIN price tracker script, are in the shein-product-scraper repo on GitHub.

SHEIN price tracker and price monitoring

Schedule the actor daily (Apify Schedules) on the same goodsIds or categoryIds and compare price, listPrice and discountPercent between runs. Every record carries scrapedAt, so a day-by-day price history is one dataset export away. Set country per run to track the same product in several regions: priceUsd makes the cross-region comparison direct.

Is there a SHEIN API?

SHEIN has no public product API. This actor is the practical substitute: give it a product URL, goods ID, SKU or category ID and it returns the product record as structured JSON, with local prices for 40+ storefronts. Call it from the Apify API, or use the ready-made integrations for Make, Zapier and n8n.

Scraping SHEIN for dropshipping and competitor research

Browse a category with categoryIds to pull the whole listing (price, discount, rating, stock, images), then filter with searchTerms to keep only the titles you care about. Pull full detail (size-fit %, colour variants, review count) only for the products that make the shortlist, so you pay the higher detail price just where it matters.

❓ FAQ

Which regions are supported? 40+ SHEIN storefronts — UK, US, all major EU, LATAM, MENA, and APAC. Set country (or just use a regional URL) and prices come back in that country's currency, matching the SHEIN website there. If a product isn't sold in that country, its record has error: "not_available_in_region" (not charged).

URLs or IDs? Either. Paste product URLs, or pass goods_id values with a country. Mix both.

How fast / how much can I scrape? Batched fetching (up to 20/50 ids per request depending on mode). Suitable for one-off lookups up to large catalog runs via categoryIds.

How fresh is the data? Live — fetched at request time (note scrapedAt).

Is the output stable? Yes — a fixed, clean schema (above), so it won't break your pipeline.

Do I need a proxy? Apify Proxy is on by default and recommended for larger runs.

Support? Open an issue on the actor page — fast turnaround.

Is scraping SHEIN allowed? This actor collects publicly available product information. You are responsible for using the data in line with SHEIN's terms and applicable law.

🔗 More scrapers by Magpie

Same proxyless, clean-JSON approach, other data sources:


Also searched as: shein scraper, scrape shein, shein api, shein product data, shein price scraper, shein price tracker, shein dropshipping data, fashion data, ecommerce scraper.