# Taobao & Tmall Scraper 淘宝 天猫 \[Only $4] SKUs, Reviews, Sales (`memo23/taobao-scraper`) Actor

\[Only $4 per 1000 products] Taobao 淘宝 and Tmall 天猫 products, no login: search in English or Chinese, sort by sales 销量 or price, Tmall only, every SKU with price and stock, buyer reviews 评价, shop scores and ship-from city. Paste links or item ids too.

- **URL**: https://apify.com/memo23/taobao-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce, AI, Agents
- **Features:** Limited permissions
- **Stats:** 3,994 total users, 951 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 products

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

## Taobao & Tmall Scraper — SKU Prices, Stock, Reviews, Sellers · No Login

**Turn Taobao and Tmall product links, item ids or keywords into clean rows: CNY price and promo price, every SKU with its own price and stock, the newest buyer reviews, seller and shop scores, shop age, review count, what buyers mention most, ship-from city, category and images.**

Paste hundreds of product URLs in one run, or search by keyword. No Taobao account and no API key needed.

### 中文说明

**淘宝、天猫商品数据采集，无需登录、无需 Cookie、无需浏览器。** 可批量粘贴商品链接或商品 ID，也可按关键词或类目采集：

- 价格：现价、原价（人民币），以及港币、新台币价格和优惠标签
- SKU：每个颜色、尺码等规格的单独价格、库存和图片（开启 `includeVariants`；2026年11月25日起每个商品另收 $0.007）
- 店铺：卖家 ID、天猫或淘宝店、信用等级、描述/服务/物流评分、开店时间、在售商品数
- 评价：评价总数、好评率、买家高频关键词（如「质量很好」及提及次数）、最新评价；开启 `includeReviews` 可获取最新 20 条评价明细
- 其他：发货城市、是否包邮、类目路径、商品图片
- 关键词搜索：中英文关键词（英文会自动翻译成中文），默认每个关键词返回前 20 个商品；付费账户可把 `maxProductsPerKeyword` 设到 500，按价格区间和排序继续搜索并去重。可按销量或价格排序，可只看天猫店铺
- 店铺：粘贴店铺链接（shop<店铺ID>.taobao.com）或卖家 ID（`shopUrls`），每个店铺返回最多 20 个在售商品，附卖家 ID、店铺链接、在售商品数和店铺评分

支持的链接：item.taobao.com、detail.tmall.com、detail.tmall.hk、m.intl.taobao.com、world.taobao.com，或纯数字商品 ID。暂不支持 e.tb.cn / m.tb.cn 分享短链和店铺页。

输入示例：

```json
{
    "startUrls": ["https://detail.tmall.com/item.htm?id=666640816810", "730344766230"],
    "searchQueries": ["蓝牙耳机"],
    "includeVariants": true,
    "maxItems": 50
}
```

主要输出字段：`itemId`、`url`、`platform`（taobao / tmall）、`title`、`price`、`originalPrice`、`categoryPath`、`images`、`location`、`freeShipping`、`shop`（`shopName`、`sellerType`、`creditLevel`、`ratings`）、`reviews`（`reviewCount`、`positiveRate`、`highlights`、`latestReview`）、`variants`（`skuId`、`name`、`price`、`stock`）。

价格：按结果计费，每 1,000 条结果 $4（商品行和评价行每行 $0.004），每次运行启动费 $0.005。SKU 数据包含在商品价格中，不额外收费；被价格筛选排除的商品不收费。

### Why Use This Scraper?

- **Batch input.** Paste any number of product URLs or item ids in one run. Each one becomes one row.
- **Every link format.** item.taobao.com, detail.tmall.com, detail.tmall.hk, m.intl.taobao.com, world.taobao.com, the Taobao app's detail pages, or a bare item id.
- **Seller due diligence in the row.** Seller id, store type (Tmall or Taobao), credit level, shop scores for description, service and logistics, shop open date and catalogue size.
- **Review signal without scraping reviews.** Review count, positive rate, the phrases buyers mention most with their counts (e.g. "质量很好", 73 mentions), and the latest review with the variant bought.
- **Variant prices and stock.** Turn on `includeVariants` and every product gets its full SKU list: each colour, size or storage option with its own price in CNY, stock and image. From 25 November 2026 each product that gets its variants adds a Product variants charge of $0.007.
- **Buyer reviews as rows.** Turn on `includeReviews` for up to the 20 newest reviews per product: rating, text, the variant bought, date and helpful count.
- **Keyword discovery.** Search a keyword in Chinese or English and get Taobao's top 20 products for it, with a rank and HKD/TWD prices. English keywords are translated to Chinese first (`lipstick` → `口红`).
- **Deep keyword search.** Set **Products per keyword** up to 500 and a paying run searches the keyword again across price bands and sort orders, keeping only new products (蓝牙耳机: 84 products from 5 searches).
- **Shop catalogues.** Paste shop links or seller ids and get up to 20 of each shop's products with the seller id, shop link, catalogue size and shop scores.
- **Sort and Tmall only.** `searchSort` returns the top 10 best-selling (销量优先) or highest-priced products for a keyword, with sales such as `1万+` and stock; `tmallOnly` keeps them to Tmall (天猫) stores.
- **Honest runs.** Removed items, keywords Taobao has no page for, and filtered products are named in the run's status message. Rows excluded by your filters are never billed.

### Overview

The actor reads Taobao's public product and search pages, the same pages search engines index, and returns one row per product. It is built for dropshippers and agents checking a supplier before ordering, resellers tracking prices, brands watching their listings, and analysts sampling a category.

Each row is a single product with its price in CNY, seller block (`shop`), reviews summary (`reviews`), category path, images and how it was found (`source`, `sourceQuery`, `rank`). Keyword rows and item rows share the same schema.

Two options add what Taobao's public pages leave out. `includeVariants` adds the SKU list with per-variant price and stock, description images and the full title. `includeReviews` adds the newest buyer reviews as their own rows (`type: review`), right after their product. Product rows carry `type: product`.

With `includeVariants` on, an item Taobao has no public page for is still returned when the variant data has it, with title, price, shop name and images but no seller scores or reviews summary.

### Supported Inputs

#### Product URLs and item ids

| Input | Example |
|---|---|
| Taobao product page | `https://item.taobao.com/item.htm?id=730344766230` |
| Tmall product page | `https://detail.tmall.com/item.htm?id=666640816810` |
| Tmall Hong Kong | `https://detail.tmall.hk/hk/item.htm?id=666640816810` |
| Taobao international / app pages | `https://m.intl.taobao.com/detail/detail.html?id=730344766230` |
| Taobao public item page | `https://www.taobao.com/list/item/730344766230.htm` or `https://world.taobao.com/item/730344766230.htm` |
| Bare item id | `730344766230` |

Copy-pasteable `startUrls`:

```json
{
    "startUrls": [
        "https://item.taobao.com/item.htm?id=730344766230",
        "https://detail.tmall.com/item.htm?id=666640816810",
        "1006162029430"
    ]
}
```

#### Keyword and category mode

- **Search keywords**: `蓝牙耳机`, `连衣裙`, `phone case`. Each keyword returns the top 20 products on Taobao's public page for it, or up to 500 with **Products per keyword** on a paying run.
- **Shop links**: `https://shop467290190.taobao.com`, or the seller's numeric user id in **Shop links**. Each shop returns up to 20 of its products. Needs a paid Apify plan.
- **Category ids**: the number in `world.taobao.com/category/<id>.htm`. Each returns the top 20 products in that category.
- A Taobao search URL (`s.taobao.com/search?q=…`) or a keyword page URL (`world.taobao.com/product/<keyword>.htm`) pasted into Start URLs is read as a keyword.

#### Unsupported inputs

- **e.tb.cn / m.tb.cn share links.** They only open from mainland China. Open the link once and paste the product URL instead.
- **Shop pages** (`shop123.taobao.com`). Not supported yet.
- **Keywords Taobao has no public page for.** Taobao publishes keyword pages for common product terms only. The run log names any keyword that has none.
- **More than 20 products per category, or per keyword on the free plan.** Taobao's public pages show the top 20 and ignore paging. On a paying plan, **Products per keyword** goes deeper for keywords.
- **More than 20 products per shop.** The shop lookup answers up to 20.

### Use Cases

| Who | What they do with it |
|---|---|
| Dropshippers and sourcing agents | Check a seller's credit level, shop age and scores before ordering |
| Resellers and price trackers | Re-run a list of item ids on a schedule and watch price and promo price |
| Brands | Find listings using their name and see who sells them, from where, at what price |
| Market researchers | Sample the top products for a keyword or category with rank and price |
| Review and sentiment analysts | Collect what buyers mention most across many products |
| Agencies | Batch-check client product lists in CSV |

### How It Works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/taobao/how-it-works.png" width="820" alt="How the Taobao & Tmall Scraper works">
</p>

1. You give product URLs, item ids, keywords or category ids, in any mix.
2. Every product link is reduced to its item id, so any Taobao or Tmall URL format works.
3. Each item is read from Taobao's public product page; keywords and categories from Taobao's public list pages (top 20 each).
4. With **Add product-page detail** on, each keyword result is completed from its product page: seller, shop scores, reviews summary, ship-from city and the Tmall flag.
5. Your price filter drops products before they reach the dataset, and each product is written once as one row.

### Input Configuration

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array of strings | — | Taobao/Tmall product URLs, bare item ids, or keyword/category page URLs. |
| `searchQueries` | array of strings | — | Keywords in Chinese or English. Top 20 products each, or more with `maxProductsPerKeyword`. |
| `maxProductsPerKeyword` | integer | `20` | 1-500. Above 20, paying runs search again across price bands and sort orders and keep only new products. The extra searches are not billed; products are, per row. |
| `searchSort` | `relevance` | `sales` | `price_desc` | `relevance` | `sales` or `price_desc` return the top 10 in that order, with `soldText` and `stock`. |
| `tmallOnly` | boolean | `false` | Tmall stores only; top 10 per keyword. |
| `translateKeywords` | boolean | `true` | English queries are searched in Chinese; rows keep yours in `sourceQueryOriginal`. |
| `categoryIds` | array of strings | — | Taobao category ids. Top 20 products each. |
| `shopUrls` | array of strings | — | Shop links or seller user ids. Up to 20 products per shop, with seller id, shop link, catalogue size and scores. Paid plans. |
| `scrapeDetails` | boolean | `true` | Complete keyword and category results from each product page (seller, shop scores, reviews, location, Tmall flag). One extra request per product. |
| `includeVariants` | boolean | `false` | Add every SKU with its own price, stock and image, the lowest and highest variant price, description images and the full title. From 25 November 2026 each product that gets them adds a Product variants charge ($0.007); about 20 s more per product, run in parallel. |
| `includeReviews` | boolean | `false` | Add the newest buyer reviews as rows with `type: review`. Each review row is billed like a product row. |
| `maxReviewsPerProduct` | integer | `20` | Reviews per product, 0–20. |
| `maxItems` | integer | `100` | Stop after this many products. Free-plan runs are capped at 20. |
| `priceMin` | integer | — | Keep products priced at or above this, in CNY. |
| `priceMax` | integer | — | Keep products priced at or below this, in CNY. |
| `maxConcurrency` | integer | `8` | Pages fetched at once (1–20). |
| `proxy` | object | actor pool | Leave as is. Paying runs use the actor's US residential pool. Free-plan runs use Apify Residential, billed to your account. |

**On the free plan,** SKU prices (`includeVariants`), buyer reviews, sales sort, Tmall-only search and the search for keywords with no public page come from a daily allowance shared by all free-plan runs, up to 10 lookups per run. Once it is used up, the run reads the public Taobao pages only; it resets at 00:00 UTC. Paid Apify plans have no such limit.

**Check a list of products:**

```json
{
    "startUrls": ["https://item.taobao.com/item.htm?id=730344766230", "666640816810"],
    "maxItems": 500
}
```

**Top products for several keywords, with seller detail:**

```json
{
    "searchQueries": ["蓝牙耳机", "连衣裙", "茶叶"],
    "scrapeDetails": true,
    "maxItems": 60
}
```

**Variant prices, stock and the newest reviews for a product list:**

```json
{
    "startUrls": ["666640816810", "https://item.taobao.com/item.htm?id=765833709683"],
    "includeVariants": true,
    "includeReviews": true,
    "maxReviewsPerProduct": 10
}
```

**Cheap keyword sampling, list fields only, under ¥100:**

```json
{
    "searchQueries": ["phone case", "手机壳"],
    "scrapeDetails": false,
    "priceMax": 100
}
```

### Output Overview

One row per product. The top level has identity and price (`itemId`, `url`, `platform`, `title`, `price`, `originalPrice`, `currency`), placement (`location`, `categoryId`, `categoryPath`, `images`) and provenance (`source`, `sourceQuery`, `rank`, `detailScraped`, `scrapedAt`). Two nested objects carry the seller (`shop`) and the reviews summary (`reviews`).

Which fields are filled depends on how the product was found:

- **Keyword or category row with detail** (the default): everything, including the full title and HKD/TWD prices.
- **Keyword or category row without detail**: title, prices, image, shop name, category and rank. `shop` has no seller id or scores, `reviews` is null.
- **Item URL or id**: everything except HKD/TWD prices and rank. The title is Taobao's shortened one (`titleTruncated: true`).

### Output Samples

#### Keyword start (`茶叶`), with product-page detail, trimmed

```json
{
    "itemId": "1048304935728",
    "url": "https://detail.tmall.com/item.htm?id=1048304935728",
    "platform": "tmall",
    "title": "【直播專享】LeTea樂品樂茶冷熱雙泡茉莉花茶葉果茶包波點桂花杯",
    "titleTruncated": false,
    "price": 59.9,
    "originalPrice": 59.9,
    "currency": "CNY",
    "priceHKD": 70.87,
    "priceTWD": 287.65,
    "discountLabel": "優惠價",
    "imageUrl": "https://img.alicdn.com/imgextra/i1/735261224/O1CN01rcppBniTLFL1chua_!!4611686018427384360-2-item_pic.png",
    "location": "安徽芜湖",
    "categoryPath": ["茶冲调", "花茶/果茶/加工茶", "组合型花茶"],
    "shop": {
        "shopId": "67939216",
        "shopName": "乐品乐茶旗舰店",
        "sellerId": "735261224",
        "sellerType": "B",
        "creditLevel": 17,
        "openedAt": "2011-07-19 20:15:53",
        "itemCount": 125,
        "ratings": [
            { "name": "物流服务", "score": 4.8, "type": "post" },
            { "name": "服务", "score": 4.8, "type": "serv" },
            { "name": "商品描述", "score": 4.8, "type": "desc" }
        ],
        "descriptionMatchScore": 4.87
    },
    "reviews": {
        "reviewCount": "800+",
        "highlights": [
            { "tag": "口感味道好", "mentions": 73 },
            { "tag": "客服态度很好", "mentions": 55 },
            { "tag": "有赠品", "mentions": 16 }
        ],
        "latestReview": {
            "rating": 5,
            "content": "包装挺精致的。 很干净没杂质。 冲泡挺方便的。",
            "date": "2026.09.29 17:05",
            "variant": "种类:【送波点杯+吸管】缤纷果茶+玫瑰红茶（共15包）"
        }
    },
    "source": "keyword",
    "sourceQuery": "茶叶",
    "rank": 2,
    "detailScraped": true
}
```

#### Item URL start (Tmall), trimmed

```json
{
    "itemId": "666640816810",
    "url": "https://detail.tmall.com/item.htm?id=666640816810",
    "platform": "tmall",
    "title": "白色吊带背心女内搭2...",
    "titleTruncated": true,
    "seoKeyword": "小吊带白色背心女",
    "price": 98,
    "location": "广东广州",
    "shop": { "shopName": "歌西梵旗舰店", "sellerType": "B", "creditLevel": 16, "openedAt": "2018-08-14 03:36:32" },
    "reviews": {
        "reviewCount": "85",
        "highlights": [{ "tag": "质量很好", "mentions": 5 }, { "tag": "尺码偏小", "mentions": 2 }]
    },
    "source": "item",
    "detailScraped": true
}
```

### Key Output Fields

#### Product

`itemId`, `url`, `platform` (`taobao` / `tmall`), `title`, `titleTruncated`, `seoKeyword`, `categoryId`, `rootCategoryId`, `categoryPath`, `imageUrl`, `images`, `sellingPoints`

#### Price

`price` (current, CNY), `originalPrice` (list, CNY), `hasPriceRange`, `priceHKD`, `priceTWD`, `discountLabel`, `currency`

#### Logistics

`location` (ship-from city), `freeShipping`, `areaLimit`, `paymentMethods`

#### Seller (`shop`)

`shopId`, `shopName`, `sellerId`, `sellerType` (B = Tmall store, C = Taobao store), `creditLevel`, `openedAt`, `itemCount`, `newItemCount`, `shopUrl`, `ratings[]`, `descriptionMatchScore`

#### Reviews (`reviews`)

`reviewCount`, `positiveRate`, `neutralRate`, `negativeRate`, `highlights[]` (`tag`, `mentions`), `latestReview` (`rating`, `content`, `date`, `variant`)

#### Variants (with `includeVariants`)

`variants[]` (`skuId`, `name`, `price`, `stock`, `imageUrl`), `variantCount`, `variantPriceMin`, `variantPriceMax`, `fullTitle`, `descriptionImages`, `minOrderQuantity`, `sevenDayReturn`

#### Review rows (with `includeReviews`)

`type: review`, `itemId`, `url`, `reviewId`, `rating`, `ratingScale`, `text`, `variant`, `postedAt`, `authorName` (masked by Taobao), `authorAvatarUrl`, `usefulCount`, `source`, `sourceQuery`, `scrapedAt`. The dataset's Reviews view shows them as a table.

#### Provenance

`type` (`product` / `review`), `source` (`item` / `keyword` / `category` / `shop`), `sourceQuery` (the keyword, category id or shop id), `rank`, `detailScraped`, `scrapedAt`

### Coming from another Taobao scraper?

| What you need | This actor |
|---|---|
| Hundreds of products per keyword | Up to 500 per keyword on a paying plan, deduplicated across price bands and sort orders |
| Every SKU with its own price and stock | `includeVariants`, $0.007 more per product from 25 November 2026 |
| Shop or seller lists | `shopUrls`: up to 20 products per shop, with the seller id, shop link, catalogue size and shop scores |
| Paste links you already have | item.taobao.com, detail.tmall.com, world.taobao.com, mobile and international links, or bare item ids, hundreds per run |
| Buyer reviews | Up to the 20 newest per product as their own rows, plus review count, positive rate and what buyers mention most |
| Seller due diligence | Credit level, description/service/logistics scores, shop age and catalogue size in the row |
| English keywords | Translated to Chinese before the search |
| One price per row, no start-up minimum | $0.004 per product, $0.005 per run start |

Field names differ from other Taobao actors: the id is `itemId`, the seller block is `shop`, the reviews summary is `reviews`, variants are `variants`.

### FAQ

#### Which Taobao and Tmall URLs work?

Any product URL with an item id: item.taobao.com, detail.tmall.com, detail.tmall.hk, m.intl.taobao.com, the app detail pages and world.taobao.com, plus bare ids. Share links (e.g. e.tb.cn) do not, because they only open from mainland China.

#### Why is the title cut short on some rows?

Taobao's public product page shortens titles to about ten characters. Rows found by keyword or category carry the full title from the list page. `titleTruncated: true` marks the shortened ones.

#### Do you return SKUs, variant prices or stock?

Yes, with `includeVariants` on: every SKU with its own price in CNY, stock and image. `price` stays the price the product page shows. Variant prices are each SKU's own listed price, so they can sit above `price` when the shop runs a discount; `variantPriceMin` and `variantPriceMax` give their range. Variant names are as the listing gives them, usually Chinese.

#### How many reviews can I get per product?

Up to the 20 newest, as rows with `type: review`; newer listings often return only a few. Older reviews are not available without a login. Each review row is billed like a product row; set `maxReviewsPerProduct` lower to take fewer.

#### Why only 20 products per keyword?

Taobao's public keyword and category pages show the top 20 and ignore paging. On a paying plan, set **Products per keyword** above 20: the keyword is searched again in price bands (near the first page's prices first) and in price order, and only new products are kept, about 12-20 per extra search. It stops when your number is reached or four searches in a row bring fewer than 3 new products. Taobao's own total is in the run log.

#### Why did my keyword return nothing?

Taobao publishes keyword pages only for common product terms. The run's status message names any keyword without a page. Try a shorter or more common term, in Chinese or English: for some categories only one of them has a page (`beer` has one, `啤酒` does not).

#### Why did some item ids return nothing?

The actor reads Taobao's public product pages, and Taobao publishes one only for the items it lists for search engines. Items outside that list, items in categories Taobao does not publish at all (alcohol is one), and removed items all answer with Taobao's "page not found". The run log names each one and its status message gives the count. They are not added to the dataset and not billed.

#### Why are positive/negative rates empty on Tmall rows?

Tmall product pages do not show them. The review count, buyer highlights and latest review are still there.

#### Do I need a Taobao account or cookies?

No. Every page the actor reads is public.

#### Is the price in CNY?

Yes, `price` and `originalPrice` are in CNY as Taobao shows them to a logged-out visitor. Keyword rows also carry Taobao's own HKD and TWD prices.

#### Which proxy should I use?

Leave the default; it works out of the box. Free-plan runs use Apify Residential, billed to your account. If you supply your own, US residential proxies work best.

### Support

Found a bug or need a field? Open an issue on the actor's [Issues tab](https://apify.com/memo23/taobao-scraper/issues).

### Additional Services

Need the data on a schedule, enriched, or pushed to your warehouse or webhook? Reach out through the Issues tab. Custom fields, monitoring runs and integrations are available.

### Explore More Scrapers

- [**1688 Wholesale Scraper**](https://apify.com/memo23/1688-wholesale-scraper) — 1688.com offers with tier pricing, MOQ and supplier data
- [**1688 Image Search**](https://apify.com/memo23/1688-image-search-scraper) — find the 1688 factories and wholesalers selling a product, from its photo
- [**1688 Product Details Scraper**](https://apify.com/memo23/1688-product-details-scraper) — every SKU with stock, specs, shipping and the supplier profile for 1688 product links
- [**1688 Supplier Scraper**](https://apify.com/memo23/1688-supplier-scraper) — 1688 factories and wholesalers with their company profiles
- [**AliExpress Scraper**](https://apify.com/memo23/aliexpress-scraper) — AliExpress products, prices and discounts
- [**Alibaba Scraper**](https://apify.com/memo23/alibaba-scraper) — Alibaba.com products, MOQ and supplier data
- [**Shopee Scraper**](https://apify.com/memo23/shopee-scraper) — Shopee search, products and shops across 11 markets
- [**Lazada Scraper**](https://apify.com/memo23/lazada-scraper) — Lazada products, prices, ratings and sellers

Full list at [apify.com/memo23](https://apify.com/memo23).

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/taobao-scraper`).

**Purpose:** Taobao and Tmall product rows (price, seller, shop scores, reviews summary) from product URLs, item ids or keywords, without a login.

**Minimal input:**

```json
{ "startUrls": ["https://item.taobao.com/item.htm?id=730344766230"], "searchQueries": ["蓝牙耳机"], "maxItems": 10 }
```

**Output:** one dataset row per product — itemId, url, platform, title, titleTruncated, price, originalPrice, currency (CNY), priceHKD, priceTWD, location, categoryPath, imageUrl, shop {shopName, sellerId, sellerType, creditLevel, openedAt, ratings}, reviews {reviewCount, positiveRate, highlights, latestReview}, source, sourceQuery, rank, detailScraped.

**Behaviors an agent should know:**

- Always set `maxItems`. Each keyword or category yields at most 20 products; item ids have no limit.
- Rows from item URLs have shortened titles (`titleTruncated: true`); keyword rows have full titles.
- No SKU matrix, variant stock, full gallery or description.
- Billed per product row. Products removed by `priceMin`/`priceMax`, missing items and keywords without a page are not billed.
- e.tb.cn share links are skipped; pass the product URL or item id.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Alibaba Group Holding Limited, Taobao (China) Software Co., Ltd., Zhejiang Tmall Technology Co., Ltd. or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available product and listing pages — no authenticated endpoints, paid features, or content behind the Taobao or Tmall login wall. Users are responsible for ensuring their use complies with Taobao's and Tmall's Terms of Service, applicable data-protection law (GDPR, CCPA, PIPL, etc.), and any contractual obligations of their own organization.

***

### SEO Keywords

taobao scraper, tmall scraper, 淘宝, 天猫, 淘宝爬虫, 天猫爬虫, 淘宝数据采集, 淘宝商品采集, 淘宝价格监控, 淘宝评价采集, 淘宝 SKU, 天猫店铺评分, scrape taobao, taobao API, taobao product data, tmall product scraper, Apify taobao, taobao price tracker, taobao seller check, chinese ecommerce scraper, china marketplace data, dropshipping supplier research, taobao reviews summary, product price monitoring, taobao keyword search, tmall shop ratings, sourcing agent tool, cross-border ecommerce data, taobao item id lookup, chinese product research, taobao shop scraper, 淘宝店铺采集, 淘宝搜索采集, 淘宝关键词搜索

# Actor input Schema

## `startUrls` (type: `array`):

Taobao or Tmall product URLs (item.taobao.com/item.htm?id=…, detail.tmall.com/item.htm?id=…, m.intl.taobao.com, world.taobao.com/item/…), bare numeric item ids, or Taobao keyword and category page URLs. One row per product. e.tb.cn share links only open from mainland China, so paste the full product URL instead. Duplicates are removed before anything is fetched.

## `searchQueries` (type: `array`):

Keywords in Chinese or English (手机壳, phone case). Each keyword returns the top 20 products on Taobao's public page for it, with a `rank` field. Taobao publishes these pages for common product terms only: a keyword it has no page for returns nothing and the run log says so. Use several related keywords to cover more products.

## `maxProductsPerKeyword` (type: `integer`):

How many products each keyword can bring, 1-500. Default 20, the keyword's first page. Above 20, a paying run searches the keyword again across price bands and sort orders and keeps only new products, about 12-20 more per extra search, until the number is reached or the searches stop finding new ones. Products are billed per row as usual; the extra searches are not billed. Free-plan runs stay at the first page.

## `searchSort` (type: `string`):

Relevance (综合) returns Taobao's top 20 for each keyword. Best-selling (销量) or highest price first return the top 10 in that order. On the free plan this comes from a daily allowance shared by all free runs, up to 10 lookups per run; once it is used up, the run reads the public pages only.

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

Keep keyword results to Tmall stores. Returns the top 10 Tmall products for each keyword. On the free plan this comes from a daily allowance shared by all free runs, up to 10 lookups per run; once it is used up, the run reads the public pages only.

## `translateKeywords` (type: `boolean`):

Search queries written in English (lipstick, phone case) are machine-translated to the Chinese words Taobao matches best. Rows keep the Chinese keyword in sourceQuery and yours in sourceQueryOriginal. Chinese queries are searched as typed.

## `shopUrls` (type: `array`):

Taobao shop links (`https://shop467290190.taobao.com`) or a seller's numeric user id. Each shop returns up to 20 of its products with prices, the seller id, the shop link and its catalogue size, billed per product like any other row. Needs a paid Apify plan. Shop links pasted into Product URLs work too.

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

Taobao category ids (the number in world.taobao.com/category/<id>.htm). Each returns the top 20 products in that category.

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

For products found by keyword or category, also read each product's page to add seller id, shop credit level, shop scores, shop age, review count and positive rate, what buyers mention most, the latest review, ship-from location and whether it is a Tmall store. One extra request per product. Product URLs and item ids are always read from the product page.

## `includeVariants` (type: `boolean`):

Add `variants` to each product: every SKU (colour, size, storage …) with its own price in CNY, stock and image, plus `variantCount`, the lowest and highest variant price, the full untruncated title, description images, minimum order quantity and the seven-day return flag. Products Taobao has no public page for are still returned from this data, with title, price, shop name and images. From 25 November 2026 each product that gets them adds a Product variants charge of $0.007. Adds about 20 seconds per product, run in parallel. On the free plan this comes from a daily allowance shared by all free runs, up to 10 lookups per run; once it is used up, the run reads the public pages only.

## `includeReviews` (type: `boolean`):

After each product, add its newest buyer reviews as rows with `type: review`: rating, text, the variant bought, date, masked buyer name and helpful count. Each review row is billed like a product row. On the free plan this comes from a daily allowance shared by all free runs, up to 10 lookups per run; once it is used up, the run reads the public pages only.

## `maxReviewsPerProduct` (type: `integer`):

How many of the newest reviews to add per product, at most 20: the newest 20 are what can be read without a login. Used only with "Add buyer reviews".

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

Stop after this many products in total. Free-plan runs are capped at 20.

## `priceMin` (type: `integer`):

Keep only products priced at or above this, in yuan. Products with no price are kept.

## `priceMax` (type: `integer`):

Keep only products priced at or below this, in yuan.

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

How many pages to fetch at once.

## `proxy` (type: `object`):

Leave as is; it works out of the box. A free-plan run uses Apify Residential, billed to your account. If you supply your own, US residential proxies work best.

## Actor input object example

```json
{
  "startUrls": [
    "https://item.taobao.com/item.htm?id=730344766230",
    "666640816810"
  ],
  "searchQueries": [
    "蓝牙耳机"
  ],
  "maxProductsPerKeyword": 20,
  "searchSort": "relevance",
  "tmallOnly": false,
  "translateKeywords": true,
  "scrapeDetails": true,
  "includeVariants": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "maxItems": 100,
  "maxConcurrency": 8,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Dataset of Taobao and Tmall products with CNY price and promo price, seller and shop scores, reviews summary, ship-from location, category and images.

# 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 = {
    "startUrls": [
        "https://item.taobao.com/item.htm?id=730344766230",
        "666640816810"
    ],
    "searchQueries": [
        "蓝牙耳机"
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = {
    "startUrls": [
        "https://item.taobao.com/item.htm?id=730344766230",
        "666640816810",
    ],
    "searchQueries": ["蓝牙耳机"],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/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 '{
  "startUrls": [
    "https://item.taobao.com/item.htm?id=730344766230",
    "666640816810"
  ],
  "searchQueries": [
    "蓝牙耳机"
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call memo23/taobao-scraper --silent --output-dataset

```

## MCP server setup

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