# Taobao & Tmall Scraper - Products, Prices, Shops, Ratings (`scrapewise/taobao-scraper`) Actor

Search Taobao in English: terms are translated to Chinese for you, titles come back in English. Taobao and Tmall without login: searches, categories, shops, product links. Price in CNY or any currency, shop, seller ratings, reviews. Errors free.

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

## Pricing

from $2.55 / 1,000 product delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## Taobao Scraper

**Search Taobao in English: terms are translated to Chinese for you, titles come back in English.**

Taobao Scraper turns **Taobao and Tmall products** into clean JSON, CSV or Excel, **without login, cookies or a Taobao account**. Search in English, Chinese or any language (a term without its own Taobao page is translated to Chinese and searched again), read categories and shops, or paste product links, and get each product's title, **price in CNY (plus HKD and TWD, or any currency you pick)**, promotion label, shop, shop score, category ids and images. Turn on the product page to add **seller type, credit level, shop age, the three shop scores, review positive rate and a review sample**.

**US$ 3.00 per 1,000 products. No monthly fee, no start fee. Error rows are free.**

### At a glance

- **Price per 1,000 products:** US$ 3.00, no run start fee
- **Product page (optional):** + US$ 3.00 per 1,000, only when you turn it on (product links always include it)
- **Inputs:** search terms in English, Chinese or any language, category ids, shop ids, product links or ids
- **English in, English out:** terms translated to Chinese when needed; `translateTitles` adds `titleEnglish`, no extra charge
- **Per search term:** up to about 60 products (Taobao's best sellers for the term plus its monthly top-rated list)
- **Prices:** CNY, HKD and TWD as Taobao shows them, plus an optional conversion to USD, EUR or any currency
- **Monitoring:** only new products and price change tracking between runs
- **Filters:** price range in CNY, free shipping only, Tmall only; a cap for the whole run (`maxTotalItems`)
- **Error rows:** free, with an `errorCode`

### What it fixes

- **Search in English.** `led strip`, `wireless earbuds` or `pet bed` have no Taobao page of their own; the Actor
  translates them (`灯带`, `无线耳机`, `宠物床`) and returns the products, with `searchedAs` in each row. Korean,
  Japanese, Spanish and other languages are translated before the search.
- **Titles you can read.** Turn on `translateTitles` and each product carries `titleEnglish` (and each review in the
  sample `textEnglish`), or any other language with `targetLanguage`.
- **Live data, every run,** read from Taobao at run time, never from a cache.
- **Many products in one run.** A product that was taken down gives a free `NOT_FOUND` row; the rest goes on.
- **Any product link works:** `item.taobao.com/item.htm?from=cart&id=...`, `?ft=t&id=...`, long Tmall links full
  of tracking parameters, `world.taobao.com/item/ID.htm`, a bare id, or the whole share text copied from the
  Taobao app with the link inside.
- **Results in the dataset,** in JSON, CSV or Excel, not hidden in a key-value store record.
- **Your limit is respected.** A `maxItems` pasted from another Taobao actor caps the whole run (and the charges),
  instead of this form's default of 40 per search.
- **Honest about what needs a login.** Variant (SKU) grids, coupon prices, dispatch promise, description images
  and more reviews are not on Taobao's public pages; the Actor says so instead of inventing values.

### Switching from another Taobao actor? Your existing input works

Paste the input you already use. These names and values are read as they are:

| You may already send | Read as |
|---|---|
| `keyword`, `keywords`, `query` | `searchTerms` |
| `items`, `itemUrls`, `itemId`, `product_url`, `productUrl`, `startUrls` | `productUrls` |
| `categoryIds`, `shopIds`, `shopId` | `categoryIds`, `shopIds` |
| `urlsFromFile` (one link per line, or a link to a .txt, .csv or Google Sheet) | sorted into products, shops, categories and searches |
| `mode`: `search`, `category`, `item`, `shop`; `operation`: `keywordSearch`, `productDetail`, `shopCatalog`, `productReviews` | only the list of that mode is read |
| `maxItems`, `maxResults` | `maxTotalItems` (cap for the whole run) |
| `minPrice`, `maxPrice`, `startPrice`, `endPrice` (CNY) | `minPrice`, `maxPrice` |
| `freeShippingOnly`, `tmallOnly` | same names |
| `scrapeDetails`, `enrichWithDetails`, `fetchReviews` | `includeDetails` (product page with the review sample) |
| `region` (`sg`, `my`, `th`, `au`, `jp`, `kr`, `ca`...) | `currency` (SGD, MYR, THB, AUD, JPY, KRW, CAD...) |

```json
{ "mode": "search", "keywords": ["手机壳"], "maxItems": 30, "region": "sg", "scrapeDetails": true }
```

```json
{ "items": ["https://item.taobao.com/item.htm?id=1010692564493", "https://detail.tmall.com/item.htm?id=971278517006"], "fetchReviews": true }
```

`sort`, `sortBy` and deep-scan options are accepted and ignored (public pages come in best-seller order).

### One real row

Product link `https://item.taobao.com/item.htm?id=1010692564493` (collected on 2026-10-08; review text shortened):

```json
{
  "type": "product",
  "itemId": "1010692564493",
  "url": "https://item.taobao.com/item.htm?id=1010692564493",
  "title": "新款老人机2026年...",
  "price": 185,
  "currency": "CNY",
  "shopId": "188555483",
  "shopName": "十三手机通讯",
  "shopDescriptionScore": 4.8,
  "categoryId": "1512",
  "imageUrl": "https://img.alicdn.com/imgextra/i1/2200733115816/O1CN012K4Bhv1spmdar9Ifq_!!2200733115816.jpg",
  "platform": "taobao",
  "location": "广东深圳",
  "categoryPath": ["手机行业导购条", "2999-3999元"],
  "seller": {
    "shopId": "188555483",
    "shopName": "十三手机通讯",
    "sellerId": "2200733115816",
    "sellerType": "individual",
    "creditLevel": 13,
    "totalItems": 16,
    "openedAt": "2019-03-04 21:59:56",
    "descriptionScore": 4.8,
    "serviceScore": 4.8,
    "logisticsScore": 4.9
  },
  "reviews": {
    "positiveRate": "99%",
    "neutralRate": "1%",
    "negativeRate": "0%",
    "positiveCountText": "2万+",
    "positiveCount": 20000,
    "negativeCount": 10,
    "sample": [{ "score": 5, "date": "2026.09.13 18:50", "text": "刚收到手机就来评价啦！...", "variant": "机身颜色:中国红【5G增强版】..." }]
  },
  "paymentMethods": ["蚂蚁花呗", "信用卡支付", "集分宝"],
  "detailsIncluded": true,
  "source": "https://item.taobao.com/item.htm?id=1010692564493"
}
```

A search row for `led strip` with `translateTitles` (2026-10-12) has `"searchedAs": "灯带"` and `"titleEnglish": "LED light strip 220v waterproof super bright self-adhesive..."`. Search rows have the full title, plus `priceHKD`, `priceTWD`, `promotionLabel`, `sellingPoints` and `position`; with `currency: "USD"` it also has `priceConverted` (54.90 CNY became 8.19 USD at the rate of 0.1492).

### What you can do with it

- **Product sourcing and dropshipping research:** what sells on Taobao for a keyword, at what price, from which shops.
- **Price comparison:** Taobao retail prices against your marketplace, in your currency.
- **Shop and seller screening:** individual or business seller, credit level, shop age and the three shop scores before you buy through an agent.
- **Price monitoring:** run on a schedule with "Only new products" and "Track price changes".

For factory and wholesale prices with quantity tiers and MOQ, see [1688 Scraper](https://apify.com/scrapewise/alibaba-1688-scraper) (for wholesale sourcing on 1688).

### Input

| Field | What it does |
|---|---|
| `searchTerms` | Terms in English, Chinese or any language (translated to Chinese when Taobao has no page for them), or a Taobao search link. Up to about 60 products each |
| `categoryIds` | Category ids or `world.taobao.com/category/ID.htm` links. Up to 20 products each |
| `shopIds` | Shop ids or links (`world.taobao.com/dianpu/ID.htm`, `shopID.taobao.com`). Up to 60 products each |
| `productUrls` | `item.taobao.com/item.htm?id=`, `detail.tmall.com/item.htm?id=`, `world.taobao.com/item/ID.htm` links or numeric ids; always with the product page |
| `maxItemsPerSearch` | Default 40, per search term, category or shop |
| `maxTotalItems` | Optional cap for the whole run, across every input |
| `minPrice`, `maxPrice` | Price range in CNY for searches, categories and shops; products outside are skipped and not charged |
| `freeShippingOnly` | Only products marked as free shipping |
| `tmallOnly` | Only Tmall products (turns on the product page, where Taobao says Tmall or Taobao) |
| `includeDetails` | Adds the summary product page to every product found; one extra request per product |
| `traditionalChinese` | Off (default): simplified Chinese, as sellers write it. On: traditional Chinese |
| `translateTitles` | Adds `titleEnglish` to every product and `textEnglish` to the review sample; no extra charge. Also read from `translate: true` or `language: "en"` |
| `targetLanguage` | Language of the translation: `en` (default), `es`, `pt`, `fr`, `de`, `ru`, `ko`, `ja`... Other than English, the fields are `titleTranslated` and `textTranslated` |
| `currency` | Optional extra currency (USD, EUR, GBP...) at the European Central Bank reference rate of the day |
| `onlyNew`, `trackPriceChanges` | Monitoring between runs (state kept in your account) |

```json
{ "searchTerms": ["phone case", "led strip", "wireless earbuds"], "maxItemsPerSearch": 60, "includeDetails": true, "translateTitles": true, "currency": "USD" }
```

**How English search works.** Taobao has a public search page for almost every Chinese term but only for common English ones. The Actor opens the page of your term as written and, when there is none, translates it to Chinese and searches again; `searchedAs` shows the term used.

### Output fields

From every search, category and shop: `itemId`, `url` (the Taobao or Tmall product link), `pageUrl`, `title`, `price` (CNY), `originalPrice` (when Taobao shows a higher price), `currency`, `priceHKD`, `priceTWD`, `promotionLabel`, `sellingPoints`, `freeShipping`, `shopId`, `shopName`, `shopDescriptionScore`, `categoryId`, `rootCategoryId`, `imageUrl`, `images`, `reviewTags` (some categories), `position` (rank in the list), `source`, `searchedAs` (searches only: the term that returned the product, translated to Chinese when needed), `scrapedAt`.

With the product page: `platform` (`taobao` or `tmall`), `location`, `categoryPath`, `gallery`, `pagePrice`, `pageOriginalPrice`, `hasPriceRange`, `seller` (`shopId`, `shopName`, `sellerId`, `sellerType` individual or business, `creditLevel`, `totalItems`, `newItems`, `openedAt`, `descriptionScore`, `serviceScore`, `logisticsScore`), `reviews` (`positiveRate`, `neutralRate`, `negativeRate`, `positiveCount`, `negativeCount`, `sample` with score, date, text and the variant bought), `paymentMethods`, `titleShort`, `detailsIncluded`.

With `translateTitles`: `titleEnglish` and `textEnglish` in the review sample (`titleTranslated`, `textTranslated` and `translationLanguage` for other languages; empty when the translation is unavailable). With `currency`: `priceConverted`, `originalPriceConverted`, `convertedCurrency`, `exchangeRate`, `exchangeRateDate`. With monitoring: `isNewProduct`, `firstSeenAt`, `previousPrice`, `priceChange`, `isPriceDrop`.

#### Error codes (never charged)

| errorCode | Meaning |
|---|---|
| `NO_RESULTS` | Taobao has nothing for this search (also after translating it to Chinese), or the category or shop does not exist |
| `NOT_FOUND` | The product does not exist or was taken down |
| `INVALID_INPUT` | A value the Actor does not understand |
| `UNSUPPORTED_MODE` | Buyer questions and answers: they need a Taobao login |
| `BLOCKED` | Taobao showed a verification page after every retry; run again |
| `NOT_REACHED`, `UNEXPECTED` | The run timeout arrived, or something unforeseen broke; only that input is lost |

### Pricing

| Event | Per 1,000 |
|---|---|
| Product delivered | US$ 3.00 |
| Product page added (optional; always on for product links) | US$ 3.00 |

1,000 search results cost US$ 3.00; with the product page, US$ 6.00. Duplicates, products held back by "Only new products" and error rows are free, and there is no Apify compute bill on top.

### Limitations

- **Summary product page, no SKU or variant grid.** The product page is Taobao's public summary page: it has no variant list, no per-variant price or stock, no attributes table and no description images. Its title can be shortened with "...", so the full title comes from search, category and shop rows.
- Search works for the terms Taobao has a public page for. Translation gets most English terms there, but a very long or unusual term may have no page even in Chinese: then a free `NO_RESULTS` row says which Chinese term was tried. Shorter, common terms work best.
- Titles are machine translated: good enough to read and filter, not a certified translation.
- Without login Taobao shows about 60 products per search term (its best sellers and its monthly top-rated list), 20 per category and 60 per shop. Deeper pages and Taobao's sort options need a logged-in account, so they are not available. For more products, use several related terms.
- Tmall product pages carry the review sample but not the positive rate or review counts; those come for Taobao shops.
- No sold count: Taobao hides it from visitors. `shopDescriptionScore` is the shop's "item as described" score, not a product rating.
- Prices are what Taobao shows to a visitor, before shipping and before coupons that need an account. `price` may differ slightly between the search row and the product page (`pagePrice`) when a promotion starts or ends.
- The Actor uses Apify's datacenter proxy and, when Taobao refuses it, a residential IP in Singapore or Hong Kong for that request. Requests are paced to be polite, so expect about 1 to 2 seconds per page.
- No personal data: sellers come as shops (name, numeric ids, scores). Reviewer names and photos are never collected; Taobao already masks them.

### FAQ

**Do I need a Taobao account?** No. Everything comes from Taobao's public pages, without login.

**Can I search in English?** Yes. A term without its own Taobao page is translated to Chinese and searched again; `searchedAs` shows the term used. Turn on `translateTitles` to read the titles in English.

**Does it include Tmall?** Yes. Tmall products appear in the same results; with the product page on, `platform` says `tmall` and `url` points to detail.tmall.com.

**How do I get variants and stock?** They are not on Taobao's public pages. For wholesale variants and MOQ, see the 1688 Scraper above.

### Changelog

- **2026-10-13, 0.1.4:** search Taobao in English: a term without its own Taobao page is translated to Chinese and
  searched again (`searchedAs` in each row); terms in Korean, Japanese, Spanish and other languages work too. New
  `translateTitles` adds `titleEnglish` to every product and `textEnglish` to the review sample, or another
  language with `targetLanguage`. No price change.
- **2026-10-09:** input from other Taobao actors works as it is; new `maxTotalItems`, `minPrice`, `maxPrice`,
  `freeShippingOnly` and `tmallOnly`; product links inside the app's share text.
- **2026-10-08, 0.1:** first version. Search terms in Chinese or English, categories, shops and product links; prices in CNY, HKD, TWD and an optional extra currency; optional summary product page with seller and review data; only new products and price tracking; free error rows.

# Actor input Schema

## `searchTerms` (type: `array`):

What to search on Taobao, one per line, in English, Chinese or any language. A term without its own Taobao page is translated to Chinese for you and searched again (led strip is searched as 灯带), and every row says the term used in searchedAs. A Taobao search link also works. Each term returns up to about 60 products: Taobao's best sellers for the term plus its monthly top-rated list.

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

Taobao category ids (50064014) or links like https://world.taobao.com/category/50064014.htm. Each returns up to 20 best-selling products of that category. The ids appear in every product row (categoryId, rootCategoryId).

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

Taobao or Tmall shop ids (188555483) or links like https://world.taobao.com/dianpu/188555483.htm or https://shop188555483.taobao.com. Each returns up to 60 products of that shop. The shop id appears in every product row (shopId).

## `productUrls` (type: `array`):

One per line: item.taobao.com/item.htm?id=... or detail.tmall.com/item.htm?id=... links, world.taobao.com/item/ID.htm links, or just the numeric id. Each one returns the summary product page (always charged as 'Product page added' too).

## `maxItemsPerSearch` (type: `integer`):

Upper limit for each search term, category and shop. Without login Taobao shows about 60 products per search term, 20 per category and 60 per shop, so a higher number stops there.

## `maxTotalItems` (type: `integer`):

Optional cap across all searches, categories, shops and product links together. 0 or empty = no cap.

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

Only products at or above this price in yuan, for searches, categories and shops. Products outside the range are skipped and not charged.

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

Only products at or below this price in yuan, for searches, categories and shops.

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

Only products Taobao marks as free shipping (searches, categories and shops).

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

Only Tmall products. Taobao says Tmall or Taobao only on the product page, so this turns on the product page (charged as such) for searches, categories and shops.

## `includeDetails` (type: `boolean`):

Opens the summary product page of each product found and adds: Taobao or Tmall, seller type (individual or business), credit level, shop opening date, total items, the 3 shop scores, review positive rate, review count and a short review sample, location, full image gallery, category path and payment methods. One extra request per product, charged as 'Product page added'. It is a summary page: no SKU or variant grid.

## `traditionalChinese` (type: `boolean`):

Off: titles and names in simplified Chinese, as sellers write them on Taobao. On: the same data in traditional Chinese (Hong Kong and Taiwan style).

## `translateTitles` (type: `boolean`):

Adds titleEnglish to every product (and textEnglish to each review in the sample) next to the original Chinese text. One translation request per page of 20 products, no extra charge. If the translation is unavailable the field is empty and the row is delivered as usual.

## `targetLanguage` (type: `string`):

Language for 'Translate titles': en (default), es, pt, fr, de, ru, ko, ja and others. Any language other than English goes to titleTranslated and textTranslated.

## `currency` (type: `string`):

A 3-letter code like USD, EUR, GBP or JPY. Adds priceConverted next to the CNY price, at the day's European Central Bank reference rate. Every row already carries the price in CNY, HKD and TWD as Taobao shows it. Empty = no conversion.

## `onlyNew` (type: `boolean`):

Remembers what each search, category and shop delivered in earlier runs (in a key-value store of your account named taobao-scraper-state) and delivers only products not seen before. Products held back are not charged. Good for a daily schedule.

## `trackPriceChanges` (type: `boolean`):

Adds previousPrice, priceChange, isPriceDrop and firstSeenAt from earlier runs. With 'Only new products' on, products already seen are delivered again only when their price changed.

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

Apify datacenter proxy is the default: a new IP is used whenever Taobao shows a verification page. If the datacenter keeps being refused, the Actor tries a residential IP in Singapore or Hong Kong for that request, at no extra cost to you.

## Actor input object example

```json
{
  "searchTerms": [
    "phone case",
    "led strip"
  ],
  "maxItemsPerSearch": 40,
  "freeShippingOnly": false,
  "tmallOnly": false,
  "includeDetails": false,
  "traditionalChinese": false,
  "translateTitles": false,
  "targetLanguage": "en",
  "onlyNew": false,
  "trackPriceChanges": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

# 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 = {
    "searchTerms": [
        "phone case",
        "led strip"
    ],
    "maxItemsPerSearch": 40
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/taobao-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 = {
    "searchTerms": [
        "phone case",
        "led strip",
    ],
    "maxItemsPerSearch": 40,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/taobao-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 '{
  "searchTerms": [
    "phone case",
    "led strip"
  ],
  "maxItemsPerSearch": 40
}' |
apify call scrapewise/taobao-scraper --silent --output-dataset

```

## MCP server setup

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