1688 Product Detail API
Pricing
from $10.00 / 1,000 results
Go to Apify Store

1688 Product Detail API
Extract detailed product data from 1688, including title, price, reviews, specifications, images, options, and categories. Perfect for market research, e-commerce insights, and data-driven decision-making
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Pizani
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
🏭 1688 Product Scraper
This Actor extracts product data from 1688.com (Alibaba's Chinese wholesale marketplace) and returns a ready-to-use JSON. No browser is used — the data comes from JSON APIs, so runs are fast and cheap.
✨ What it does
- Accepts a 1688 product_url (or a bare offer ID).
- Extracts title (translated + original Chinese), price (USD and CNY), MOQ, stock, images, attributes and SKU variants.
- Collects store data (name and ID).
- Pushes the result to the Dataset (Output tab).
🔧 Input
{"product_url": "https://detail.1688.com/offer/884771400190.html","resolve_shop_name": true}
| Field | Required | Default | Description |
|---|---|---|---|
product_url | ✅ | — | Offer URL (detail.1688.com/offer/<id>.html) or the bare offer ID. |
resolve_shop_name | ❌ | true | Makes one extra request to fill sellerInfo.shopTitle (the main API returns it empty for 1688). |
🧾 Example Output
{"sellerInfo": {"shopTitle": "佛山市禅城区盈多万服装店","shopID": "BBBN4mn-Ub-019cgQIEf1tAdg","shopLink": null},"productInfo": {"urlproduct": "https://detail.1688.com/offer/884771400190.html","title": "Os Snoopy Spaceship Speedmaster 3861 Multifunctional Chronograph Moon Landing 42m Men's Watch","titleCN": "OS史努比飞船超霸3861多功能计时登月42m男士手表机械表跨境外贸","price": "124.05","priceCNY": "750.0","minOrderQuantity": 1,"totalStock": 4,"imgList": ["https://cbu01.alicdn.com/img/ibank/O1CN014EtQA51x7sfFSBYiw_!!2212305196397-0-cib.jpg","... more images ..."],"atributtes": {"Brand": "Other","Model": "8215/3861","Movement type": "Machine","Case material": "Stainless steel"},"options": [{"name": "Snoopy / 8215 back cover (without spaceship)","imgUrl": "https://cbu01.alicdn.com/img/ibank/O1CN014EtQA51x7sfFSBYiw_!!2212305196397-0-cib.jpg","price": "124.05","priceCNY": "750.0","stock": 199,"skuNo": "58cac820dde29a250cd05dbf578c31f3"}]}}
🧩 Field Reference
sellerInfo.shopTitle: Store name (original Chinese).sellerInfo.shopID: Store identifier — on 1688 this is an opaque hash, not a numeric ID.sellerInfo.shopLink: Alwaysnullon 1688 — the store URL cannot be derived from the hashed ID.productInfo.urlproduct: Offer URL.productInfo.title/titleCN: Translated title / original Chinese title.productInfo.price/priceCNY: Base price in USD / CNY.productInfo.minOrderQuantity: Minimum order quantity (MOQ) — 1688 is a wholesale marketplace, so this is often greater than 1.productInfo.totalStock: Total stock available.productInfo.imgList: List of image URLs (main image first).productInfo.atributtes: Map of product attributes (key/value).productInfo.options[]: SKU variants —name(all variation values joined with/),imgUrl,price(USD),priceCNY,stock,skuNo.
⚠️ 1688 vs Taobao
If you are coming from the Taobao scraper, note these platform differences:
| Taobao | 1688 | |
|---|---|---|
| Shop ID | numeric (1822521250) | opaque hash (BBBN4mn-Ub-…) |
| Shop link | shop{id}.taobao.com | not derivable → null |
| MOQ | always 1 | often > 1 (wholesale) |
| SKU naming | single attribute | multiple attributes (colour + size) joined with / |
🛠️ How to use via API
import osimport timeimport jsonimport requestsAPI_TOKEN = "YOUR_APIFY_API_KEY"ACTOR_ID = "pizani~1688-product-scraper"PRODUCT_URL = "https://detail.1688.com/offer/884771400190.html"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"}:breaktime.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
- The Actor tries a primary JSON API and automatically falls back to a secondary one, so a single blocked endpoint does not fail the run.
- Fields can vary depending on the product and site availability. Attributes are richer on the primary source.