# Taobao Scraper | Products, Prices and Sellers (`silentflow/taobao-scraper`) Actor

Taobao scraper for Taobao and Tmall: get best-selling products by keyword or product link with price, original price, shop, seller credit level and service scores, shipping location, images and the latest buyer review. No login needed. Export JSON, CSV or Excel for sourcing and price tracking.

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

## Pricing

from $3.82 / 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.
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

**Turn Taobao and Tmall into a table: the best-selling products of any keyword, or any product you paste, with price, shop, seller scores, shipping location and the latest buyer review on every row.** 40 fully detailed products in under 30 seconds, no Taobao account needed.

### How it works

![How it works](https://api.apify.com/v2/key-value-stores/YXm81xySHg6uRkewS/records/taobao-scraper-how-it-works-v1.png)

1. **You type keywords or paste product addresses.** Chinese keywords match best (`无线耳机`, `机械键盘`), brand names work in English (`iphone`, `nike`). Product addresses from item.taobao.com, detail.tmall.com or a bare item id go in a second field.
2. **Each keyword returns its 20 best sellers.** The same products a shopper on Taobao sees first, with the product page of each one read for the seller, the location and the reviews.
3. **One row comes back per product.** 31 fields: identity, price and original price in yuan, shop and seller with credit level and three service scores, category, shipping location, images, the latest review with its rating and SKU, the keyword and the rank. Ready for a spreadsheet, a database or an AI pipeline.

### ✨ Why teams choose this over other Taobao scrapers

Copying prices from Taobao tabs into a spreadsheet? Running a scraper that asks for your account before it shows a single product? Getting seller data as `"300+"` strings you cannot sort?

- 🔓 **No account, no login, no API key.** Type a keyword and run. The scraper reads the public pages Taobao publishes to search engines, so there is nothing to log into and nothing to renew.
- 🏆 **Best sellers, not random hits.** A keyword returns the 20 products Taobao ranks first by sales, the ones that actually move. Two keywords give you a market snapshot in one run.
- 🏪 **Seller scores on every row.** Credit level, description, service and logistics scores, item count and the year the shop opened, plus whether the seller is a business (Tmall) or an individual (Taobao). Other scrapers make you run a second operation for this.
- 💬 **The latest review, with rating and SKU.** See what the last buyer said, which variant they bought and when, next to the price. Individual sellers also come with good and bad review counts and the positive rate.
- 🔢 **Numbers you can sort.** Prices are numbers in yuan with the currency in its own field, review counts are integers, dates are RFC 3339 in UTC, ids are stable strings. No `"1.5万+"` to clean.
- ⚡ **Fast and predictable.** 40 detailed products in 26 seconds, 45 listing rows in 8 seconds. One keyword costs one page, one product one page, so you know the size of a run before you start it.

### 🎯 What you can do with Taobao data

| Team | What they build |
|---|---|
| Sourcing | Compare the 20 best-selling suppliers of a product with their credit level, service scores and shipping province before contacting any of them |
| Pricing | Track the price and original price of competing listings every morning and alert on drops of more than 10 percent |
| Cross-border sellers | Spot which products a Chinese keyword sells most and at what price before listing them on Amazon, Shopee or Lazada |
| Market research | Map a category by shop type, location and price band across dozens of keywords in one run |
| Brand protection | Find who sells your brand on Taobao and Tmall, at what price, with which seller scores, and keep the list current |
| Purchasing agents | Give clients a live table of best sellers with images, prices and shop names instead of screenshots |
| Data and AI | Feed product rows with the latest review and SKU into an LLM to summarise what buyers praise or complain about |

### 📥 Input parameters

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | array | `["iphone", "无线耳机"]` | What to search, one keyword per line. Each keyword returns its 20 best-selling products. |
| `productUrls` | array | | Single products to read: a product address (`https://item.taobao.com/item.htm?id=1082579041881`, `https://detail.tmall.com/item.htm?id=...`) or a numeric item id. |
| `maxItems` | integer | `100` | How many rows to save for the whole run. Products read by address count too. |
| `includeDetails` | boolean | `true` | Read the product page of every product for the marketplace, seller scores, location, original price and latest review. Turn off for a faster listing. |
| `debugMode` | boolean | `false` | Adds detailed lines to the run log. |

Keywords and product addresses can be combined in one run. A product already returned by a keyword is not read twice.

### 📊 Output data

One row per product. A row found by keyword:

```json
{
  "id": "1082579041881",
  "url": "https://item.taobao.com/item.htm?id=1082579041881",
  "title": "Apple/苹果 iPhone 18 Pro Max",
  "marketplace": "tmall",
  "categoryId": "1512",
  "categoryPath": ["手机行业导购条", "2999-3999元"],
  "isFreeShipping": false,
  "shopId": "107922698",
  "shopName": "Apple Store 官方旗舰店",
  "shopUrl": "https://shop.m.taobao.com/shop/shop_index.htm?user_id=1917047079",
  "sellerId": "1917047079",
  "sellerType": "business",
  "sellerCreditLevel": 19,
  "sellerScoreDescription": 4.8,
  "sellerScoreService": 4.8,
  "sellerScoreLogistics": 4.8,
  "shopItemsCount": 402,
  "shopOpenedAt": "2013-12-10T08:40:27Z",
  "price": 10999,
  "originalPrice": 10999,
  "currency": "CNY",
  "reviewsGoodCount": null,
  "reviewsBadCount": null,
  "reviewsGoodPercent": null,
  "latestReview": {
    "text": "手感非常好，勃艮第酒红真的高级，成年的iphone就是不一样",
    "rating": 5,
    "sku": "机身颜色:勃艮第酒红色;存储容量:512GB",
    "publishedAt": "2026-09-17T11:09:00Z",
    "images": null
  },
  "location": "上海",
  "imageUrl": "https://img.alicdn.com/imgextra/i1/1917047079/O1CN0186xFSkr1QWD2b8G8_!!4611686018427384103-0-item_pic.jpg",
  "images": ["https://img.alicdn.com/imgextra/i1/1917047079/O1CN0186xFSkr1QWD2b8G8_!!4611686018427384103-0-item_pic.jpg"],
  "keyword": "iphone",
  "rank": 1,
  "scrapedAt": "2026-09-21T03:28:07Z"
}
```

A row read by product address, from an individual seller on Taobao:

```json
{
  "id": "782565808293",
  "url": "https://item.taobao.com/item.htm?id=782565808293",
  "title": "富士二手拍立得min...",
  "marketplace": "taobao",
  "categoryId": "50004195",
  "categoryPath": ["阿里B2C商城", "相机/摄像机", "胶卷相机", "一次成像(拍立得)"],
  "isFreeShipping": false,
  "shopId": "355542236",
  "shopName": "橙子摄影器材",
  "shopUrl": "https://shop.m.taobao.com/shop/shop_index.htm?user_id=2212016938924",
  "sellerId": "2212016938924",
  "sellerType": "individual",
  "sellerCreditLevel": 9,
  "sellerScoreDescription": 4.9,
  "sellerScoreService": 4.9,
  "sellerScoreLogistics": 4.9,
  "shopItemsCount": 3,
  "shopOpenedAt": "2023-03-19T15:27:45Z",
  "price": 279,
  "originalPrice": 279,
  "currency": "CNY",
  "reviewsGoodCount": 100,
  "reviewsBadCount": 0,
  "reviewsGoodPercent": 99,
  "latestReview": {
    "text": "相机很新，拍出来的效果也不错，客服态度很好，很喜欢",
    "rating": 5,
    "sku": "套餐类型:裸机+电池;颜色分类:Mini7S白色95新",
    "publishedAt": "2026-09-03T12:35:00Z",
    "images": null
  },
  "location": "重庆",
  "imageUrl": "https://img.alicdn.com/imgextra/i1/2212016938924/O1CN01lfwOUe2FnFR9MCsJG_!!2212016938924.jpg",
  "images": ["https://img.alicdn.com/imgextra/i1/2212016938924/O1CN01lfwOUe2FnFR9MCsJG_!!2212016938924.jpg"],
  "keyword": null,
  "rank": null,
  "scrapedAt": "2026-09-21T03:29:06Z"
}
```

Facts worth knowing before you build on the output:

- `id` and `url` are permanent. The product address opens the full product page on Taobao or Tmall.
- `title` is the full listing title for rows found by keyword. For rows read by address, Taobao's product page shortens the title to about ten characters (`富士二手拍立得min...`), and that short title is what the row carries.
- `price` is the current price in yuan; `originalPrice` is the price before promotion when the page shows one. A product with several variants shows the price of the default one.
- `reviewsGoodCount`, `reviewsBadCount` and `reviewsGoodPercent` are given by the pages of individual sellers (Taobao). Tmall product pages do not show them, so they are `null` there. Counts are lower bounds: Taobao writes `700+` and `1万+`, saved as `700` and `10000`.
- Image URLs point to Taobao's image CDN and stay valid for months.
- All dates are RFC 3339 in UTC. Taobao writes them in Beijing time; the conversion is done for you.
- A field the source does not give is `null`, never an empty string.

### 🗂️ Data fields

31 fields per product, plus 5 inside `latestReview`.

| Group | Fields |
|---|---|
| Identity | `id`, `url`, `title` |
| Content | `marketplace` (tmall or taobao), `categoryId`, `categoryPath`, `isFreeShipping` |
| Seller | `shopId`, `shopName`, `shopUrl`, `sellerId`, `sellerType` (business or individual), `sellerCreditLevel`, `sellerScoreDescription`, `sellerScoreService`, `sellerScoreLogistics`, `shopItemsCount`, `shopOpenedAt` |
| Measures | `price`, `originalPrice`, `currency`, `reviewsGoodCount`, `reviewsBadCount`, `reviewsGoodPercent` |
| Latest review | `latestReview.text`, `latestReview.rating` (1 to 5), `latestReview.sku`, `latestReview.publishedAt`, `latestReview.images` |
| Place | `location` (province or city the product ships from) |
| Media | `imageUrl`, `images` |
| Meta | `keyword`, `rank` (position in the keyword's best sellers, 1 to 20), `scrapedAt` |

With `includeDetails` off, the row keeps `id`, `url`, `title`, `categoryId`, `isFreeShipping`, `shopId`, `shopName`, `price`, `originalPrice`, `currency`, `imageUrl`, `images`, `keyword`, `rank` and `scrapedAt`; the other fields are `null`.

### 🚀 Examples

#### Get the best-selling wireless earbuds

```json
{
  "keywords": ["无线耳机"]
}
```

#### Compare iPhone listings across three generations

```json
{
  "keywords": ["iphone 15", "iphone 16", "iphone 16 pro"],
  "maxItems": 60
}
```

#### Read the products you already track, by address

```json
{
  "productUrls": [
    "https://item.taobao.com/item.htm?id=1082579041881",
    "https://detail.tmall.com/item.htm?id=782565808293",
    "902530047445"
  ]
}
```

#### Build a fast price list without product pages

```json
{
  "keywords": ["机械键盘", "客制化键盘", "键帽"],
  "includeDetails": false,
  "maxItems": 60
}
```

#### Map a whole category in one run

```json
{
  "keywords": ["女装", "连衣裙", "外套", "牛仔裤", "毛衣", "半身裙", "卫衣", "羽绒服"],
  "maxItems": 160,
  "includeDetails": true
}
```

#### Mix a keyword and a watch list

```json
{
  "keywords": ["手工皂"],
  "productUrls": ["https://www.taobao.com/list/item/1082579041881.htm"],
  "maxItems": 30
}
```

### 🤖 Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

```
You have access to the Taobao Scraper on Apify: silentflow/taobao-scraper

Input schema:
- keywords (array of strings): search keywords, each returns its 20 best-selling products on Taobao and Tmall. Chinese keywords match best.
- productUrls (array of strings): product addresses (item.taobao.com, detail.tmall.com, www.taobao.com/list/item/{id}.htm) or numeric item ids
- maxItems (integer, default 100): cap on rows for the whole run
- includeDetails (boolean, default true): read each product page for seller scores, location, original price and latest review
- debugMode (boolean, default false)

Output per product (31 fields, null when unknown):
- id (string), url (string), title (string)
- marketplace ("tmall" | "taobao"), categoryId (string), categoryPath (string[]), isFreeShipping (boolean)
- shopId, shopName, shopUrl, sellerId (strings), sellerType ("business" | "individual"), sellerCreditLevel (integer), sellerScoreDescription, sellerScoreService, sellerScoreLogistics (numbers), shopItemsCount (integer), shopOpenedAt (RFC 3339)
- price, originalPrice (numbers in CNY), currency ("CNY"), reviewsGoodCount, reviewsBadCount (integers), reviewsGoodPercent (number)
- latestReview ({text, rating, sku, publishedAt, images} or null)
- location (string), imageUrl (string), images (string[])
- keyword (string or null), rank (integer or null), scrapedAt (RFC 3339)

No login or account needed. Use apify-client for Python or JavaScript.
```

### 💻 Integrations

#### Build a supplier shortlist ranked by seller scores

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("silentflow/taobao-scraper").call(run_input={
    "keywords": ["蓝牙耳机", "无线耳机"],
    "maxItems": 40,
})
rows = client.dataset(run["defaultDatasetId"]).list_items().items

shortlist = [
    r for r in rows
    if r["sellerType"] == "business"
    and (r["sellerScoreService"] or 0) >= 4.8
    and (r["shopItemsCount"] or 0) >= 100
]
shortlist.sort(key=lambda r: r["price"])
for r in shortlist:
    print(f'{r["price"]:>8} CNY  {r["shopName"]:<24} {r["location"]:<8} {r["title"][:40]}')
```

#### Alert on price drops for a watch list

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const watchList = {
  '1082579041881': 10999,
  '782565808293': 279,
};

const run = await client.actor('silentflow/taobao-scraper').call({
  productUrls: Object.keys(watchList),
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

for (const item of items) {
  const previous = watchList[item.id];
  if (item.price < previous * 0.9) {
    console.log(`Price drop: ${item.title} ${previous} -> ${item.price} CNY at ${item.shopName}`);
  }
}
```

#### Export the best sellers of a category to CSV

```python
import csv
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("silentflow/taobao-scraper").call(run_input={
    "keywords": ["机械键盘", "客制化键盘", "键帽"],
    "includeDetails": False,
    "maxItems": 60,
})
rows = client.dataset(run["defaultDatasetId"]).list_items().items

with open("taobao-keyboards.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["keyword", "rank", "title", "price", "shop", "url"])
    for r in rows:
        writer.writerow([r["keyword"], r["rank"], r["title"], r["price"], r["shopName"], r["url"]])
```

### 📈 Performance

| Run | Rows | Time |
|---|---|---|
| Two keywords with product pages (the default input) | 40 | 26 s |
| Three keywords, listing only | 45 | 8 s |
| Three product addresses | 3 | 11 s |
| Eight keywords with product pages | 160 | about 2 min |

A keyword costs one page read; a product page costs one more, read four at a time. Rows are saved keyword by keyword, so a run you stop early keeps what it has read.

### 💾 Data export

Results are available on the run's dataset page as JSON, CSV, Excel, XML, RSS and HTML table. The **Products** view shows title, price, shop, location, marketplace, keyword and URL; the **Sellers** view shows the seller columns.

Pull them programmatically:

```
https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN
```

### 💡 Tips for best results

1. **Search in Chinese.** `无线耳机` returns earbuds; `wireless earbuds` returns what Taobao matches to those Latin words, which is often less relevant. Brand names (`iphone`, `nike`, `sony`) work as they are.
2. **Use several keywords to widen a market.** Each keyword gives its own 20 best sellers. `iphone 15`, `iphone 16` and `iphone 16 pro` return three different top-20 lists, not the same one three times.
3. **Turn `includeDetails` off for pure price lists.** The listing alone gives title, price, shop and image in a fifth of the time. Switch it on when you need the seller scores, the location or the latest review.
4. **Filter on `sellerType` and the scores.** `business` is a Tmall flagship or brand store; `individual` is a Taobao C2C shop. A service score of 4.8 or above with hundreds of items is a reliable supplier signal.
5. **Watch products by address for daily tracking.** Paste the `url` values of the rows you care about into `productUrls` and schedule the run. Each address costs one page and returns the current price, original price and latest review.

### ❓ FAQ

**What does this scraper extract?**
Products from Taobao and Tmall: title, price and original price in yuan, shop and seller with credit level and service scores, category, shipping location, images and the latest buyer review. Rows come from keyword searches or from product addresses you paste.

**Do I need a Taobao account?**
No. The scraper reads the public product pages Taobao publishes to search engines. No login, no account, no API key.

**How many products does a keyword return?**
20, the best sellers Taobao ranks first for that keyword. Taobao shows this public listing on one page only; use several keywords to cover a market, and product addresses to read specific items beyond the top 20.

**Can I sort or filter by price?**
Not on Taobao's side: the public listing is fixed to the best-selling order. Filter the rows after the run on `price`, `sellerType`, `location` or the scores; every one of them is a sortable number or a plain string.

**Why is the title short on rows read by address?**
Taobao's product page cuts the title to about ten characters (`富士二手拍立得min...`) and shows the full one only in the keyword listing. A product found by keyword keeps its full title; a product read by address carries the short one.

**Why are the review counts null on some rows?**
Product pages of individual sellers (Taobao) show good and bad review counts and the positive rate. Product pages of business sellers (Tmall) show only the latest review. The latest review is on both.

**How fresh is the data?**
Live. Every run reads Taobao at that moment; nothing is cached. The `scrapedAt` field on each row says exactly when.

**Can I scrape several keywords and addresses in one run?**
Yes. Keywords are read first, then addresses. A product that appears twice is saved once, and `maxItems` caps the whole run.

**What is the difference between Taobao and Tmall?**
Both belong to Alibaba and share the same search. Tmall hosts brand and business stores (`marketplace: "tmall"`, `sellerType: "business"`); Taobao hosts individual and small sellers (`marketplace: "taobao"`, `sellerType: "individual"`). The scraper returns both and tells you which is which.

**Are image and product URLs permanent?**
Product URLs are permanent. Image URLs point to Taobao's image CDN and stay valid for months. Shop URLs open the seller's mobile storefront.

**Does it read variants, stock or the description?**
No. The public page shows the default variant's price, the seller, the location and the latest review, and that is what the row carries. Variant tables and stock are not part of the public page.

**What happens when a product address is wrong?**
The product is skipped with a note in the log and the run continues. A run that finds nothing says why on its status: product not found, invalid input or no product matched.

### ⚖️ Legal

This Actor extracts publicly available data from Taobao and Tmall. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with Taobao's terms of service and applicable data protection laws (GDPR, CCPA and PIPL where relevant). The output can contain personal data (shop names of individual sellers, review text); handle it accordingly. The data returned is informational; verify prices and seller information before relying on them for purchasing decisions.

### 🔗 Related scrapers

- [1688 Wholesale Scraper](https://apify.com/silentflow/1688-scraper): wholesale prices and suppliers from 1688, Alibaba's domestic B2B marketplace.
- [RedNote Scraper](https://apify.com/silentflow/rednote-search-scraper): trending posts and categories from RedNote (Xiaohongshu).
- [Douyin Scraper](https://apify.com/silentflow/douyin-scraper): videos and profiles from Douyin, China's TikTok.
- [Weibo Scraper](https://apify.com/silentflow/weibo-scraper): the posts of any public Weibo profile.

### 📬 Support

Need something this scraper does not do yet? We ship features fast.

- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing details live on the Monetization tab of the actor page

Response time: usually under 24 hours.

Check out our other scrapers: [silentflow on Apify](https://apify.com/silentflow)

# Actor input Schema

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

What to search on Taobao, one keyword per line. Chinese keywords match best (<code>无线耳机</code>, <code>机械键盘</code>), brand names work in English (<code>iphone</code>, <code>nike</code>). Each keyword returns its 20 best-selling products on Taobao and Tmall, the same ones a shopper sees first.

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

Single products to read, one per line: a product address (<code>https://item.taobao.com/item.htm?id=1082579041881</code>, <code>https://detail.tmall.com/item.htm?id=...</code>) or a numeric item id (<code>1082579041881</code>). Each product becomes one row with its price, shop, seller scores, location and latest review. The product page shortens the title to about ten characters. Leave empty when you only search keywords.

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

How many rows to save for the whole run. A keyword gives at most 20 products, so <code>100</code> covers five keywords in full. Products read by address count too.

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

On: every product's page is read to add the marketplace (Tmall or Taobao), the seller's id, credit level and three service scores, the shop's item count and opening date, the shipping location, the original price and the latest buyer review. About one second per product. Off: a faster listing with title, price, shop name, image and category only.

## `debugMode` (type: `boolean`):

Adds detailed lines to the run log. Leave it off for normal runs.

## Actor input object example

```json
{
  "keywords": [
    "iphone",
    "无线耳机"
  ],
  "maxItems": 100,
  "includeDetails": true,
  "debugMode": false
}
```

# Actor output Schema

## `products` (type: `string`):

Every product with id, url, title, marketplace, category, price, originalPrice, shop, seller scores, location, images, the latest review, the keyword and the rank it was found at.

## `sellers` (type: `string`):

The seller columns of each row: shop name, seller type, credit level, the three service scores, item count, opening date and shop URL.

# 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": [
        "iphone",
        "无线耳机"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/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 = { "keywords": [
        "iphone",
        "无线耳机",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("silentflow/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 '{
  "keywords": [
    "iphone",
    "无线耳机"
  ]
}' |
apify call silentflow/taobao-scraper --silent --output-dataset

```

## MCP server setup

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