# SHEIN Product & Category Scraper (`crw/shein-product-category-scraper`) Actor

Extract product data from SHEIN by search keyword. Collect sale prices, discounts, ratings, review counts, and images. Supports sort options: recommend, most popular, new arrivals, top rated, and price order. Ideal for dropshipping research, price monitoring, and fashion trend analysis.

- **URL**: https://apify.com/crw/shein-product-category-scraper.md
- **Developed by:** [CRW](https://apify.com/crw) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 64 total users, 20 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🛍️ SHEIN Product & Category Scraper

> **Extract real-time product data from SHEIN by search keyword or category URL.**\
> Powered by a high-speed direct engine with zero-configuration residential proxies and continuous anti-blocking protection.

[![Real-Time Data](https://img.shields.io/badge/Data-Real--Time%20Extraction-blue?style=flat-square)](#)
[![Dual Mode](https://img.shields.io/badge/Discovery-Keywords%20%26%20Category%20URLs-brightgreen?style=flat-square)](#)
[![Built-in Proxy](https://img.shields.io/badge/Proxy-US%20Residential%20Included-orange?style=flat-square)](#)
[![Anti-Block](https://img.shields.io/badge/Reliability-Advanced%20Anti--Block-success?style=flat-square)](#)
[![Data Format](https://img.shields.io/badge/Format-JSON%20%7C%20CSV%20%7C%20Excel-purple?style=flat-square)](#)

SHEIN is the world's fast-fashion juggernaut with **150M+ active shoppers** and tens of thousands of trendy listings dropping every single day.

Whether you need to monitor competitor pricing, find winning dropshipping items, track seasonal fashion trends, or sync entire category catalogs to your e-commerce store, the **SHEIN Product & Category Scraper** delivers accurate, structured, and complete product data at scale without getting blocked.

***

### ⚡ Why This Scraper Beats the Competition

Most SHEIN scrapers on Apify either only support single URLs, suffer high failure rates due to aggressive anti-scraping blocks, or force you to configure expensive custom residential proxies.

Here is how this scraper stands apart:

| Feature | 🌟 This Scraper | Competitor A (Keyword-only) | Competitor B (URL-only) | Competitor C (Standard) |
|---|:---:|:---:|:---:|:---:|
| **Keyword Search** | **✅ 100% Working (6 Sorts)** | ⚠️ Unstable / Low success rate | ❌ Not supported | ⚠️ Often blocked / Degraded |
| **Category & Collection URLs** | **✅ Supported (Any valid URL)** | ❌ Not supported | ✅ Supported | ⚠️ Limited URL types |
| **Built-in Residential Proxy** | **✅ Included Free (Zero Config)** | ❌ Bring your own proxy | ❌ Manual config required | ❌ Extra proxy subscription |
| **Anti-Blocking & Stability** | **✅ Automated Smart Session Protection** | ❌ Frequent access blocks | ❌ Prone to rate limits | ❌ Degraded keyword search |
| **Data Architecture** | **⚡ High-Speed Direct Engine** | 🐢 Slow HTML DOM scraping | ⚡ Standard engine | 🐢 Fragile HTML DOM |
| **Data Consistency** | **✨ 23 Clean, Standardized Fields** | ❌ Messy raw JSON dumps | ❌ Inconsistent attributes | ⚠️ Missing numeric prices |
| **Export Formats** | **📊 JSON, CSV, Excel, XML** | 📊 JSON, CSV | 📊 JSON, CSV | 📊 JSON, CSV |

***

### 🎯 Key Features & Capabilities

- **🔍 True Dual-Mode Discovery**: Search with any custom keyword (e.g. `summer dress`, `cargo pants`, `oversized hoodie`) OR paste any SHEIN category/collection/recommendation URL directly.
- **⚡ High-Speed Direct Engine**: Bypasses slow webpage rendering. Data is streamed through a high-performance direct engine, ensuring instant extraction and zero breakage during website UI updates.
- **🛡️ Built-in US Residential Proxy**: No proxy configuration headache. Every request is routed through rotating US residential IPs out of the box with zero setup.
- **🔐 Advanced Anti-Blocking Protection**: Engineered to navigate strict access controls and rate limits automatically, ensuring consistent reliability for heavy production workloads.
- **📊 6 Granular Sort Options**: Order keyword results by *Recommend*, *Most Popular*, *New Arrivals*, *Top Rated*, *Price Low to High*, or *Price High to Low*.
- **💎 Rich, E-commerce Ready Schema**: Delivers 23 standardized fields per product, including dual price formatting (numeric for calculations + formatted with currency symbols), full multi-angle image galleries, discount percentages, review metrics, brand codes, and quick-shipping eligibility.

***

### 💡 Perfect For

- **Dropshipping & Product Research**: Discover viral, high-margin, top-rated products with real-time stock and discount metrics before competitors find them.
- **Dynamic Price Monitoring**: Continuously track competitor retail prices, promotional flash sales, and price drops over time.
- **Fashion Trend & Market Intelligence**: Analyze new season collections, customer demand, review distributions, and catalog shifts across women's, men's, kids', and home decor.
- **Catalog Enrichment & E-commerce Sync**: Power your Shopify, WooCommerce, or custom storefront with complete high-resolution gallery images, SKU codes, and clean taxonomy.
- **AI & Machine Learning Datasets**: Train fashion recommendation engines, image classification models, or pricing algorithms with clean, structured dataset exports.

***

### 🚀 How to Use

#### Mode 1: Search by Keyword

Type any search phrase just like you would on SHEIN's website. Select from 6 sorting options to tailor your results:

```json
{
  "keyword": "summer dress",
  "sort": "most_popular",
  "max_items": 100
}
```

#### Mode 2: Scrape by Category or Collection URL

Paste any SHEIN category, recommendation, or promo landing page URL directly from `us.shein.com`:

```json
{
  "category_url": "https://us.shein.com/recommend/New-in-Tops-sc-10050028993.html",
  "max_items": 100
}
```

> 💡 **Tip:** When `category_url` is provided, the actor automatically switches to Category Mode and prioritizes the URL over `keyword`.

***

### ⚙️ Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|:---:|---|---|
| `keyword` | String | Conditional | `"Shorts"` | Search keyword (e.g. `linen shirts`, `swimwear`, `denim shorts`). Provide either `keyword` OR `category_url`. |
| `category_url` | String | Conditional | — | SHEIN category, recommendation, or collection URL (e.g. `https://us.shein.com/recommend/New-in-Tops-sc-10050028993.html`). |
| `sort` | Select | Optional | `recommend` | Sort order for keyword search: `recommend`, `most_popular`, `new_arrivals`, `top_rated`, `price_asc`, `price_desc`. |
| `max_items` | Integer | Optional | `100` | Total number of products to collect (min: 20, max: 100). |

#### Sort Modes (Keyword Search)

- `recommend`: SHEIN default recommendation ranking.
- `most_popular`: Best-selling and highest trending products.
- `new_arrivals`: Latest fashion releases and newest drops.
- `top_rated`: Highest average customer ratings.
- `price_asc`: Lowest price first (great for bargain hunting).
- `price_desc`: Highest price first (great for premium collections).

***

### 📦 Extracted Data Fields (Output Schema)

Every item collected contains **23 structured data fields**, ready for immediate use in CSV, Excel, or JSON:

| Field Name | Type | Description | Example |
|---|---|---|---|
| `goods_id` | String | Unique SHEIN product identifier | `"11133529"` |
| `goods_sn` | String | SHEIN internal SKU code | `"sw2207134119790001"` |
| `goods_name` | String | Full product title | `"SHEIN EZwear Ripped Raw Trim Denim Shorts Y2k"` |
| `cat_id` | String | Internal category identifier | `"1935"` |
| `cate_name` | String | Human-readable category path | `"Women Denim Shorts"` |
| `product_url` | String | Direct link to the product on SHEIN | `"https://us.shein.com/SHEIN-EZwear...-p-11133529.html"` |
| `goods_img` | String | Main thumbnail image URL (high-res) | `"https://img.ltwebstatic.com/..._thumbnail_405x552.jpg"` |
| `detail_images` | Array | Full gallery of additional product images | `["https://img.ltwebstatic.com/..."]` |
| `video_url` | String | Direct video URL (`"0"` if unavailable) | `"https://video.ltwebstatic.com/..."` |
| `retail_price` | Float | Original retail list price (numeric) | `33.07` |
| `retail_price_str` | String | Formatted retail price with currency | `"$33.07"` |
| `sale_price` | Float | Current selling price (numeric) | `24.76` |
| `sale_price_str` | String | Formatted selling price with currency | `"$24.76"` |
| `unit_discount` | Integer | Discount percentage (0 if regular price) | `25` |
| `is_on_sale` | Boolean | Whether an active promotional discount applies | `true` |
| `quickship` | Boolean | Eligible for SHEIN QuickShip fast fulfillment | `true` |
| `comment_num` | Integer | Total verified customer reviews | `41034` |
| `comment_num_show`| String | Customer review volume badge | `"1000+"` |
| `rating` | Float | Average rating out of 5.0 | `4.88` |
| `mall_code` | String | SHEIN marketplace mall code | `"1"` |
| `store_code` | String | Seller store / merchant code | `"8964810354"` |
| `brand_code` | String | Brand identifier | `"10001"` |
| `is_clearance` | Boolean | Whether item is on final clearance sale | `true` |

#### Sample JSON Output

```json
{
  "goods_id": "11133529",
  "goods_sn": "sw2207134119790001",
  "goods_name": "SHEIN EZwear Ripped Raw Trim Denim Shorts Y2k",
  "cat_id": "1935",
  "cate_name": "Women Denim Shorts",
  "product_url": "https://us.shein.com/SHEIN-EZwear-Ripped-Raw-Trim-Denim-Shorts-Y2k-p-11133529.html",
  "goods_img": "https://img.ltwebstatic.com/images3_pi/2023/02/01/16752277162c0ad26613abacc9f54b3ef65bcab145_thumbnail_405x552.jpg",
  "detail_images": [
    "https://img.ltwebstatic.com/images3_pi/2023/02/01/16752277175cbfa8f35aedaae952097dad9b79984c_thumbnail_405x552.jpg",
    "https://img.ltwebstatic.com/images3_pi/2023/02/01/16752277189a0da576839fa2c4bceea29107ccfa91_thumbnail_405x552.jpg"
  ],
  "video_url": "0",
  "retail_price": 33.07,
  "retail_price_str": "$33.07",
  "sale_price": 24.76,
  "sale_price_str": "$24.76",
  "unit_discount": 25,
  "is_on_sale": true,
  "quickship": true,
  "comment_num": 41034,
  "comment_num_show": "1000+",
  "rating": 4.88,
  "mall_code": "1",
  "store_code": "8964810354",
  "brand_code": "10001",
  "is_clearance": true
}
```

***

### ❓ Frequently Asked Questions (FAQ)

#### Do I need to buy or configure my own proxies?

**No.** High-speed US Residential proxies are built directly into the Actor. You do not need to enter proxy credentials, configure external proxy groups, or pay separate proxy bills.

#### How does this scraper ensure high uptime and avoid blocks?

The scraper is equipped with an automated session management system paired with residential network routing. It automatically manages connection states to maintain smooth, uninterrupted data collection even during large-scale runs.

#### Can I download data in CSV, Excel, or JSON?

**Yes.** Once the run finishes, Apify lets you export the collected dataset in multiple formats: **JSON, CSV, Excel (XLSX), XML, or RSS**. You can also query the dataset via the Apify REST API or sync it directly to Google Sheets, Airtable, or webhooks.

#### What are the best practices for keyword searches?

Use natural, 2–4 word fashion and product terms (e.g. `oversized hoodie`, `linen summer dress`, `chunky sneakers`). Avoid internal SKU codes, as search engines are optimized for consumer search terms.

# Actor input Schema

## `keyword` (type: `string`):

Keyword to search for (e.g. 'shorts', 'summer dress'). Provide either keyword OR category_url.

## `category_url` (type: `string`):

Shein category or collection page URL (e.g. https://us.shein.com/recommend/New-in-Tops-sc-10050028993.html). If provided, keyword is ignored.

## `sort` (type: `string`):

Sort order for search results.

## `max_items` (type: `integer`):

Maximum number of products to collect (20–100).

## Actor input object example

```json
{
  "keyword": "Shorts",
  "sort": "recommend",
  "max_items": 100
}
```

# Actor output Schema

## `api` (type: `string`):

REST API endpoint to download the dataset programmatically.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "Shorts",
    "sort": "recommend",
    "max_items": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("crw/shein-product-category-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "Shorts",
    "sort": "recommend",
    "max_items": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("crw/shein-product-category-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "Shorts",
  "sort": "recommend",
  "max_items": 100
}' |
apify call crw/shein-product-category-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crw/shein-product-category-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eZW6LZyPtdGXovfrE/builds/eIkXqF1XrAKLjQbJo/openapi.json
