Taobao Product Feed Scraper
Pricing
from $1.95 / 1,000 products
Taobao Product Feed Scraper
Scrape products from Taobao's own recommendation feed. Rows have the product id, title, price in CNY and image. You also get the product URL, seller id and shop id. This is a feed, not a keyword search. No account, no Chinese IP, no browser. $1.95 per 1,000 products, flat on every plan.
Pricing
from $1.95 / 1,000 products
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
Taobao Product Feed Scraper: products out of 淘宝's own recommendation feed
This reads the recommendation feed Taobao serves on its homepage and writes one row per product: product id, Chinese title, price in CNY, image, product link, SKU id, seller id, shop id and both category ids. No account, no cookies, nothing to install.
The thing to understand before you buy: you do not choose what comes back. There is no keyword box, because the feed has no keyword parameter. It reshuffles on every call, so asking for more products just means a longer walk through it, and two runs an hour apart return different products for no reason you control. In practice the feed stops producing ids it has not already served at somewhere around 1,500 distinct products in a run.
| Input | A number of products, and optionally a price window |
| Output | One row per product |
| Ceiling | 5,000 per run, though the feed dries up around 1,500 distinct products |
| Account needed | None, and nothing to install |
| Price | $1.95 per 1,000 products, flat on every plan |
🎁 What Taobao Product Feed Scraper does
You say how many products you want and it walks the feed until it has that many distinct ones, or until the feed stops offering new ones. Each call returns 20 cards. Measured over 120 calls, about 13 of those are products the run has not seen before, and that rate falls to roughly 8 by the hundredth call, which is what makes 1,500 the practical ceiling rather than the 5,000 in the schema.
The two price filters run here, after Taobao has answered, because the feed takes no price parameter. A product outside your window is dropped and never billed. The trade is more calls for the same number of rows, so a narrow window makes for a longer run.
For a sense of what the window should be: across 1,021 distinct products measured in two 600-product runs on 2026-08-09, prices ran from 0.01 to 99,999 CNY with a median of 19.9. Ninety-five per cent of rows were under 200 CNY and ninety-nine per cent under 1,000 CNY. Set a minimum of 500 and most of the feed is going to be thrown away.
📥 What you give it
{"maxItems": 200,"minPriceCny": 50,"maxPriceCny": 500}
| Field | Default | What it is |
|---|---|---|
maxItems | box starts at 200 | How many distinct products to collect, 1 to 5,000. Leave it empty and the run writes one sample row instead of scraping. |
minPriceCny | none | Optional, under Filters. Drop products cheaper than this many yuan. |
maxPriceCny | none | Optional. Drop products dearer than this many yuan. |
maxRequests | none | Optional, under Advanced. A hard ceiling on how many feed calls the run makes, 1 to 2,000. Leave it empty and the run sizes that budget from maxItems. |
proxyConfiguration | leave it alone | Optional. Only if you want the run to go out through a particular network of your own. |
maxItems deliberately carries no schema default, so an empty API call cannot start a charged crawl
by accident.
📤 What you get back
A real row from a recent run, with the two tracking links trimmed:
{"productId": "1083190704002","title": "【拍一发二】秋季新款长袖带真口袋POLO衫柔软舒适休闲上衣866","price": 99,"currency": "CNY","productUrl": "https://item.taobao.com/item.htm?id=1083190704002","imageUrl": "https://img.alicdn.com/bao/uploaded/i3/2211453221901/O1CN01RWcsVW5DOKL24uCu_!!...","skuId": "6299191318051","sellerId": "2211453221901","shopId": "243072742","categoryId": "50010402","rootCategoryId": "30","promotionBadgeImageUrl": null,"similarItemsUrl": "https://www.taobao.com/market/lu/findgoods_router.php?id=1083190704002&scm=1007...","trackedUrl": "https://item.taobao.com/item.htm?id=1083190704002&scm=1007...","feedPage": 1,"feedPosition": 1,"scrapedAt": "2026-09-20T19:50:04.478Z"}
| Field | What it is |
|---|---|
productId | Taobao's own product id, and the key to dedupe on across runs. |
title | The listing title as the seller wrote it, in Chinese. Nothing is translated. |
price | The price the feed carries, as a number. Always CNY. |
productUrl | The clean link. Use this one for anything you store or share. |
trackedUrl | Taobao's original click link with its attribution parameters left on. |
similarItemsUrl | Taobao's "find similar" link for that product. |
skuId | The specific variant the feed is offering. Present on about 82% of rows. |
categoryId, rootCategoryId | The deepest category and the top-level one it sits under. |
promotionBadgeImageUrl | The promo badge image. Filled on roughly a third of rows, null on the rest, as in the example. |
feedPage, feedPosition | Where the product sat in the feed when it was read. |
Field names here are not the same as the category scraper's. This one uses categoryId and
promotionBadgeImageUrl where that one uses leafCategoryId and promoBadgeImageUrl. Worth
knowing if you load both into the same table.
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| A product | It has a productId | yes |
| The sample row | _sample: true | no |
| A diagnostic | It carries an errorCode | no |
There is no charged field on these rows. Product rows are the ones with a productId.
| Code | What it means |
|---|---|
NO_RESULTS | The run finished without a single product matching your price window. Widen it. |
BLOCKED | Taobao refused the feed. The row carries productsReturnedBeforeBlock, so you can see how far it got. |
FEED_UNAVAILABLE | Taobao answered in a way that says the feed is not serving this request. |
RUN_FAILED | The run stopped on an error before it finished. Anything already delivered stays in the dataset. |
▶️ How to run it
- Open Taobao Product Feed Scraper and click Try for free.
- Set How many products to return. Start around 50 to see what the rows look like.
- If you want a price band, open Filters and set one or both of the yuan limits. Check the figures above first so you do not filter out most of the feed.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$1.95 per 1,000 products. Flat on every Apify plan, with no volume tiers.
One billed row per distinct product. A product the feed offers twice is dropped the second time, a product outside your price window is dropped before it reaches the dataset, and neither is billed. The sample row and diagnostic rows are not billed either.
💡 What people use it for
- Getting a broad, unfiltered slice of what Taobao is currently promoting, rather than a slice shaped by a search term.
- Building a price distribution for cheap consumer goods in CNY, which
priceandcurrencygive you without any cleaning. - Collecting seller and shop ids at volume, then researching those shops separately.
- Feeding Chinese titles into a translation or classification step of your own.
- Sampling the feed on a schedule to watch what Taobao's recommendations drift toward.
🚧 What it does not do
- No keyword, no category, no control. You cannot ask for a product type. If you need to choose, this is the wrong tool.
- No product detail. No description, no specs, no extra images, no reviews, no sales volume, no original list price. Those live on the product page, which this does not open.
- It dries up. Around 1,500 distinct products per run, after which the feed mostly re-offers what you already have.
- Price filters cost calls, not rows. A narrow window means a longer run for the same number of results, though you only pay for what survives.
skuIdand the promo badge are not on every row, about 82% and a third respectively.- Titles stay in Chinese. Nothing is translated.
- A big run can come back short. Taobao rate-limits hard, and a refusal becomes an uncharged diagnostic row. Only delivered product rows are billed.
🧭 Which Taobao scraper do you need?
| If you want | Use |
|---|---|
| Whatever Taobao is recommending right now | This one |
| Products from a category you choose | Taobao Category Products Scraper |
| The Chinese words shoppers type | Taobao Keyword Suggestions Scraper |
| Wholesale listings and prices on 1688 | 1688 Wholesale Scraper |
| Export suppliers and MOQ on Alibaba.com | Alibaba.com Scraper |
❓ Questions people ask
Can I search for a product? No. The feed takes no keyword. Pick the category scraper above if you want to choose what you get.
Why do two runs return different products? Because the feed reshuffles on every call. That is Taobao's behaviour, not a setting here.
Why did my run stop before maxItems? Because the feed stopped offering products it had not
already served. Around 1,500 distinct ones is where that usually happens.
Do the price filters make it cheaper? They stop you paying for rows you did not want, yes. Dropped products are never billed. They do make the run longer.
Can I schedule it? Yes. Dedupe on productId between runs, since the feed repeats itself.
Is this legal? These are public listing pages with no account behind them. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the run ID and the input you used. A
FEED_UNAVAILABLE row is worth reporting straight away, because it means Taobao changed something
on their side.
