CI License: MIT Apify Store Node.js
Example code and scripts for the Yiwugo.com Scraper on Apify — extract product data from China's largest B2B wholesale marketplace.
Yiwugo.com (义乌购) is China's largest B2B wholesale marketplace, featuring millions of products from Yiwu — the world's largest small commodity market. This scraper extracts product data including prices, suppliers, specifications, and images.
- Go to Yiwugo Scraper on Apify Store
- Click "Try for free"
- Enter a search URL or product URL
- Hit Start → download results as JSON/CSV/Excel
const { ApifyClient } = require('apify-client'); const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' }); const run = await client.actor("jungle_intertwining/yiwugo-scraper").call({ startUrls: [{ url: "https://www.yiwugo.com/search/p-1.html?keywords=backpack" }], maxItems: 50, proxyConfiguration: { useApifyProxy: true }, }); const { items } = await client.dataset(run.defaultDatasetId).listItems(); console.log(`Got ${items.length} products`);
from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("jungle_intertwining/yiwugo-scraper").call(run_input={ "startUrls": [{"url": "https://www.yiwugo.com/search/p-1.html?keywords=backpack"}], "maxItems": 50, "proxyConfiguration": {"useApifyProxy": True}, }) for item in client.dataset(run["defaultDatasetId"]).iterate_items(): print(f"{item['title']} - {item['price']}")
Each product is returned as a structured JSON object:
{
"title": "2026新款时尚双肩包 大容量旅行背包",
"price": "25円.00 - 38円.00",
"minOrder": "100 pieces",
"supplier": "义乌市锦程箱包有限公司",
"location": "Yiwu, Zhejiang",
"category": "Bags & Luggage > Backpacks",
"images": [
"https://img.yiwugo.com/img/product/2026/01/backpack-001.jpg",
"https://img.yiwugo.com/img/product/2026/01/backpack-002.jpg"
],
"specifications": {
"Material": "Oxford cloth",
"Size": "×ばつ45cm",
"Weight": "0.6kg",
"Color": "Black, Navy, Grey"
},
"url": "https://www.yiwugo.com/offer/123456.html",
"scrapedAt": "2026年02月12日T10:30:00.000Z"
}Search by keyword:
{
"startUrls": [{ "url": "https://www.yiwugo.com/search/p-1.html?keywords=led+lights" }],
"maxItems": 100
}Scrape a specific product:
{
"startUrls": [{ "url": "https://www.yiwugo.com/offer/123456.html" }]
}Browse a category:
{
"startUrls": [{ "url": "https://www.yiwugo.com/category/bags/" }],
"maxItems": 200
}Track wholesale price changes over time. Run on a schedule and compare snapshots:
const { ApifyClient } = require('apify-client'); const fs = require('fs'); const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' }); async function monitorPrices() { const run = await client.actor("jungle_intertwining/yiwugo-scraper").call({ startUrls: [{ url: "https://www.yiwugo.com/search/p-1.html?keywords=led+lights" }], maxItems: 200, proxyConfiguration: { useApifyProxy: true }, }); const { items } = await client.dataset(run.defaultDatasetId).listItems(); const snapshot = { date: new Date().toISOString().split('T')[0], products: items.map(({ title, price, supplier, url }) => ({ title, price, supplier, url })), }; // Load history and detect changes const historyFile = 'price-history.json'; const history = fs.existsSync(historyFile) ? JSON.parse(fs.readFileSync(historyFile, 'utf8')) : []; if (history.length > 0) { const prevMap = Object.fromEntries(history.at(-1).products.map(p => [p.url, p.price])); for (const p of snapshot.products) { if (prevMap[p.url] && prevMap[p.url] !== p.price) { console.log(`💰 ${p.title}: ${prevMap[p.url]} → ${p.price}`); } } } history.push(snapshot); fs.writeFileSync(historyFile, JSON.stringify(history, null, 2)); console.log(`Saved ${items.length} products (${snapshot.date})`); } monitorPrices();
Tip: Use Apify Schedules to run daily/weekly without a server.
Find the best suppliers across multiple product categories:
from apify_client import ApifyClient import json client = ApifyClient("YOUR_APIFY_TOKEN") keywords = ["bluetooth speaker", "bluetooth earphone", "wireless charger"] all_products = [] for kw in keywords: run = client.actor("jungle_intertwining/yiwugo-scraper").call(run_input={ "startUrls": [{"url": f"https://www.yiwugo.com/search/p-1.html?keywords={kw.replace(' ', '+')}"}], "maxItems": 50, "proxyConfiguration": {"useApifyProxy": True}, }) for item in client.dataset(run["defaultDatasetId"]).iterate_items(): item["search_keyword"] = kw all_products.append(item) # Rank suppliers by product variety suppliers = {} for p in all_products: suppliers.setdefault(p.get("supplier", "Unknown"), []).append(p) for name, products in sorted(suppliers.items(), key=lambda x: -len(x[1]))[:10]: print(f" {name}: {len(products)} products")
from apify_client import ApifyClient import csv client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("jungle_intertwining/yiwugo-scraper").call(run_input={ "startUrls": [{"url": "https://www.yiwugo.com/search/p-1.html?keywords=toys"}], "maxItems": 500, "proxyConfiguration": {"useApifyProxy": True}, }) items = list(client.dataset(run["defaultDatasetId"]).iterate_items()) if items: with open("yiwugo-products.csv", "w", newline="", encoding="utf-8-sig") as f: writer = csv.DictWriter(f, fieldnames=["title", "price", "minOrder", "supplier", "location", "url"], extrasaction="ignore") writer.writeheader() writer.writerows(items) print(f"Exported {len(items)} products")
The examples/ directory contains ready-to-run scripts:
| Script | Description | Usage |
|---|---|---|
| price-monitor.js | Track prices over time, detect changes | APIFY_TOKEN=xxx node examples/price-monitor.js "led lights" 100 |
- How to Scrape Yiwugo.com for Wholesale Product Data
- How to Find Cheap Wholesale Suppliers on Yiwugo.com Using Data
- Best China Wholesale Data Scrapers 2026
- Scraping Chinese E-commerce Sites: Challenges and Solutions
- How to Monitor Yiwugo Product Prices Automatically
Questions or issues? Visit the Apify Store page or open an issue.
Built with ❤️ on the Apify platform