Weidian Product Detail API
Pricing
from $5.00 / 1,000 results
Weidian Product Detail API
Extract detailed product data from Weidian, including title, price, reviews, specifications, images, options, and categories. Perfect for market research, e-commerce insights, and data-driven decision-making
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Pizani
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
🛍️ Weidian Product Scraper
This Actor extracts product data from Weidian (微店) 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 Weidian product_url (or a bare item ID).
- Extracts title (translated + original Chinese), price (USD and CNY), domestic shipping fee, stock, images and SKU variants (sizes/colours with per-SKU price and stock).
- Collects store data (name, numeric ID and shop URL).
- Pushes the result to the Dataset (Output tab).
🔧 Input
{"product_url": "https://weidian.com/item.html?itemID=4281670129"}
All of these are accepted:
https://weidian.com/item.html?itemID=4281670129https://shop1826085585.v.weidian.com/item.html?itemID=73314536694281670129(bare item ID)
🧾 Example Output
{"sellerInfo": {"shopTitle": "H12纯原总仓","shopID": "1826085585","shopLink": "https://shop1826085585.v.weidian.com"},"productInfo": {"urlproduct": "https://weidian.com/item.html?itemID=7331453669","title": "N378310","titleCN": "🔑N378310","price": "35.33","priceCNY": "210.0","shippingFee": "10","minOrderQuantity": 1,"totalStock": 9986,"imgList": ["https://si.geilicdn.com/weidian1790815530-3d59000001932b9007680a20e672_1080_1620.jpg","... more images ..."],"atributtes": {"Model Size-NK/AJ": "36, 36.5, 38, 38.5, 39, US7=40, US8=41, US9=42.5"},"options": [{"name": "36","imgUrl": null,"price": "35.33","priceCNY": "210.0","stock": 666,"skuNo": "124463963907"}]}}
🧩 Field Reference
sellerInfo.shopTitle: Store name (original Chinese).sellerInfo.shopID: Numeric Weidian shop ID.sellerInfo.shopLink: Store URL, built ashttps://shop{shopID}.v.weidian.com.productInfo.urlproduct: Item URL.productInfo.title/titleCN: Translated title / original Chinese title.productInfo.price/priceCNY: Base price in USD / CNY.productInfo.shippingFee: Domestic shipping fee in CNY — a Weidian-specific field;0means the seller ships free inside China.productInfo.minOrderQuantity: Minimum order quantity (usually 1).productInfo.totalStock: Total stock across all SKUs.productInfo.imgList: List of image URLs (main image first).productInfo.atributtes: Variation groups with every available value — e.g.{"Model Size": "36, 37, 38"}. Weidian items have no spec sheet, so this is derived from the SKUs.productInfo.options[]: SKU variants —name,imgUrl,price(USD),priceCNY,stock,skuNo.
⚠️ Notes on Weidian
| Behaviour | |
|---|---|
| Spec sheet | Does not exist on Weidian — atributtes is built from the SKU variation groups instead |
| SKU images | Weidian rarely attaches an image per variant, so options[].imgUrl is often null |
| Shipping | shippingFee exists only on Weidian (Taobao/1688 do not expose it) |
| Removed items | Weidian sellers delete listings constantly; a removed item makes the run fail with a clear message |
| Titles | Many sellers use codes like 🔑N378310 as the title — that is the real listing title, not a parsing error |
The Actor queries two independent APIs in parallel and merges them, because each one carries only half of the data: one provides the translated title, the SKU labels and the shop name; the other provides the numeric shop ID and the total stock. If one is unavailable the run still succeeds with whatever the other returned, and a third API is used as a last resort.
🛠️ How to use via API
import osimport timeimport jsonimport requestsAPI_TOKEN = "YOUR_APIFY_API_KEY"ACTOR_ID = "pizani~weidian-product-scraper"PRODUCT_URL = "https://weidian.com/item.html?itemID=4281670129"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
- Fields can vary depending on the product and site availability.
- USD prices come from the upstream agent's exchange rate;
priceCNYis the seller's actual price.