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": "30×15×45cm",
"Weight": "0.6kg",
"Color": "Black, Navy, Grey"
},
"url": "https://www.yiwugo.com/offer/123456.html",
"scrapedAt": "2026-02-12T10: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