# 1688 Wholesale Scraper: Prices, MOQ, Suppliers and SKUs (`themineworks/1688-wholesale-scraper`) Actor

Scrape 1688.com by keyword or offer id: price tiers, MOQ, supplier name, province and city, years as Trust Pass member, factory inspection, sales counts, images and SKU variants with stock. Chinese or English keywords. No login.

- **URL**: https://apify.com/themineworks/1688-wholesale-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (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 $3.59 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Wholesale Scraper: Prices, MOQ, Suppliers and SKUs

[![20 1688 products with price tiers, supplier and SKUs in 25 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/1688-wholesale-scraper-hero.png)](https://console.apify.com/actors/zdJidtOsgaundiK1p/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works E-commerce and marketplaces family:** [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

Updated 23 Oct 2026: first release. Keyword search in Chinese or English, offer ids and product links, quantity price tiers, MOQ, supplier years and inspection flags, sales counts, all images and the SKU variant matrix with stock, one flat row per offer. Bookmark this Actor on its Store page so it is one click away next time.

### Why choose this actor?

- **The numbers a sourcing buyer compares, in columns.** Every row has the lowest and highest unit price in CNY, the full quantity price ladder (2 to 499 pieces at one price, 500 to 4,999 at another), the minimum order and the selling unit. Sort a whole keyword by price or MOQ in a spreadsheet without cleaning text.
- **The supplier next to the product.** Company name, province and city, years as a Trust Pass member, factory and business inspection flags, verified merchant and super factory marks, buyer protections, shop link, repeat purchase rate and six service scores. Search-only rows already carry most of it.
- **SKU variants with stock.** With product pages on, each row lists every colour and size combination with its own id, stock and sales count, plus the option pictures. A phone case with 270 variants comes back as one row with 270 entries.
- **Pay per product, nothing for errors.** Offers that no longer exist, links that are not 1688 links, the summary row and duplicates found by two searches are never charged. No 1688 account, cookies or API key.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/zdJidtOsgaundiK1p/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the first 20 offers for 手机壳 (phone case) with their product pages opened:

```json
{
  "searchQueries": ["手机壳"],
  "maxItems": 20
}
```

Put several keywords on separate lines to run several searches at once. Chinese keywords return more and better matches than English ones. A product that two of your searches find is delivered once.

Apify's free plan includes $5 of credit every month, which covers about 1,100 products at this actor's price.

#### Copy to your AI assistant

```text
themineworks/1688-wholesale-scraper on Apify. Searches 1688.com (Alibaba's China wholesale marketplace) by keyword, offer id or product link and returns one flat row per offer with price tiers in CNY, MOQ, supplier, years, inspection flags, sales counts, images and SKU variants, with no login. Call ApifyClient("TOKEN").actor("themineworks/1688-wholesale-scraper").call(run_input={"searchQueries": ["手机壳"], "maxItems": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (keywords, Chinese or English), offerIds (list of 1688 offer ids) or startUrls (detail.1688.com or m.1688.com product links, s.1688.com or m.1688.com search links) or any mix; up to 100 searches per run. Optional: maxItems (default 50, 1 to 2000, per keyword), sortBy (relevance, bestSelling, priceAsc, priceDesc), includeDetails (default true; opens each offer page for skus, sku_properties, images, video_url, shop_url, attributes, dropship_channels), proxyCountry (CN default, or HK). Product rows have no _type field and carry offer_id, title, offer_url, image_url, images, video_url, brand, category_id, category_name, price_cny, price_max_cny, price_tiers (min_quantity, max_quantity, price_cny), moq, unit, stock, weight_kg, mixed_wholesale, supplier_name, supplier_login_id, supplier_member_id, supplier_user_id, supplier_province, supplier_city, supplier_location, supplier_type, supplier_years, is_trust_pass_member, is_verified_merchant, is_super_factory, is_industry_seller, seller_identity, is_factory_inspected, is_business_inspected, supplier_labels, buyer_protections, shop_url, shop_offers_url, sales_count, orders_booked, sales_30d, sales_amount_30d_cny, sales_label, orders_30d_label, repurchase_rate, shop_repurchase_rate, shop_repurchase_rate_3m, score_overall, score_goods, score_logistics, score_dispute, score_consultation, score_return, rating_good_rate, rating_goods_grade, review_count, supplier_service_score, free_shipping, attributes, sku_properties, skus, sku_count, dropship_supported, dropship_channels, delivery_location, delivery_promise, service_labels, listed_at, updated_at, is_advertisement, keyword, sort_by, page, position, details_scraped, details_error, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when products were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~1688-wholesale-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Keyword, offer id or link.** Type keywords the way you would on 1688, give offer ids, or paste product links and search links from your browser. A search link is reduced to its keyword. A product link is read like an offer id.
- **Quantity price tiers.** `price_tiers` lists every quantity break with its minimum, maximum (empty means "and above") and unit price. `price_cny` is the lowest price, `price_max_cny` the price at the smallest quantity.
- **Supplier profile fields.** Business type (manufacturer or wholesaler), province, city, years as a Trust Pass member, factory inspection, verified merchant, super factory, buyer protections and the shop link.
- **Demand signals.** Total units sold, 30 day units and sales amount, orders booked, repeat purchase rate of the product and of the shop, review count and positive review share.
- **SKU matrix and media.** `skus` has one entry per option combination with id, stock, sales and a promotion flag; `sku_properties` has the option names and values with their pictures; `images` and `video_url` come from the product page.
- **Dropship and resale data.** `dropship_supported` and `dropship_channels` list the channels the supplier authorises, such as Taobao, Amazon, Shopify and Shopee.
- **Stops cleanly.** Two pages in a row with no new offers end a search; six blocked requests in a row end the run; the run stops before its time limit and keeps every row it read. The summary row says why.

### How to use it

#### Basic: one keyword, many suppliers

```json
{
  "searchQueries": ["手机壳"],
  "maxItems": 200
}
```

Ten pages of results, one row per offer. Sort by `price_cny` to see the cheapest offers, or by `moq` to find suppliers that take small orders.

#### Best sellers first

```json
{
  "searchQueries": ["蓝牙耳机"],
  "sortBy": "bestSelling",
  "maxItems": 100
}
```

`sales_count` and `sales_30d` show how much each offer really moves; `repurchase_rate` shows how many buyers came back.

#### Specific offers by id or link

```json
{
  "offerIds": ["735353578254", "672929783458"],
  "startUrls": ["https://detail.1688.com/offer/927875250705.html"]
}
```

Each id or link gives one row with the full product page data: tiers, SKU matrix, all images, shop link.

#### Price monitoring on a fixed list

Keep your list of offer ids in `offerIds` and run it on a schedule. Compare `price_tiers` and `stock` between runs to see price changes and stock-outs.

#### Fast search-only export

```json
{
  "searchQueries": ["连衣裙"],
  "maxItems": 500,
  "includeDetails": false
}
```

Rows come from the search results only: tiers, MOQ, supplier, location, years, flags, sales and scores, with the main picture. No SKU matrix. It is faster and uses far less proxy traffic. Same price per product.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `searchQueries` | array of strings | empty | Keywords, one search each, Chinese or English, for example `手机壳`. |
| `offerIds` | array of strings | empty | 1688 offer ids. Each gives one row from the product page. |
| `startUrls` | array of strings | empty | Product links (read like offer ids) and search links (reduced to their keyword). |
| `maxItems` | integer | `50` | Most offers per keyword, 1 to 2,000. 1688 lists at most 2,000 per keyword. |
| `sortBy` | string | `relevance` | `relevance`, `bestSelling`, `priceAsc` or `priceDesc`. |
| `includeDetails` | boolean | `true` | Opens each offer page for the SKU matrix, all images, video, attributes, shop link and ratings. |
| `proxyCountry` | string | `CN` | `CN` (China, most reliable) or `HK` (Hong Kong, works for some runs). |

Give `searchQueries`, `offerIds`, `startUrls` or any mix. Up to 100 searches and 2,000 offer ids per run.

### What data do you get?

One row per offer. Product rows have no `_type` field; the summary, info and error rows do, so a filter on `_type` separates them. Fields marked "details" need `includeDetails` on (or an offer id input); fields marked "search" come from the search results and are empty for offer ids.

| Field | What it is |
|---|---|
| `offer_id`, `offer_url`, `title` | The offer id, the link to detail.1688.com and the listing title (Chinese) |
| `image_url`, `images`, `video_url` | Main picture, all pictures and the video (details) |
| `brand`, `category_id`, `category_name` | Brand, 1688 category id, category name (details) |
| `price_cny`, `price_max_cny`, `price_tiers` | Lowest and highest unit price in CNY, and the quantity ladder |
| `moq`, `unit`, `stock`, `weight_kg`, `mixed_wholesale` | Minimum order, selling unit, units in stock, unit weight, mixed batch allowed |
| `supplier_name`, `supplier_login_id`, `supplier_member_id`, `supplier_user_id` | The supplier company and its 1688 ids |
| `supplier_province`, `supplier_city`, `supplier_location` | Where the supplier is (search) and where it ships from (details) |
| `supplier_type`, `supplier_years`, `is_trust_pass_member` | Business type, years as a Trust Pass member, paid member flag (search) |
| `is_verified_merchant`, `is_super_factory`, `is_industry_seller`, `seller_identity` | Seller marks from the product page (details) |
| `is_factory_inspected`, `is_business_inspected`, `supplier_labels` | Inspection flags and the badges 1688 shows (search) |
| `buyer_protections`, `free_shipping` | Services such as 48小时发货, 7天包换 |
| `shop_url`, `shop_offers_url` | The supplier shop and its product list |
| `sales_count`, `orders_booked`, `sales_30d`, `sales_amount_30d_cny` | Units sold in total, orders, units and CNY in the last 30 days (search) |
| `sales_label`, `orders_30d_label` | The same as the product page shows it, e.g. `1.8万+` (details) |
| `repurchase_rate`, `shop_repurchase_rate`, `shop_repurchase_rate_3m` | Repeat purchase rates |
| `score_overall`, `score_goods`, `score_logistics`, `score_dispute`, `score_consultation`, `score_return` | Supplier scores out of 5 (search) |
| `rating_good_rate`, `rating_goods_grade`, `review_count`, `supplier_service_score` | Review share, rating, review count, shop service score (details) |
| `attributes` | Product attributes, name to value |
| `sku_properties`, `skus`, `sku_count` | Option names and values with pictures, the variant matrix with stock, and how many variants (details) |
| `dropship_supported`, `dropship_channels` | Dropship flag and the authorised channels (details) |
| `delivery_location`, `delivery_promise`, `service_labels` | Shipping origin, delivery promise and service guarantees (details) |
| `listed_at`, `updated_at` | When the offer was listed and last changed (details) |
| `is_advertisement` | True for a paid placement in the search (search) |
| `keyword`, `sort_by`, `page`, `position` | Which search found it and where |
| `details_scraped`, `details_error`, `scraped_at` | Whether the product page was read, why not, and when |

#### Output examples

A product row from a keyword search with product pages on (lists shortened to two entries):

```json
{
  "offer_id": "1002703361674",
  "title": "适用飞利浦E536手机壳E539保护套M6全包透明硅胶清水壳防刮软简约",
  "offer_url": "https://detail.1688.com/offer/1002703361674.html",
  "image_url": "https://cbu01.alicdn.com/img/ibank/O1CN0100sm0X2K0JMM7eCiV_!!2646459494-0-cib.jpg",
  "price_cny": 1.9,
  "price_max_cny": 2.1,
  "price_tiers": [
    {
      "min_quantity": 2,
      "max_quantity": 49,
      "price_cny": 2.1
    },
    {
      "min_quantity": 50,
      "max_quantity": 99,
      "price_cny": 2
    },
    {
      "min_quantity": 100,
      "max_quantity": null,
      "price_cny": 1.9
    }
  ],
  "moq": 2,
  "unit": "个",
  "supplier_name": "福州市哲优电子科技有限公司",
  "supplier_login_id": "哲优电子科技",
  "supplier_member_id": "b2b-2646459494ea1f0",
  "supplier_user_id": "2646459494",
  "supplier_province": "广东",
  "supplier_city": "深圳市",
  "supplier_type": "生产加工",
  "supplier_years": 12,
  "is_trust_pass_member": true,
  "is_factory_inspected": false,
  "is_business_inspected": false,
  "supplier_labels": [
    "诚信通12年"
  ],
  "buyer_protections": [
    "48小时发货",
    "诚e赊"
  ],
  "shop_url": "https://zheyoudianzikeji.1688.com",
  "sales_count": 2098,
  "orders_booked": 176,
  "sales_30d": 312,
  "sales_amount_30d_cny": 600,
  "repurchase_rate": "77%",
  "shop_repurchase_rate": "43%",
  "score_overall": 4,
  "score_goods": 5,
  "score_logistics": 3.57,
  "score_dispute": 5,
  "score_consultation": 1,
  "score_return": 3.67,
  "free_shipping": false,
  "mixed_wholesale": true,
  "category_id": "1042207",
  "attributes": {
    "材质": "硅胶",
    "工艺": "注塑",
    "款式": "保护壳",
    "品牌": "SMAMS",
    "功能": "防摔",
    "适用机型": "飞利浦"
  },
  "is_advertisement": false,
  "keyword": "手机壳",
  "sort_by": "relevance",
  "page": 1,
  "position": 3,
  "details_scraped": true,
  "scraped_at": "2026-10-23T19:22:05.670Z",
  "images": [
    "https://cbu01.alicdn.com/img/ibank/O1CN0100sm0X2K0JMM7eCiV_!!2646459494-0-cib.jpg",
    "https://cbu01.alicdn.com/img/ibank/O1CN01HUpe7U2K0JMGDHldo_!!2646459494-0-cib.jpg",
    "..."
  ],
  "video_url": "https://cloud.video.taobao.com/play/u/2646459494/p/2/e/6/t/1/488430805555.mp4",
  "category_name": "手机保护套",
  "stock": 17900,
  "weight_kg": 0,
  "supplier_location": "广东省深圳市",
  "shop_offers_url": "https://zheyoudianzikeji.1688.com/page/offerlist.html",
  "is_verified_merchant": false,
  "is_super_factory": false,
  "is_industry_seller": false,
  "seller_identity": "default",
  "sales_label": "2000+",
  "orders_30d_label": "600+",
  "rating_good_rate": 99.7,
  "rating_goods_grade": 5,
  "review_count": 9866,
  "supplier_service_score": "4.0分",
  "shop_repurchase_rate_3m": "62.92%",
  "sku_properties": [
    {
      "name": "颜色",
      "values": [
        {
          "name": "TPU软壳【透明】",
          "image_url": null
        }
      ]
    },
    {
      "name": "适用型号",
      "values": [
        {
          "name": "飞利浦E536",
          "image_url": null
        },
        {
          "name": "飞利浦E539",
          "image_url": null
        }
      ]
    }
  ],
  "skus": [
    {
      "sku_id": "6157003146310",
      "spec_id": "d61e1139819977fc2c918dc6e8e2d629",
      "options": "TPU软壳【透明】>飞利浦E536",
      "price_cny": null,
      "stock": 4620,
      "sales_count": 0,
      "is_promotion": false
    },
    {
      "sku_id": "6157003146311",
      "spec_id": "82a03fae9a24a10a4fcdd0c55f7da898",
      "options": "TPU软壳【透明】>飞利浦E539",
      "price_cny": null,
      "stock": 6632,
      "sales_count": 0,
      "is_promotion": false
    }
  ],
  "sku_count": 3,
  "dropship_supported": true,
  "dropship_channels": [
    "Lazada",
    "Amazon",
    "Shopify",
    "Shopee"
  ],
  "delivery_location": "广东省深圳市",
  "delivery_promise": "常发申通快递",
  "listed_at": "2025-12-12T08:22:45.000Z",
  "updated_at": "2026-10-23T05:48:15.000Z"
}
```

An offer id that is gone from 1688 gets an error row and no charge:

```json
{ "_type": "error", "error_type": "not_found", "identifier": "999999999999", "reason": "This offer is no longer listed on 1688 (taken down or removed)." }
```

The summary row closes every run; it is never charged:

```json
{ "_type": "summary", "searches_requested": 1, "searches_read": 1, "pages_read": 1, "products_found": 20, "details_requested": 20, "details_ok": 20, "products_delivered": 20, "charged_for": 20, "http_requests": 23, "http_blocked": 1, "run_seconds": 25 }
```

### Pricing

Pay per event: you pay for the products you receive, plus a flat $0.003 per run, whatever memory you choose. Opening product pages costs nothing extra.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `product-scraped` | Once per offer row stored in your dataset | $4.49 per 1,000 | $4.31 per 1,000 | $4.04 per 1,000 | $3.59 per 1,000 |
| `run-start` | Once per run, after the first request returned offers | $0.003 | $0.003 | $0.003 | $0.003 |

The price of one product is the price per 1,000 divided by 1,000.

Never charged:

- inputs that are not an offer id, a 1688 link or a keyword (each gets an error row);
- an offer id that no longer exists on 1688;
- an offer that a second search of the same run finds again;
- offers past your `maxItems`;
- the summary, info and error rows;
- a run with no valid input, or one where 1688 returned nothing: the start fee is charged only once offers came back;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every day, every Monday at 08:00 and so on).
3. Compare runs on `offer_id`, `price_cny` and `stock` to see new listings, price changes and stock-outs in your category.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

### FAQ

#### What does this actor read?

Two public 1688.com services that 1688's own mobile pages use: the search list behind m.1688.com/offer_search and each offer's public page at detail.1688.com, as anyone sees them without logging in. It does not log in, send inquiries or read contact details hidden behind a sign in.

#### How many products can I get?

Up to 2,000 per keyword (1688 lists at most 2,000 per search), 100 keywords per run, and 2,000 offer ids per run. A results page holds 20 offers and 1688 serves pages 1 to 100 of a keyword (page 101 is empty).

#### Why are some search fields empty for offer ids?

The search results carry fields the product page does not, such as total sales, 30 day sales, the six service scores and the supplier's years as a Trust Pass member. Offer id rows come from the product page, which carries the SKU matrix, all images, stock and ratings instead. Run a keyword search with `includeDetails` on to get both sets.

#### What is the difference between includeDetails on and off?

Off, each row comes from the search results: tiers, MOQ, supplier, location, years, flags, sales, scores and the main picture. On, the product page adds the SKU matrix with stock, all images, video, attributes, shop link, ratings and dropship channels. On is slower and uses more proxy traffic; the price per product is the same.

#### Can I search in English?

Yes, but 1688 is a Chinese marketplace and Chinese keywords return more and better matches. Titles, attributes and supplier names come back in Chinese. Prices are in CNY.

#### Why does a run sometimes stop with a blocked message?

1688 checks every request and sends a verification page to some IPs. The actor uses a China residential proxy and tries up to 8 different IPs for each page; it never solves a verification page. If 1688 refuses six requests in a row, the run stops early instead of paying for pages that return nothing, keeps the rows it has, and the summary row says so. Running again a little later usually works.

#### How long does a run take?

In our tests: 25 seconds for the "Try it" input (20 products, product pages on), 114 seconds for 120 products from 3 keywords with product pages on, and 14 seconds for 120 products from 2 keywords with product pages off. Search pages are read first and product pages afterwards, five at a time. The default time limit is 3,600 seconds; the actor stops before it and keeps every row.

#### Do I need an account, cookies or a proxy?

No account and no cookies. The actor uses Apify's China residential proxy, which is billed to your Apify usage; turning `includeDetails` off keeps proxy traffic to a minimum.

#### Which actor should I use for other marketplaces?

[Alibaba.com B2B Search](https://apify.com/themineworks/alibaba-b2b-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for Alibaba.com suppliers, [Made-in-China Scraper](https://apify.com/themineworks/made-in-china-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for Made-in-China.com, [Taobao Products Scraper](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for Taobao and Tmall retail prices of the same goods, and [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for AliExpress.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. In CSV and Excel, `attributes`, `price_tiers` and `skus` are flattened into columns such as `attributes/材质` and `price_tiers/0/price_cny`.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/1688-wholesale-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http 1688-wholesale-scraper "https://mcp.apify.com/?tools=themineworks/1688-wholesale-scraper"`

#### Is it legal to scrape 1688.com?

The actor reads only public listings that anyone can see without logging in, mostly business information that suppliers publish to be found. You are responsible for how you use the data, including 1688's terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.

### Integrations

- **Google Sheets**: send each run's products to a sheet with Apify's Google Sheets integration; one row per offer fits a sheet as is.
- **Make, Zapier and n8n**: start a run and read its dataset with the Apify apps and nodes, for example "price changes on our 50 offer ids every Monday to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [eBay Product Listings Scraper](https://apify.com/themineworks/ebay-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shopify Store Scraper](https://apify.com/themineworks/shopify-store-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [🛒 TikTok Shop Scraper](https://apify.com/themineworks/tiktok-shop-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Walmart Product & Price Scraper](https://apify.com/themineworks/walmart-product-price-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Vinted Scraper](https://apify.com/themineworks/vinted-listings-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a keyword that returns fewer offers than the site, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Search 1688.com by keyword or offer id and get every product back as one row, with price tiers, MOQ, supplier years and inspection, sales counts, images and SKU variants, no login.*

# Actor input Schema

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

Search words, one per line, Chinese or English. Example: 手机壳, phone case, wireless earbuds. Chinese words return more and better matches. Each keyword is one search. Up to 100 searches per run.

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

1688 offer ids, the number in a product link (detail.1688.com/offer/735353578254.html is id 735353578254). Each id gives one row with the full product page data.

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

Links copied from your browser: product pages such as https://detail.1688.com/offer/735353578254.html or https://m.1688.com/offer/735353578254.html (read like offer ids), and search links such as https://s.1688.com/selloffer/offer_search.htm?keywords=%CA%D6%BB%FA%BF%C7 or https://m.1688.com/offer_search/-CAD6BBFABFC7.html (reduced to their keyword).

## `maxItems` (type: `integer`):

The most offers to return for each keyword. 1688 returns 20 per page and lists at most 2,000 per keyword. Example: 100.

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

How 1688 orders the search results. Relevance is 1688's default ranking.

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

On: each offer's own page is opened too, for the SKU variant matrix with stock, every picture, the video, attributes, shop link, ratings and dropship channels. Off: rows come from the search results only, which is faster and lighter on the proxy. Same price either way.

## `proxyCountry` (type: `string`):

Country of the residential proxy. 1688 refuses most non-Chinese IPs, so China is the default and the most reliable. Hong Kong works for some runs.

## Actor input object example

```json
{
  "searchQueries": [
    "手机壳"
  ],
  "maxItems": 20,
  "sortBy": "relevance",
  "includeDetails": true,
  "proxyCountry": "CN"
}
```

# Actor output Schema

## `results` (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": [
        "手机壳"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/1688-wholesale-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": ["手机壳"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/1688-wholesale-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": [
    "手机壳"
  ],
  "maxItems": 20
}' |
apify call themineworks/1688-wholesale-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/1688-wholesale-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/zdJidtOsgaundiK1p/builds/jIgwTJlgSy0YrAtJp/openapi.json
