# 1688.com Scraper — Wholesale Prices, MOQ, SKUs & Suppliers (`selleraim.com/alibaba-1688-scraper`) Actor

Scrape 1688.com (Alibaba China wholesale) by English or Chinese keyword, product URL or offer ID. Get wholesale price tiers, MOQ, sales, images, SKUs with price and stock, attributes and supplier ratings. No login; proxies included. Built for sourcing, Amazon FBA and dropshipping.

- **URL**: https://apify.com/selleraim.com/alibaba-1688-scraper.md
- **Developed by:** [Seller Aim](https://apify.com/selleraim.com) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 search results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 1688.com Scraper — Wholesale Prices, MOQ, SKUs & Suppliers

Scrape **1688.com**, Alibaba's Chinese wholesale marketplace, where factories sell to resellers at factory prices. Search by keyword **in English or Chinese**, or paste product links and offer IDs, and get clean, structured rows with **wholesale price tiers, minimum order quantity (MOQ), sales, images, SKUs with price and stock, product attributes and supplier details**.

- **No 1688 account, no cookies, no browser.** It reads the same data 1688's own website loads, through Chinese residential IPs that are already set up.
- **Fast:** about 60 search results per request and about 40 full product pages per minute at default settings.
- **Pay only for results:** $1.99 per 1,000 search results, $3.99 per 1,000 full product details. Proxy and compute costs are included.

### Who uses it

- **Amazon FBA, Shopify and TikTok Shop sellers** who need factory prices and MOQs before ordering.
- **Dropshippers and sourcing agents** comparing suppliers for the same product.
- **Brands and analysts** tracking wholesale prices, stock and best sellers in a category.
- **Developers and AI agents** that need 1688 data through an API, on a schedule or in a pipeline.

### What you get

| Data | Search results | Product details |
| --- | --- | --- |
| Title, product URL, offer ID | ✅ | ✅ |
| Price (CNY) | ✅ displayed price | ✅ min–max across tiers and SKUs |
| Wholesale price tiers (quantity → price) | on about 42% of results, when 1688 shows them in search | ✅ for tier-priced products (see `priceType`) |
| Minimum order quantity and unit | on about 42% of results | ✅ |
| Sales count | ✅ | ✅ |
| Images | main image | full gallery (5 on average) |
| SKUs: variant name, price, stock, sales | – | ✅ (17 SKUs on average) |
| Variant options with images (color, size, model) | – | ✅ |
| Product attributes (material, brand, style, …) | – | ✅ |
| Category, total stock, video, description link | – | ✅ |
| Supplier: company, shop URL, location | ✅ | ✅ |
| Supplier: years on 1688, business type, service scores | ✅ | ✅ when found through search |
| Supplier: 3-month repeat-purchase rate | – | ✅ on about 83% of products |
| Badges (free returns, buy-now-pay-later, repeat-buyer rate) and ad flag | ✅ | ✅ when found through search |

Percentages come from our validation runs (1,177 search results across 10 keywords, 29 product pages across 10 categories). Text fields such as titles and attributes are in Chinese, exactly as published on 1688; prices are in Chinese yuan (CNY).

### Quick start

1. Type one or more **keywords**, or paste **1688 URLs** or **offer IDs**.
2. Set **Max products**.
3. Click **Start**. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

#### Examples

Search in English:

```json
{ "searchQueries": ["phone case", "yoga mat"], "maxProducts": 200 }
```

Search in Chinese for the best sellers of the last 30 days, priced 5–20 CNY, from suppliers in Guangdong:

```json
{
  "searchQueries": ["蓝牙耳机"],
  "sortBy": "bestSelling",
  "priceMin": 5,
  "priceMax": 20,
  "province": "广东",
  "maxProducts": 100
}
```

Full details for specific products (product links and offer IDs always return full details):

```json
{
  "startUrls": [{ "url": "https://detail.1688.com/offer/742547158162.html" }],
  "offerIds": ["971924460373"]
}
```

Search and open every product page in one run:

```json
{ "searchQueries": ["保温杯"], "maxProducts": 50, "includeDetails": true }
```

### Input

| Field | Default | What it does |
| --- | --- | --- |
| `searchQueries` | – | Keywords, one per line. English and Chinese both work. |
| `startUrls` | – | Product pages `https://detail.1688.com/offer/<id>.html` and search pages `https://s.1688.com/selloffer/offer_search.htm?keywords=...`. A search URL keeps the sort order and filters already in it. |
| `offerIds` | – | Offer IDs (the number in a product URL), as text. |
| `maxProducts` | 30 | Total products for the whole run, across all keywords, URLs and IDs. |
| `includeDetails` | false | Open each search result's product page for SKUs, attributes, category, stock and supplier repeat-purchase rate. |
| `sortBy` | `relevance` | `relevance`, `bestSelling` (most sold in the last 30 days), `priceAsc`, `priceDesc`. |
| `priceMin`, `priceMax` | – | Price range in CNY. |
| `province` | – | Supplier province in Chinese: 广东 (Guangdong), 浙江 (Zhejiang), 福建 (Fujian), 江苏 (Jiangsu), 山东 (Shandong). |
| `city` | – | Prefecture-level city in Chinese: 深圳 (Shenzhen), 广州 (Guangzhou), 东莞 (Dongguan), 汕头 (Shantou), 金华 (Jinhua, which includes Yiwu). County-level cities such as 义乌 are not matched; use their prefecture instead. |
| `proxyConfiguration` | Apify residential, China | Keep the default; 1688 limits anonymous visitors from abroad. |
| `cookiesJson` | – | Optional: your own 1688.com cookies as a JSON array, only for the rare products that require a login. Stored encrypted; never written to the dataset or logs. |
| `maxConcurrency` | 4 | Pages loaded in parallel (1–10). |
| `maxRequestsPerMinute` | 60 | Upper limit on page requests per minute. |

Filters apply to keywords. The same filters can be set on 1688.com itself, and the search URL pasted into **1688 URLs**.

### Output

Each product is one row. `type` tells you which kind of row it is: `searchCard` for a search result, `product` for a full product page.

#### Search result (real row, images shortened)

```json
{
  "type": "searchCard",
  "offerId": "971924460373",
  "url": "https://detail.1688.com/offer/971924460373.html",
  "title": "Mixed Batch phone case for 适用 iPhone 17/18pro/18promax/air",
  "price": { "currency": "CNY", "min": 1.3, "max": 1.3 },
  "priceTiers": [],
  "minimumOrderQuantity": null,
  "unit": null,
  "images": ["https://cbu01.alicdn.com/img/ibank/O1CN012ACLPL1if7DtHXGeg_!!2214203114439-0-cib.jpg"],
  "supplier": {
    "name": "广州贝尚电子有限公司",
    "url": "http://shop17630x488f962.1688.com/",
    "location": "广东 广州市",
    "loginId": "贝尚寻梦科技",
    "memberId": "b2b-221420311443981f46",
    "yearsOnPlatform": 5,
    "businessType": "生产加工",
    "serviceScores": { "composite": 4, "goods": 4.33, "logistics": 3.29, "dispute": 4, "returns": 3.33, "consultation": 3.5 }
  },
  "salesCount": 721,
  "sponsored": false,
  "tags": ["退货包运费", "先采后付", "回头率83%"],
  "warnings": ["MOQ_UNAVAILABLE"],
  "query": "phone case",
  "sourceUrl": "https://s.1688.com/selloffer/offer_search.htm?beginPage=1&charset=utf8&keywords=phone+case&sortType=va_rmdarkgmv30",
  "recordId": "1688:971924460373",
  "scrapedAt": "2026-10-14T08:50:54.545Z"
}
```

#### Product details (real row, lists shortened)

```json
{
  "type": "product",
  "offerId": "742547158162",
  "url": "https://detail.1688.com/offer/742547158162.html",
  "title": "适用苹果16promax手机壳新款iphone15太空壳透明14硅胶13防摔软壳",
  "price": { "currency": "CNY", "min": 0.96, "max": 1.44 },
  "priceTiers": [
    { "minQuantity": 2, "maxQuantity": 887, "price": 1.44 },
    { "minQuantity": 888, "maxQuantity": 8887, "price": 1.2 },
    { "minQuantity": 8888, "maxQuantity": null, "price": 0.96 }
  ],
  "minimumOrderQuantity": 2,
  "unit": "个",
  "images": ["https://cbu01.alicdn.com/img/ibank/O1CN01Bot0Ee1v7IeQJxj1I_!!2212968606125-0-cib.jpg", "…"],
  "supplier": {
    "name": "深圳市旭昇通科技有限公司",
    "url": "https://15220229227.1688.com/",
    "location": "广东省深圳市",
    "loginId": "maweixu520",
    "memberId": "b2b-1976409830",
    "userId": "1976409830",
    "repeatPurchaseRate3m": "79.16%"
  },
  "attributes": [{ "name": "材质", "value": "tpu" }, { "name": "款式", "value": "后盖式" }, "…"],
  "skus": [
    { "skuId": "5119235324116", "specification": "【透明】 - TPU-太空壳>iPhone 6Plus/6sPlus", "price": 0.96, "stock": 8883, "salesCount": 0 },
    "…"
  ],
  "skuProperties": [
    { "name": "颜色", "values": [{ "name": "【透明】 - TPU-太空壳", "image": "https://cbu01.alicdn.com/img/ibank/O1CN01N2GtFu1v7IeF2urs9_!!2212968606125-0-cib.jpg" }, "…"] },
    { "name": "适用型号", "values": [{ "name": "iPhone 16", "image": null }, "…"] }
  ],
  "category": { "id": "1042207", "name": "手机保护套" },
  "status": "PUBLISHED",
  "priceType": "rangePrice",
  "stock": 533162,
  "salesCount": 43,
  "videoUrl": null,
  "descriptionUrl": "https://itemcdn.tmall.com/1688offer/icoss355165791134f295fe9089dc00",
  "query": "phone case",
  "recordId": "1688:742547158162",
  "scrapedAt": "2026-10-14T08:36:19.628Z"
}
```

#### Field reference

| Field | Description |
| --- | --- |
| `type` | `searchCard` (search result) or `product` (full product page). |
| `offerId`, `url` | 1688 offer ID and canonical product URL. |
| `title` | Product title as published (usually Chinese). |
| `price` | `{ currency: "CNY", min, max }`. For search results: the price shown in search. For products: the range across price tiers and SKUs. |
| `priceTiers` | Wholesale ladder `[{ minQuantity, maxQuantity, price }]`; `maxQuantity: null` means "and above". Empty for SKU-priced products (`priceType: "skuPrice"`), where each SKU has its own price. |
| `minimumOrderQuantity`, `unit` | Minimum order and unit (个 = piece, 件 = item, 套 = set, 双 = pair, …). |
| `images` | Image URLs; product rows include the full gallery. |
| `supplier.name`, `url`, `location` | Company name, 1688 shop URL, and province/city (for products: the shipping origin). |
| `supplier.loginId`, `memberId`, `userId` | 1688 account identifiers of the supplier. |
| `supplier.yearsOnPlatform` | Years the supplier has sold on 1688. |
| `supplier.businessType` | Business model as 1688 shows it, for example 生产加工 (manufacturer) or 经销批发 (wholesaler). |
| `supplier.serviceScores` | 1688 service ratings out of 5: `composite`, `goods`, `logistics`, `dispute`, `returns`, `consultation`. |
| `supplier.repeatPurchaseRate3m` | Share of buyers who ordered again in the last 3 months. |
| `salesCount` | Units sold, as 1688 reports it. |
| `sponsored` | `true` for paid placements in search results. |
| `tags` | Search badges, such as 退货包运费 (free return shipping), 先采后付 (buy now, pay later), 回头率83% (83% repeat buyers). |
| `skus` | Variants `[{ skuId, specification, price, stock, salesCount }]`. `price` is `null` when the product is tier-priced. |
| `skuProperties` | Variant options `[{ name, values: [{ name, image }] }]`, for example color and phone model. |
| `attributes` | Product specification `[{ name, value }]`. |
| `category` | Leaf category `{ id, name }`. |
| `priceType` | `rangePrice` (price depends on quantity) or `skuPrice` (price depends on the variant). |
| `stock`, `status`, `videoUrl`, `descriptionUrl` | Total stock, listing status, product video, and the link to the long description. |
| `warnings` | Missing data flags: `PRICE_UNAVAILABLE`, `MOQ_UNAVAILABLE`, `IMAGES_UNAVAILABLE`, `SUPPLIER_UNAVAILABLE`, `DETAIL_UNAVAILABLE`. |
| `detailFailure` | Present when a search result's product page could not be opened; the search data is kept. |
| `query`, `sourceUrl`, `recordId`, `scrapedAt` | Keyword that found the product, page it came from, stable row ID (`1688:<offerId>`), and time of scraping. |

### Search tips

- **English or Chinese:** 1688 matches English keywords against its Chinese listings ("phone case" and "water bottle" return thousands of results). Chinese keywords are usually more precise; a translation tool or a Chinese colleague can help with the exact term (手机壳 = phone case, 保温杯 = insulated cup, 蓝牙耳机 = Bluetooth earphones).
- **Volume:** 1688 returns up to about 2,000 products per keyword, 60 per page. For more, split the topic into several narrower keywords; duplicates across keywords are removed automatically.
- **Best sellers:** `sortBy: "bestSelling"` puts the most-ordered products of the last 30 days first.
- **Advanced filters:** filter on 1688.com in your browser, then paste the search URL into **1688 URLs**.
- **Ads:** paid placements are kept and flagged `sponsored: true`, so you can filter them out.

### Pricing

Pay per result. Proxy, compute and storage are included in the price.

| What you get | Price |
| --- | --- |
| Search result (`type: "searchCard"`) | **$1.99 per 1,000** ($0.00199 each) |
| Full product details (`type: "product"`) | **$3.99 per 1,000** ($0.00399 each) |
| Run start | $0.00005 per run (per GB of memory) |

Examples:

| Run | Cost |
| --- | --- |
| 1,000 search results for 5 keywords | about $1.99 |
| 100 offer IDs with full details | about $0.40 |
| 50 search results with details turned on | about $0.20 (billed as 50 product details) |

With **Open each product page** on, each row is billed once, as a product detail. If a product page cannot be opened, its search result is kept and billed as a search result. To control spend, set **Max products** and, in the run options, a maximum total charge for the run; the scraper stops cleanly when that limit is reached.

### Speed and limits

- At default settings: about 60 search results per request, and about 40 product pages per minute.
- Up to about 2,000 results per keyword (1688's own limit).
- Data is live at the moment of the run; schedule the scraper for regular price or stock monitoring.
- A few products require a 1688 login or have been removed. Such products are listed in the run's `SUMMARY` with a reason; you can provide your own cookies for login-only products.
- Texts are in Chinese and prices in CNY, exactly as on 1688. Nothing is machine-translated.

### Run summary and troubleshooting

Every run stores a `SUMMARY` record in its key-value store with counts, limits reached, failures with reasons, and request statistics. The run's status message shows the totals.

| Code | Meaning | What to do |
| --- | --- | --- |
| `NOT_FOUND` | The product was removed or never existed. | Check the offer ID. |
| `LOGIN_REQUIRED` | 1688 requires a login for this product. | Add your own 1688 cookies, or skip it. |
| `CAPTCHA`, `ACCESS_DENIED`, `RATE_LIMITED` | 1688 challenged or limited a request after all retries on new IPs. | Run again; keep the default proxy; lower `maxConcurrency` for very large runs. |
| `PROXY_ERROR`, `NAVIGATION_ERROR` | Network problem after retries. | Run again. |
| `PRODUCT_LIMIT_REACHED` (warning) | **Max products** was reached. | Raise **Max products** if you need more. |

### API and integrations

Run it from your code with the Apify API. Example with cURL, returning the rows directly:

```bash
curl -X POST "https://api.apify.com/v2/acts/selleraim.com~alibaba-1688-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["phone case"], "maxProducts": 100}'
```

JavaScript:

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('selleraim.com/alibaba-1688-scraper').call({
  offerIds: ['742547158162'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].priceTiers, items[0].skus.length);
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("selleraim.com/alibaba-1688-scraper").call(
    run_input={"searchQueries": ["蓝牙耳机"], "sortBy": "bestSelling", "maxProducts": 100}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"], item["supplier"]["name"])
```

You can also schedule runs, get a webhook when a run finishes, and connect the results to Google Sheets, Make, Zapier, n8n and other tools from the Apify Console.

### FAQ

**Do I need a 1688 account or a Chinese phone number?**
No. Searches and almost all product pages work without an account. Cookies are only needed for the rare products 1688 shows to logged-in buyers only.

**Can I search in English?**
Yes. 1688 matches English keywords, although Chinese keywords are usually more precise.

**Are prices in US dollars?**
No. Prices are in Chinese yuan (CNY), as on 1688. Convert them at the exchange rate you use.

**Why do some search results have no MOQ or price tiers?**
1688 shows the wholesale ladder in search for only some products (about 42% in our tests). Product pages always include the MOQ; turn on **Open each product page** to get it for every result.

**Why are `priceTiers` empty on some product pages?**
Those products are priced per variant (`priceType: "skuPrice"`). The prices are on each SKU in `skus`.

**Does it work for Alibaba.com?**
No. This scraper covers 1688.com, Alibaba's domestic wholesale site. Alibaba.com is a separate, English-language export marketplace.

**Is scraping 1688 legal?**
The scraper only collects publicly visible product and business information. Make sure your use of the data complies with applicable laws and 1688's terms.

### 中文说明

1688 商品采集：支持中文或英文关键词、搜索页链接和商品 ID（offerId），输出批发阶梯价、起批量、销量、图片、供应商信息（公司、店铺、所在地、经营年限、经营模式、服务评分）。打开“Open each product page”或直接输入商品链接，可获得 SKU（规格、价格、库存）、商品属性、类目、总库存、视频和近 3 个月复购率。

- 无需 1688 账号，默认使用中国住宅代理，开箱即用。
- 搜索支持排序（综合、近 30 天销量、价格升序、价格降序）、价格区间、供应商省份和地级市（义乌请填“金华”）。
- 计费：搜索结果 $1.99/千条，商品详情 $3.99/千条，代理和算力费用已包含在价格中。
- 字段原样保留 1688 的中文内容，价格单位为人民币。

### Changelog

- **1.4** (2026-10): English input form and documentation; sort and price, province and city filters; faster defaults (about 40 product pages per minute); product rows keep supplier scores and badges from search; pay-per-result pricing.
- **1.3** (2026-10): New HTTP engine without a browser; 100% success in validation (20/20 search pages, 29/29 product pages).

# Actor input Schema

## `searchQueries` (type: `array`):

One keyword per line. English works, for example phone case. Chinese keywords such as 手机壳 usually match 1688 listings more precisely.

## `startUrls` (type: `array`):

Product pages (https://detail.1688.com/offer/123456789.html) and search pages (https://s.1688.com/selloffer/offer_search.htm?keywords=...). A search URL keeps the sort order and filters already in it.

## `offerIds` (type: `array`):

1688 product IDs: the number in detail.1688.com/offer/<ID>.html. Enter them as text.

## `maxProducts` (type: `integer`):

Total products for the whole run, across all keywords, URLs and IDs. Each keyword returns up to about 2,000 products (60 per page).

## `includeDetails` (type: `boolean`):

Adds SKUs with price and stock, product attributes, category, video, total stock and the supplier's repeat-purchase rate to every search result. Slower, and each row is billed as a product detail. Product URLs and offer IDs always return full details.

## `sortBy` (type: `string`):

Order of keyword results.

## `priceMin` (type: `integer`):

Only products priced at or above this amount in Chinese yuan.

## `priceMax` (type: `integer`):

Only products priced at or below this amount in Chinese yuan.

## `province` (type: `string`):

Province in Chinese, as 1688 writes it: 广东 (Guangdong), 浙江 (Zhejiang), 福建 (Fujian), 江苏 (Jiangsu), 山东 (Shandong).

## `city` (type: `string`):

Prefecture-level city in Chinese: 深圳 (Shenzhen), 广州 (Guangzhou), 东莞 (Dongguan), 汕头 (Shantou), 金华 (Jinhua, which includes Yiwu). County-level cities such as 义乌 are not matched; use their prefecture.

## `proxyConfiguration` (type: `object`):

Keep the default Apify residential proxy in China. 1688 limits anonymous visitors from other countries.

## `cookiesJson` (type: `string`):

Only for products that require a 1688 login: a JSON array of your own 1688.com cookies. Stored encrypted and never written to the dataset or logs. Keyword search does not need it.

## `maxConcurrency` (type: `integer`):

Pages loaded in parallel.

## `maxRequestsPerMinute` (type: `integer`):

Upper limit on page requests per minute.

## `fallbackToSearchCards` (type: `boolean`):

If a product page cannot be opened, keep its search card, marked with detailFailure.

## `maxPages` (type: `integer`):

Maximum result pages per keyword or search URL (60 products per page).

## `maxRequests` (type: `integer`):

Global limit on search and product requests. Defaults to twice Max products plus 50.

## `maxRequestRetries` (type: `integer`):

Retries for network or parsing failures.

## `maxBlockedRetries` (type: `integer`):

Extra retries on a new IP after a block, CAPTCHA or rate limit.

## `blockedRetryDelaySecs` (type: `integer`):

Exponential backoff base; a server Retry-After can require longer.

## `maxBlockedWaitSecs` (type: `integer`):

Longest wait for a retry; a longer Retry-After stops that request.

## `sameDomainDelaySecs` (type: `integer`):

Minimum delay between requests to the same domain.

## `navigationTimeoutSecs` (type: `integer`):

Maximum seconds per HTTP request.

## `warmupSession` (type: `boolean`):

Kept for saved inputs of the old browser engine; ignored.

## `browserChannel` (type: `string`):

Kept for saved inputs of the old browser engine; ignored.

## `pageWaitSecs` (type: `integer`):

Kept for saved inputs of the old browser engine; ignored.

## `failOnEmpty` (type: `boolean`):

Fail the run when no products were extracted.

## Actor input object example

```json
{
  "searchQueries": [
    "phone case"
  ],
  "startUrls": [],
  "offerIds": [],
  "maxProducts": 30,
  "includeDetails": false,
  "sortBy": "relevance",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CN"
  },
  "maxConcurrency": 4,
  "maxRequestsPerMinute": 60,
  "fallbackToSearchCards": true,
  "maxPages": 50,
  "maxRequestRetries": 1,
  "maxBlockedRetries": 3,
  "blockedRetryDelaySecs": 5,
  "maxBlockedWaitSecs": 60,
  "sameDomainDelaySecs": 0,
  "navigationTimeoutSecs": 60,
  "warmupSession": true,
  "browserChannel": "chromium",
  "pageWaitSecs": 10,
  "failOnEmpty": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "phone case"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("selleraim.com/alibaba-1688-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQueries": ["phone case"] }

# Run the Actor and wait for it to finish
run = client.actor("selleraim.com/alibaba-1688-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "phone case"
  ]
}' |
apify call selleraim.com/alibaba-1688-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,selleraim.com/alibaba-1688-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gaQIlj43vOeszdlh4/builds/jHsrZFevKrcWg6jFW/openapi.json
