SHEIN Product Scraper API: Prices, Images & Categories · Apify
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

(3)

Developer

Cartpie

Cartpie

Maintained by Community

Actor stats

2

Bookmarked

291

Total users

72

Monthly active users

28 days

Issues response

20 hours ago

Last modified

Categories

Features

Limited permissions

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): paste SHEIN category links (categoryUrls) or their 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. Paste category links (categoryUrls) 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 categoryUrls / 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.
categoryUrlsstring[]Browse. SHEIN category links, e.g. https://www.shein.co.uk/Women-Dresses-c-12472.html. Pulls every product in the category, in that storefront's region and currency. Combine with searchTerms to keep only title matches.
categoryIdsstring[]Browse. The same by number: the digits after -c- in a category link (12472). Pair with country.
countrystringISO country for pricing/locale (GB, US, DE, FR, …). Sets the region for categoryIds and goodsIds; overrides the region of product and category links.
currencystringOptional currency override (GBP, USD, EUR, …).
maxItemsintegerStop after N records total.
proxyConfigurationobjectApify Proxy (default) — recommended for larger runs.

Example input

Browse a category:

{
"categoryUrls": [
"https://www.shein.co.uk/Women-Dresses-c-12472.html",
"https://us.shein.com/Men-Clothing-c-6273.html"
],
"searchTerms": ["midi"],
"maxProductsPerTerm": 100
}

To get a category link, open the category from SHEIN's menu and copy the address from your browser. Links with -c- in them work, from any storefront, desktop or mobile. Curated selection pages (-sc- in the link, e.g. RecommendSelection/...) can't be browsed: pick the matching category from the menu instead. Those links come back as an unsupported_selection_page row and are never charged.

By product URL or ID (detail):

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

Or fetch by ID:

{ "goodsIds": ["209758798", "56100852"], "country": "GB" }

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 categoryUrls 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 link 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 categoryUrls 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. Categories work the same way: a category link, or its number with a country.

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 categoryUrls.

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

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.