Taobao Category Products Scraper API avatar

Taobao Category Products Scraper API

Pricing

Pay per event

Go to Apify Store
Taobao Category Products Scraper API

Taobao Category Products Scraper API

Browse Taobao by category: title, price in CNY, image, product URL, seller and shop IDs. 20 categories, 3,133 products. No account, no Chinese IP, no browser. $1.95 per 1,000 - the lowest price of any Taobao scraper on Apify with an active user base. Category browsing, not keyword search.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Browse Taobao by category and get product rows back as JSON: product ID, title, price in CNY, image, product URL, SKU ID, Taobao's own leaf category ID, seller ID and shop ID.

No Taobao account, no cookies, no captcha solving, no browser, no Chinese IP, no proxy of your own. Pick a category, get rows.

Read the "What this is not" section before you buy. This is a category browser, not a keyword search, and the catalogue it can reach is finite. Being straight about that up front is cheaper for both of us than a refund.

Price

$1.95 per 1,000 products, plus $0.002 to start a run.

That is the lowest price of any Taobao scraper on Apify with an active user base. The four Taobao scrapers that have one charge $5.99, $9.99 and $12.00 per 1,000 on their entry tier, dropping to $2.00-$7.99 per 1,000 only on their top volume tiers. One actor does list lower, at $1.50 per 1,000, but it has two users in its lifetime and one of them in the last 30 days. Their start fees are $0.009 to $0.12 against $0.002 here.

You are charged per product row returned. Sample rows and diagnostic rows are never charged, and a run that returns nothing costs only the start fee.

ProductsCost
100$0.197
500$0.977
1,000$1.952
3,133 (every product all 20 categories hold)$6.111

What a row looks like

Two real rows, copied out of cloud runs on 2026-08-09:

{
"productId": "14694804727",
"title": "整流二极管快恢复4007等各种型号",
"price": 2.42,
"currency": "CNY",
"productUrl": "https://item.taobao.com/item.htm?id=14694804727",
"imageUrl": "https://img.alicdn.com/bao/uploaded/i2/738263294/O1CN01XWMLM81aChmOpZuYi_!!4611686018427379966-0-item_pic.jpg",
"skuId": "3807680996276",
"leafCategoryId": "50018814",
"sellerId": "738263294",
"shopId": "68071911",
"shopUrl": "https://shop68071911.taobao.com",
"promoBadgeImageUrl": "https://img.alicdn.com/imgextra/i1/O1CN01nRidmm1UAVxdcYMzF_!!6000000002477-2-tps-104-56.png",
"categoryId": "999999207",
"category": "industrial",
"categoryNameZh": "工业用品",
"categoryNameEn": "Industrial supplies",
"page": 0,
"position": 1,
"scrapedAt": "2026-08-09T17:18:04.277Z"
}
{
"productId": "717203446746",
"title": "蝶翼长尾斑马鱼小型热带鱼观赏鱼",
"price": 14.9,
"currency": "CNY",
"productUrl": "https://item.taobao.com/item.htm?id=717203446746",
"imageUrl": "https://img.alicdn.com/bao/uploaded/i1/1017431750/O1CN01AnRKiz1OnYBJl8yMU_!!1017431750.jpg",
"skuId": "5872156425275",
"leafCategoryId": "50003251",
"sellerId": "1017431750",
"shopId": "73105644",
"shopUrl": "https://shop73105644.taobao.com",
"promoBadgeImageUrl": null,
"categoryId": "999999114",
"category": "pets",
"categoryNameZh": "宠物生活",
"categoryNameEn": "Pet supplies",
"page": 0,
"position": 4,
"scrapedAt": "2026-08-09T17:20:35.472Z"
}

Field coverage, measured

Counted over a real cloud run that drained all 20 categories to exhaustion — 3,133 products, 3,133 unique product ids, zero duplicates — on 2026-08-09. These are the actual percentages, not a wish list.

FieldFilledWhat it is
productId100%Taobao's numeric item id (nid)
title100%Product title, as listed (Chinese)
price100%Current price in yuan. Range seen: ¥0.01 to ¥99,999, median ¥56
currency100%Always CNY
productUrl100%https://item.taobao.com/item.htm?id=...
imageUrl100%Main product image on img.alicdn.com
skuId100%The specific SKU the feed surfaced
leafCategoryId100%Taobao's own leaf category id — 1,248 distinct across 3,133 rows
sellerId100%Seller account id
shopId100%Shop id — 2,462 distinct shops across 3,133 rows
shopUrl100%https://shop<shopId>.taobao.com
categoryId / category / categoryNameEn100%Which category the row came from
categoryNameZh95.9%Chinese category name. Empty only for the two unlisted feeds, which Taobao gives no name
promoBadgeImageUrl67.3%Campaign badge image when the listing carries one (4 distinct badges seen)
page / position100%Where in the feed it appeared
scrapedAt100%ISO timestamp

Fields you will not find here, and why. Taobao's category feed carries a monthSale field and it is an empty string on 100% of 2,897 rows measured, so this actor does not ship it and does not promise sales volume. The price object carries an originalPrice next to the promotionPrice, and the two are identical on 100% of those rows, so shipping a "was / now" pair would be fiction — there is one honest price. isPreSale is false on every row, icons is empty on every row, and matchType and source have a single constant value each. None of them are shipped.

What this is not

  • Not a keyword search. There is no search box in this feed and no keyword parameter. You cannot ask it for "red shoes". Taobao's actual keyword search API, mtop.taobao.wsearch.appsearch, is behind an authentication wall: it answers RGV587_ERROR::SM and redirects to login.taobao.com/...?from=sm at every version, on every host, under every referer, from a home address, from two datacenter addresses, from a rented static-ISP address and from a mainland-China address. That is a login demand, not a captcha and not a geo-block, so no proxy buys past it.
  • Not a product-detail scraper. No descriptions, no attributes, no review text, no stock, no shipping. mtop.taobao.detail.getdetail, getdesc and rate.detaillist sit behind the same wall.
  • Not unlimited. Each category is a finite, deterministic pool that runs out. A single run that drained all 20 to exhaustion returned 3,133 unique products and stopped: industrial 982, building & renovation 291, home 230, pets 217, smart appliances 190, down to digital services at 12. That is the whole reachable catalogue. Re-running does not conjure more, and neither does changing IP: four different exit addresses returned the identical product ids for the same category, four times out of four.
  • Not a live inventory feed. It is Taobao's own recommendation surface for each category. The same category returns the same products call after call, but Taobao decides what is in it.

What it is good for

  • A clean, priced, categorised sample of live Taobao inventory for price benchmarking or market research, without an account or a scraping stack.
  • Seller and shop discovery: a full drain carried 2,462 distinct shops, each with a working shop<id>.taobao.com URL.
  • Category mapping: 1,248 distinct Taobao leaf category ids tied to real products.
  • Training or demo data for anything that needs real Chinese e-commerce titles, prices and images.

Input

OptionWhat it does
categoriesWhich of the 20 categories to browse. Pick as many as you like — they are drained four at a time in parallel.
maxItemsHard cap on products returned across every category selected (1-5,000).
maxPagesPerCategoryHow deep to page inside one category before moving on (1-200, default 60). Each page returns 7-25 products; the deepest category needs 64.
proxyConfigurationOptional. The actor brings its own exit addresses; supply your own only if you want to.
{
"categories": ["industrial", "pets", "home"],
"maxItems": 500,
"maxPagesPerCategory": 60
}

The 20 categories, with the size of each pool as measured on a full drain:

CategoryChineseProducts
industrial工业用品~982
building-materials家装建材~291
home家享家居~230
pets宠物生活~217
smart-appliances智能家电~190
commercial-agri商业农业~152
daily-goods日用百货~148
sports-outdoor运动户外~125
fashion服饰时尚~116
jewellery珠宝饰品~109
stationery文教香薰~94
food-fresh食品生鲜~91
unlisted-109~79
toys玩具潮玩~60
flowers-garden鲜花园艺~59
auto汽车用品~56
unlisted-206~51
3c-digital3C数码~37
appliances家用电器~34
digital-life数字生活~12

The category list is a closed set on purpose. Taobao answers SUCCESS with an empty result for any id outside its own list — an unknown category looks exactly like an exhausted one — so a free-text field would fail silently instead of telling you.

Speed and limits, measured

  • Throughput: 1,000 products in 31 seconds on Apify (default 1 GB), four categories in parallel. A 25-product run finishes in 7 seconds. Draining all 20 categories to exhaustion — 3,133 products — took 16 minutes.
  • Rate limit: none found. 443 consecutive requests on a single datacenter exit address at 92 requests per minute returned 442 successes and zero challenges. No captcha, no session death, no rotation needed.
  • Latency: 0.3-0.6 seconds per request while the pagination cursor is short. It degrades to 5-10 seconds per request on a deep drain, because the cursor is the list of every product id already seen and it passes 10,000 characters. A full 982-product drain of one category took about 6 minutes on a slow exit and under a minute on a fast one.
  • Depth: each category exhausts deterministically. Taobao returns SUCCESS with an empty result when there is nothing left, and the actor stops there rather than paging into nothing.
  • Rotation: the actor rotates exit addresses when one is refused, but rotation adds zero rows. The pool is deterministic per category, so this actor deliberately does not burn proxy money chasing volume that does not exist.
  • Proxy: plain Apify datacenter addresses. Residential is never requested — measured PROXY_RESIDENTIAL_TRANSFER_GBYTES: 0 on every run.

How it works, and how it can break

The actor talks to Taobao's mobile JSON gateway (h5api.m.taobao.com) using the same md5 request signature Taobao's own web client uses, with a token minted from a _m_h5_tk cookie. The category feed itself is addressed by an application id lifted from a versioned Alibaba CDN bundle (@ali/pegasus-project-tbhome-2024). Alibaba can retire that id without notice. If they do, the gateway will start answering something other than SUCCESS.

When that happens this actor fails loudly: it writes an uncharged TAOBAO_API_CHANGED row carrying the exact ret string Taobao returned, and the run is marked failed. It will not quietly return zero rows and bill you for them. Every failure path — blocked exits, an empty category, an unknown category — writes an uncharged diagnostic row that says what happened.

FAQ

Can I search Taobao for a keyword with this? No. Taobao's keyword search API requires a logged-in, real-name-verified Taobao account; without one it returns RGV587_ERROR::SM and a login redirect. This actor browses categories instead. If you need keyword search, the actors that offer it are reselling a paid third-party API.

Do I need a Taobao account, cookies, or a Chinese IP? No, none of the three. No browser either. The category feed answers plain HTTP requests from ordinary datacenter addresses.

How many products can I get in total? 3,133 unique products across all 20 categories, measured on a run that drained every one of them to exhaustion. industrial alone holds 982. Each category has a fixed pool that runs out; more requests and more IP addresses do not enlarge it.

Why is there no sales volume / units sold field? Because the feed's monthSale field is empty on 100% of the rows measured. Any Taobao scraper showing you sales volume from this surface would be inventing it.

Why is there no "original price" vs "sale price"? Because Taobao returns both and they are identical on 100% of 2,897 rows measured. One price is the honest answer.

Do the same products come back if I run it twice? Yes, largely. The pool per category is deterministic — that is a feature if you are tracking prices over time, and a limitation if you expected an endless firehose.

What do I pay if the run fails or finds nothing? Only the $0.002 start fee. Diagnostic and sample rows are never charged.

Can I get product descriptions, reviews or stock levels? Not from this actor. Those endpoints are behind the same login wall as keyword search.

Output fields

productId, title, price, currency, productUrl, imageUrl, skuId, leafCategoryId, sellerId, shopId, shopUrl, promoBadgeImageUrl, categoryId, category, categoryNameZh, categoryNameEn, page, position, scrapedAt.