# Taobao & Tmall Scraper 淘宝 \[Only $4] Prices, Sellers · No Login (`memo23/taobao-scraper`) Actor

\[Only $4 per 1000 products] Check any Taobao or Tmall seller before you order: paste product links or item ids and get price in CNY, store type, credit level, shop scores and age, review count, what buyers mention most and ship-from city. Keyword search too. No login.

- **URL**: https://apify.com/memo23/taobao-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce
- **Stats:** 19 total users, 15 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 — Prices, Sellers, Reviews · No Login

**Turn Taobao and Tmall product links, item ids or keywords into clean rows: CNY price and promo price, 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, no cookies, no browser.

### 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.
- **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.
- **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.

What it does **not** return yet: the SKU matrix (per-variant price and stock), the full image gallery and the product description. Those live on Taobao's logged-in pages. A full-SKU mode is planned.

### 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.
- **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 keyword or category.** Taobao's public pages show the top 20 and ignore paging. Use several related keywords to cover more.

### 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. |
| `categoryIds` | array of strings | — | Taobao category ids. Top 20 products each. |
| `scrapeDetails` | boolean | `true` | Complete keyword and category results from each product page (seller, shop scores, reviews, location, Tmall flag). One extra request per product. |
| `maxItems` | integer | `100` | Stop after this many products. Free-plan runs are capped at 100. |
| `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. Taobao serves these pages reliably only to US residential IPs. |

**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
}
```

**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`)

#### Provenance

`source` (`item` / `keyword` / `category`), `sourceQuery`, `rank`, `detailScraped`, `scrapedAt`

### 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?

Not yet. Per-variant price and stock are only on Taobao's logged-in pages. `price` is the current price (the lowest one when `hasPriceRange` is true). A full-SKU mode is planned.

#### Why only 20 products per keyword?

Taobao's public keyword and category pages show the top 20 and ignore paging. Taobao's own total is in the run log. Use several related keywords, or category ids, to cover more products.

#### 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. Taobao serves these pages reliably only to US residential IPs, and the actor's own pool is set up for that.

### 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
- [**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, 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

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

## `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.

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

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

## `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 to use the actor's own residential pool, which Taobao serves reliably. Taobao turns most non-US and all datacenter IPs away, so your own proxy should be US residential.

## Actor input object example

```json
{
  "startUrls": [
    "https://item.taobao.com/item.htm?id=730344766230",
    "666640816810"
  ],
  "searchQueries": [
    "蓝牙耳机"
  ],
  "scrapeDetails": true,
  "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/0IaQgUDVxRvsyqybc/openapi.json
