Taobao Category Products Scraper API
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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.
| Products | Cost |
|---|---|
| 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.
| Field | Filled | What it is |
|---|---|---|
productId | 100% | Taobao's numeric item id (nid) |
title | 100% | Product title, as listed (Chinese) |
price | 100% | Current price in yuan. Range seen: ¥0.01 to ¥99,999, median ¥56 |
currency | 100% | Always CNY |
productUrl | 100% | https://item.taobao.com/item.htm?id=... |
imageUrl | 100% | Main product image on img.alicdn.com |
skuId | 100% | The specific SKU the feed surfaced |
leafCategoryId | 100% | Taobao's own leaf category id — 1,248 distinct across 3,133 rows |
sellerId | 100% | Seller account id |
shopId | 100% | Shop id — 2,462 distinct shops across 3,133 rows |
shopUrl | 100% | https://shop<shopId>.taobao.com |
categoryId / category / categoryNameEn | 100% | Which category the row came from |
categoryNameZh | 95.9% | Chinese category name. Empty only for the two unlisted feeds, which Taobao gives no name |
promoBadgeImageUrl | 67.3% | Campaign badge image when the listing carries one (4 distinct badges seen) |
page / position | 100% | Where in the feed it appeared |
scrapedAt | 100% | 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 answersRGV587_ERROR::SMand redirects tologin.taobao.com/...?from=smat 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,getdescandrate.detaillistsit 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.comURL. - 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
| Option | What it does |
|---|---|
categories | Which of the 20 categories to browse. Pick as many as you like — they are drained four at a time in parallel. |
maxItems | Hard cap on products returned across every category selected (1-5,000). |
maxPagesPerCategory | How deep to page inside one category before moving on (1-200, default 60). Each page returns 7-25 products; the deepest category needs 64. |
proxyConfiguration | Optional. 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:
| Category | Chinese | Products |
|---|---|---|
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-digital | 3C数码 | ~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
SUCCESSwith 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: 0on 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.