# Taobao Products Scraper (`neuro-scraper/taobao-products-scraper`) Actor

Taobao Products Scraper SD - Taobao Products Scraper is an e-commerce data tool that extracts Taobao and Tmall products (title, CNY price, list price, discount, images, shop, seller DSR scores, location, category path, sample reviews) by keyword, category, shop or product ID, with no login.

- **URL**: https://apify.com/neuro-scraper/taobao-products-scraper.md
- **Developed by:** [Neuro Scraper](https://apify.com/neuro-scraper) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

./README.md

# Actor input Schema

## `keywords` (type: `array`):

Products for each search term, as Taobao's public catalogue lists them, e.g. 手机壳 (phone case), 连衣裙, 蓝牙耳机. Chinese terms match best; English terms work too. A catalogue link (https://www.taobao.com/list/product/<keyword>.htm or world.taobao.com/product/...) is also accepted.

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

One search term - same as a line in Keywords (kept for users coming from other Taobao Actors), e.g. iphone 15.

## `categoryIds` (type: `array`):

Taobao category ids or category links, e.g. 150704 or https://www.taobao.com/list/category/150704.htm (phone cases). The id is in the breadcrumb links of any catalogue page.

## `shopIds` (type: `array`):

Products of a shop: a shop id or the shop's catalogue link, e.g. 72104903 or https://www.taobao.com/list/dianpu/72104903.htm. The public shop page lists up to 60 products (measured).

## `itemUrls` (type: `array`):

Single products: a numeric item id (1078907312106), an item.taobao.com / detail.tmall.com link with ?id=, or a www.taobao.com/list/item/... / world.taobao.com/item/... link. Delisted items are reported in the log and skipped.

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

Order of the first result page of every keyword and category (Taobao's own sort bar). Price sorts widen the result set and can surface placeholder-priced listings - combine them with a price range.

## `minPrice` (type: `number`):

Lowest price in yuan, e.g. 20. Sent to Taobao's price filter and also checked by the Actor on each product's current price (Taobao's filter is approximate).

## `maxPrice` (type: `number`):

Highest price in yuan, e.g. 200. Sent to Taobao's price filter and also checked by the Actor on each product's current price.

## `tmallOnly` (type: `boolean`):

Keep only Tmall listings (the product page marks them; applied by the Actor, which then opens every product page even if 'Scrape product pages' is off).

## `freeShippingOnly` (type: `boolean`):

Keep only products Taobao marks as free shipping (applied by the Actor).

## `maxItems` (type: `integer`):

Stops after this many products in total. Taobao shows visitors only the first 20 results of a listing (page 2 is refused, measured), so with Deep scan the Actor re-asks the same search with every sort order, the top-rated list, price bands and the page's filters until this number is reached or nothing new comes back.

## `deepScan` (type: `boolean`):

On: go beyond the first 20 results through Taobao's own sort orders, top-rated list, price bands and filter facets (deduplicated). Off: first result page only (20 per keyword or category).

## `scrapeDetails` (type: `boolean`):

On: one request per product for seller id, seller type and credit level, the three seller DSR scores, shop opening date and size, ships-from location, category path, Tmall flag, payment methods and the sample review. Off: listing fields only (much faster).

## `fetchReviews` (type: `boolean`):

Adds the reviews Taobao publishes logged out: the sample review of each product page (so product pages are opened), up to 4 more reviews for the top items of a keyword (top-rated list) and the review tags with counts. Full review pages need a signed API the Actor does not use.

## `maxConcurrency` (type: `integer`):

Product pages opened at the same time, each session with its own proxy IP and about one request every 2-3 seconds (Taobao refuses faster requests from one IP). Without a proxy the Actor uses one session.

## `proxyConfiguration` (type: `object`):

Residential proxies (the default) spread the requests over many IPs; Taobao refuses requests that come too fast from one IP. The public catalogue answered a home connection in Bangladesh without a proxy (measured 2026-10-09).

## Actor input object example

```json
{
  "keywords": [
    "手机壳"
  ],
  "categoryIds": [],
  "shopIds": [],
  "itemUrls": [],
  "sort": "sales-des",
  "tmallOnly": false,
  "freeShippingOnly": false,
  "maxItems": 40,
  "deepScan": true,
  "scrapeDetails": true,
  "fetchReviews": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "keywords": [
        "手机壳"
    ],
    "categoryIds": [],
    "shopIds": [],
    "itemUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/taobao-products-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 = {
    "keywords": ["手机壳"],
    "categoryIds": [],
    "shopIds": [],
    "itemUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("neuro-scraper/taobao-products-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 '{
  "keywords": [
    "手机壳"
  ],
  "categoryIds": [],
  "shopIds": [],
  "itemUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call neuro-scraper/taobao-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/taobao-products-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/JnSFj6Rtls1pmfPZr/builds/QccvS6AgyvuACahvN/openapi.json
