Taobao Product Scraper avatar

Taobao Product Scraper

Pricing

from $3.49 / 1,000 product detail results

Go to Apify Store
Taobao Product Scraper

Taobao Product Scraper

Extract detailed product data from Taobao, including title, price, reviews, specifications, images, options, and categories. Perfect for market research, e-commerce insights, and data-driven decision-making

Pricing

from $3.49 / 1,000 product detail results

Rating

0.0

(0)

Developer

Pizani

Pizani

Maintained by Community

Actor stats

7

Bookmarked

11K

Total users

1.5K

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

Share

🛒 Taobao Product Scraper

This Actor extracts product data from Taobao and returns a clean, ready-to-use JSON — in English, with prices in USD and CNY. Runs are fast and cheap.


✨ What it does

  • Accepts a Taobao product_url (or a bare item ID).
  • Extracts the title in English, price (USD + CNY), images, description images and the full SKU matrix with per-variant price and stock.
  • Collects store data (name and identifier).
  • Pushes the result to the Dataset (Output tab).

🎯 What makes it different

Typical Taobao scrapersThis Actor
TitleChinese onlyEnglish
PricesCNY onlyUSD + CNY
Variantsraw property IDsreadable names: Teal Crewneck Top with Logo / S
Description imagesmixed with tracking pixelscleaned: pixels and duplicates removed

🔧 Input

{
"product_url": "https://item.taobao.com/item.htm?id=692815138312"
}
FieldRequiredDescription
product_url✅Product URL or bare item ID.

🧾 Example Output

{
"sellerInfo": {
"shopTitle": "A电遇体育服饰",
"shopID": "WjezfuSxHYYdOd7CrwSBcoNH",
"shopLink": null
},
"productInfo": {
"urlproduct": "https://item.taobao.com/item.htm?id=692815138312",
"itemId": "692815138312",
"title": "Retro Brazilian Sports Fan Jersey Round Neck Lapel Polo Half-Length Football Uniform Warm-Up Training Uniform",
"titleCN": null,
"price": "11.78",
"priceCurrency": "USD",
"priceCNY": "68.00",
"originalPriceCNY": null,
"imgList": ["https://img.alicdn.com/...png", "... 4 more ..."],
"descriptionImages": ["https://img.alicdn.com/...jpg", "... 10 more ..."],
"totalStock": null,
"minOrderQuantity": 1,
"sevenDayReturn": false,
"scrapedAt": "2026-09-21T19:32:35+00:00",
"atributtes": {},
"options": [
{
"name": "Teal Crewneck Top with Logo / S",
"imgUrl": "https://img.alicdn.com/...jpg",
"price": "12.99",
"priceCNY": "75.00",
"stock": 17,
"skuId": "4915584004117"
},
"... 139 more ..."
]
}
}

🧩 Field Reference

  • sellerInfo.shopTitle: Store name.
  • sellerInfo.shopID: Store identifier.
  • sellerInfo.shopLink: Store URL, when available.
  • productInfo.itemId / urlproduct: Numeric Taobao item ID and its canonical URL.
  • productInfo.title: Product title in English.
  • productInfo.titleCN: Original Chinese title, when available.
  • productInfo.price / priceCurrency / priceCNY: Price in USD / currency (always USD) / price in CNY.
  • productInfo.originalPriceCNY: Crossed-out price — null unless there is a real discount.
  • productInfo.imgList / descriptionImages: Gallery images / images inside the description (tracking pixels and duplicates removed).
  • productInfo.totalStock: Total stock, when available. Per-variant stock is always in options[].stock.
  • productInfo.minOrderQuantity / sevenDayReturn: Minimum order quantity and 7-day return policy.
  • productInfo.atributtes: Spec sheet as key/value, when the listing provides one. Colour/size axes are not repeated here — they are in options.
  • productInfo.options[]: Every SKU — name, imgUrl, price, priceCNY, stock, skuId.
  • productInfo.scrapedAt: UTC timestamp of the run.

🛡️ Reliability

A product that cannot be resolved — removed, out of stock, or not supported — is reported as an explicit error rather than an empty row, so you never pay for a blank result.


🛠️ How to use via API

import os
import time
import json
import requests
API_TOKEN = "YOUR_APIFY_API_KEY"
ACTOR_ID = "pizani~taobao-product-scraper"
PRODUCT_URL = "https://item.taobao.com/item.htm?id=692815138312"
output_dir = "./scraped_results"
os.makedirs(output_dir, exist_ok=True)
output_file = os.path.join(output_dir, "product_data.json")
run_resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/runs?token={API_TOKEN}",
json={"product_url": PRODUCT_URL}
)
run_data = run_resp.json()
run_id = run_data.get("data", {}).get("id")
if not run_id:
raise Exception(f"Failed to start Actor: {run_data}")
status_url = f"https://api.apify.com/v2/actor-runs/{run_id}?token={API_TOKEN}"
while True:
status_resp = requests.get(status_url).json()
status = status_resp.get("data", {}).get("status")
if status in {"SUCCEEDED", "FAILED", "ABORTED", "TIMED-OUT"}:
break
time.sleep(5)
items_url = (
"https://api.apify.com/v2/datasets/"
f"{status_resp['data']['defaultDatasetId']}"
f"/items?clean=true&format=json&token={API_TOKEN}"
)
result = requests.get(items_url).json()
with open(output_file, "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=4)

ℹ️ Notes

  • Fields can vary depending on the product: not every listing has a spec sheet, a discount, a Chinese title or SKU images.
  • priceCNY and price reflect the listing at the moment of the run.
⌂ 换网址