curl --request POST \
--url https://api.scrapeunblocker.com/marketplace/1688-search \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/marketplace/1688-search"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/marketplace/1688-search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Scrape 1688.com wholesale search results
Searches 1688.com (China’s B2B wholesale marketplace) for q and returns the offers as JSON: offerId, title, url, image/images, price in yuan (currency CNY), priceTiers (price per quantity range with minQuantity/maxQuantity), soldText + sold (lower bound of units sold), repurchaseRatePercent, serviceTags, promotionTags, tags, sponsored, and the supplier (name, loginId, memberId, shopUrl, yearsOnPlatform, province, city, factoryInspected, businessInspected, superFactory, tradeScores). Sort by relevance, sales or price, filter with price_min/price_max (yuan) and province, and collect up to max_results across pages (60 per page, each page billed as one request, see pagesFetched). Paging: nextPage is the next 1688 page not yet returned (pass it as page to continue) and hasMore says whether there is one; when max_results ends inside a page, the rest of that page is not returned (droppedFromLastPage), so use multiples of 60 to get every offer. Text is returned in Chinese as 1688 publishes it. Companion to /marketplace/1688-product.
curl --request POST \
--url https://api.scrapeunblocker.com/marketplace/1688-search \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/marketplace/1688-search"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/marketplace/1688-search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your ScrapeUnblocker API key. Apply on every request.
Query Parameters
What to search, in Chinese or English, e.g. '手机壳', '连衣裙', 'bluetooth earphones'. Chinese keywords match the most offers.
1-based results page to start from (1-34). Use nextPage of a previous response to continue.
Offers to collect across pages (1-300); 1688 serves 60 per page and each page fetched is billed as one request.
Order: relevance, sales, price_asc, price_desc (sales = most sold in the last 30 days first; price in yuan).
Only offers priced at or above this many yuan (CNY).
Only offers priced at or below this many yuan (CNY).
Only suppliers in this Chinese province, by its Chinese name, e.g. 广东 (Guangdong), 浙江 (Zhejiang), 江苏 (Jiangsu).
Proxy country the request is sent from (ISO-2, e.g. 'DE', 'SG'). Leave blank to let the API pick.
Response
JSON with a products array plus paging totals. A query 1688 has no offers for answers 200 with an empty array.

