Switching from 1688 Wholesale Products Scraper to 1688 Products Scraper
1688 Products Scraper (arcadium/1688-products) reads input written for zen-studio/1688-wholesale-scraper: 7 of its 16 input fields work as they are. Field list from its public input schema (build 0.0.200, 2026-10-31); prices and run results from the public Apify API, 2026-11-01.
Their fields that work as they are
| Their field | Type | Note |
|---|---|---|
keywords | array | As is |
offerIds | array | As is |
maxResults | integer | Read as the result cap per keyword, up to 2,000. |
sortBy | string | "bestSelling" is read as sorting by sales. |
includeSkuDetails | boolean | Read as "with details" (SKUs, attributes, freight); charged as a product with details. |
priceMin | integer | As is |
priceMax | integer | As is |
Their fields this actor does not read
includeDescriptionHtml, includeSupplierIntelligence, excludeKeywords, minOrderQuantity, merchantType, province, city, proxyCountryMode, feedback. Leave them out of the input; the actor’s own options are in the guide.
Side by side: their input, our rows
Input written for zen-studio/1688-wholesale-scraper, pasted unchanged:
{
"keywords": [
"wireless earbuds"
],
"maxResults": 200,
"sortBy": "bestSelling",
"includeSkuDetails": true,
"priceMin": 10,
"priceMax": 80
}One row from arcadium/1688-products (README example; long text shortened):
{
"rowType": "product",
"platform": "1688",
"offerId": "866095761513",
"url": "https://detail.1688.com/offer/866095761513.html",
"title": "数据线保护套硅胶防折断充电线保护套咬线器防断裂神器",
"keyword": "数据线",
"rank": 2,
"isAd": false,
"currency": "CNY",
"priceMin": 2.5,
"priceMax": 2.6,
"priceTiers": [
{
"minQty": 3,
"maxQty": 4999,
"price": 2.6
},
{
"minQty": 5000,
"maxQty": 99999,
"price": 2.55
}
],
"moq": 3,
"unit": "件",
"soldCount": 100000,
"soldText": "已售10万+件",
"soldScope": "offer",
"repurchaseRate": 17,
"origin": {
"province": "广东",
"city": "东莞市"
},
"supplier": {
"companyName": "东莞市元拓橡塑制品有限公司",
"memberId": "b2b-22072902285003c713",
"isFactory": true,
"yearsOnPlatform": 7,
"serviceScores": {
"composite": 4,
"consultation": 4,
"logistics": 3.57,
"dispute": 5,
"returns": 3.67,
"goods": 3.33
},
"repurchaseRate3m": 77,
"shopUrl": "https://apetop.1688.com"
},
"hasDetails": false
}Output fields: rowType, platform, offerId, url, title, keyword, rank, isAd, images, currency, priceMin, priceMax, priceTiers, moq, unit, soldCount, soldText, soldScope, bookedCount, repurchaseRate, origin, serviceTags, supplier, skus, attributes, freight, rating, videoUrl, category, hasDetails, scrapedAt, stated, delivered, stopReason, shortfall, input, code, message. The rows use these names, not the other actor’s.
Price
| Actor | Pricing model | Charged per | Per 1,000, Free plan | Per 1,000, lowest plan |
|---|---|---|---|---|
| arcadium/1688-products | Pay per event | Product (search result) | $1.80 | $1.35 |
| zen-studio/1688-wholesale-scraper | Pay per event | Product | $4.99 | $3.99 |
Live Apify prices on 2026-11-01, in USD, for each actor’s main charged event. Start fees and platform usage are not included. Units differ: compare what one charged row contains. The Store page of each actor is the current source.
Common issues: failed or timed-out runs
- 1688 Wholesale Products Scraper timed out: 0.2% of 38,316 runs timed out.
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/1688-products | under 50 runs | - | - |
| zen-studio/1688-wholesale-scraper | 38,316 | 0.0% | 0.2% |
Apify’s public run statistics for each actor, last 30 days to 2026-11-01: FAILED and TIMED-OUT runs as a share of all runs. Shown from 50 runs. A failed run can also come from a bad input. Here an input that cannot be read comes back as a free error row with a code, and the other inputs still arrive.
How to switch
In the Apify Store
- Open arcadium/1688-products and sign in to Apify.
- On the Input tab, switch the editor to JSON and paste the input you used for zen-studio/1688-wholesale-scraper, without the fields listed above as not read.
- Start the run. Set a maximum cost per run in the run options if you want a hard cap.
Over the API
Change the actor ID in the URL from zen-studio~1688-wholesale-scraper to arcadium~1688-products; the body stays the same apart from the fields this actor does not read.
curl -X POST "https://api.apify.com/v2/acts/arcadium~1688-products/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords":["wireless earbuds"],"maxResults":200,"sortBy":"bestSelling","includeSkuDetails":true,"priceMin":10,"priceMax":80}'
In n8n
In the Apify node, change the actor to arcadium/1688-products and keep the input JSON. With an HTTP Request node:
{
"nodes": [
{
"name": "Run arcadium/1688-products",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
0,
0
],
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/arcadium~1688-products/run-sync-get-dataset-items",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"keywords\":[\"wireless earbuds\"],\"maxResults\":200,\"sortBy\":\"bestSelling\",\"includeSkuDetails\":true,\"priceMin\":10,\"priceMax\":80}",
"options": {
"timeout": 300000
}
}
}
],
"connections": {}
}
From an AI assistant (MCP)
Add the actor as a tool on Apify’s MCP server; an agent can pass the same input fields.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=arcadium/1688-products",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}