# 1688.com Scraper: Wholesale Products, Prices & Suppliers (`dltik/1688-scraper`) Actor

Scrape 1688.com (Alibaba wholesale). Get MOQ price ladders, SKUs/variants with stock, images, video and supplier info by offer ID/URL, or search by keyword. Built for sourcing, dropshipping & Amazon FBA. $10/1K offers.

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

## Pricing

$10.00 / 1,000 offer scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 1688 Scraper: Wholesale Prices, Suppliers & Reverse Image Search

> Scrape [1688.com](https://www.1688.com) (Alibaba's Chinese wholesale marketplace) by offer ID, URL, keyword, or a product photo. Get MOQ price ladders, SKUs with live stock, images, attributes, and the supplier, with titles and specs translated to English. Optional China-to-worldwide landed cost. No proxy, no login, no 1688 account.

⭐ **Bookmark this actor** to keep it on top of your Apify dashboard.

### What is the 1688 Scraper?

The **1688 Scraper** extracts wholesale product and supplier data from [1688.com](https://www.1688.com) and returns it as clean JSON or CSV. Give it an offer ID or a `detail.1688.com` URL and get the full offer: the **quantity-break price ladder** (the price at each MOQ tier), variants and SKUs with live stock, every product image, the product attributes, and the **supplier** (company name and shop URL). You can also **search by keyword** to discover offers, or run a **reverse image search** from a competitor's product photo to find the exact same item and its factories on 1688.

Unlike browser-based tools, this **1688 Scraper** runs on a pure-HTTP backend that reads the official Alibaba wholesale data server-side, so there is no China residential proxy to pay for, no login wall, and no captcha. Titles and product attributes come back **translated to English**, and every offer can be enriched with a **landed cost** (product price plus China-to-destination shipping) so you see the number that actually decides a sourcing deal.

### 1688 sourcing use cases

- **Reverse image sourcing**: Drop a product photo from a TikTok or Facebook ad and get the matching 1688 offers with prices and suppliers.
- **Dropshipping research**: Pull cost, MOQ, and stock for hundreds of offers to size margins before you list.
- **Amazon FBA / private label**: Compare suppliers of the same product by price ladder and MOQ tiers.
- **Landed-cost estimation**: Turn a 1688 price into a delivered cost to France, the US, Germany, or anywhere, using the product weight.
- **Catalog enrichment**: Fill your PIM or Shopify store with 1688 images, English titles, variants, and specs keyed by offer ID.

### Input

Set a `mode` (`detail`, `search`, or `image`) and a list of `inputs`. Minimal example:

```json
{
  "mode": "detail",
  "inputs": ["642952568827"],
  "shippingCountry": "FR"
}
````

- **detail**: offer IDs or `detail.1688.com` URLs, one full offer record each (price ladder, SKUs, images, attributes, supplier).
- **search**: keywords in English (e.g. `baby bag`) or Chinese, returns a list of offers. Optional `priceRange` filter in CNY.
- **image**: one or more image URLs (a product photo), returns the same-product offers via reverse image search.

Set `shippingCountry` to a 2-letter code (e.g. `FR`, `US`, `DE`) in `detail` mode to enrich each offer with the **landed cost**.

### Output

One record per offer. A trimmed `detail` example:

```json
{
  "type": "offer",
  "offerId": "642952568827",
  "title": "Baby medicine feeder syringe pacifier set",
  "unit": "set",
  "priceLadder": [
    {"beginAmount": 3, "price": "4.00"},
    {"beginAmount": 100, "price": "3.50"}
  ],
  "priceMin": 3.5, "priceMax": 4.0, "moq": 3,
  "skus": [{"spec": "transparent", "skuId": "5280910728381", "stock": 779034}],
  "attributes": {"Material": "Silicone", "Age group": "0-3 years"},
  "images": ["https://cbu01.alicdn.com/img/ibank/..."],
  "supplier": {"companyName": "Jinhua Congke Technology Co., Ltd."},
  "landedCost": {"country": "FR", "cheapest": {"totalFee": 62.75, "currency": "CNY", "deliveryDays": "8-12"}},
  "url": "https://detail.1688.com/offer/642952568827.html"
}
```

### Pricing

This actor uses **PAY\_PER\_EVENT**: **$0.01 per offer** ($10 / 1,000 offers) in every mode. There is no charge for failed runs, and blocked requests are never charged.

### Automate & schedule

Schedule the **1688 Scraper** to re-run daily or weekly to keep supplier prices, MOQ tiers, and stock current, or wire it to Google Sheets, Slack, or your PIM through Apify integrations. Recurring runs keep your sourcing data fresh, so you set it once and forget it.

### FAQ: 1688 API, image search & English data

**Is there a free 1688 API?** 1688's official open API is limited to China-registered partners. This actor reads the public wholesale data for you, with no partner account, no app review, and no 1688 login.

**How do I find a 1688 supplier from a product photo?** Use `image` mode with the photo URL. The actor runs a reverse image search on 1688 and returns the same-product offers, so you can source directly from a competitor's ad creative.

**Does the 1688 scraper require a 1688 account or a China proxy?** No. It runs on a pure-HTTP backend, so there is no login, no cookies, and no residential proxy to buy.

**Can I get 1688 product titles and specs in English?** Yes. Titles and product attributes are returned translated to English, alongside the original.

**How do I calculate the landed cost of a 1688 product to my country?** Set `shippingCountry` in `detail` mode. Each offer is enriched with China-to-destination shipping options (cheapest and fastest) based on the product weight, giving you product plus shipping in one record.

**What are the best alternatives for scraping 1688 without a proxy?** Most 1688 scrapers drive a headless browser through a paid China residential proxy. This actor skips that entirely by querying the wholesale data server-side, which is why it is cheaper and does not hit login walls.

***

⭐ **Found this useful? Bookmark it.** Apify ranks actors by bookmarks, and the more you bookmark, the more you support the dev.

#### Related actors

- [TikTok Scraper](https://apify.com/dltik/tiktok-scraper): profiles, videos, hashtags, and trending sounds for finding products to source.
- [AliExpress Reviews Scraper](https://apify.com/dltik/aliexpress-reviews-scraper): validate a product's demand before you order from the factory.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. 'detail' = full product by offer ID or detail URL (MOQ price ladder, SKUs, images, attributes, supplier). 'search' = product list by keyword. 'image' = find offers of the same product from an image URL (reverse image search). Titles and attributes come translated to English.

## `inputs` (type: `array`):

Offer IDs or detail URLs for 'detail' (e.g. 642952568827 or https://detail.1688.com/offer/642952568827.html), keywords for 'search' (e.g. 'baby bag'), or image URLs for 'image' (e.g. a competitor's product photo).

## `maxResults` (type: `integer`):

Maximum offers to return per run (search/image). Detail mode returns one record per input.

## `shippingCountry` (type: `string`):

Optional 2-letter country code (e.g. FR, US, DE). When set in 'detail' mode, each offer is enriched with YunExpress China→destination shipping options (cheapest + fastest + all) using the product weight — giving you the landed cost (product + shipping).

## `priceRange` (type: `array`):

Optional \[min, max] price filter in CNY for 'search' mode, e.g. \[1, 20].

## Actor input object example

```json
{
  "mode": "detail",
  "inputs": [
    "642952568827"
  ],
  "maxResults": 50
}
```

# Actor output Schema

## `results` (type: `string`):

1688 offers with price ladders, SKUs, images and supplier info.

# 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 = {
    "inputs": [
        "642952568827"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/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 = { "inputs": ["642952568827"] }

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

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

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

```

## CLI example

```bash
echo '{
  "inputs": [
    "642952568827"
  ]
}' |
apify call dltik/1688-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=dltik/1688-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "1688.com Scraper: Wholesale Products, Prices & Suppliers",
        "description": "Scrape 1688.com (Alibaba wholesale). Get MOQ price ladders, SKUs/variants with stock, images, video and supplier info by offer ID/URL, or search by keyword. Built for sourcing, dropshipping & Amazon FBA. $10/1K offers.",
        "version": "1.0",
        "x-build-id": "OFKvcOggeZlOHuOWA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dltik~1688-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dltik-1688-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/dltik~1688-scraper/runs": {
            "post": {
                "operationId": "runs-sync-dltik-1688-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/dltik~1688-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-dltik-1688-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "inputs"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "detail",
                            "search",
                            "image"
                        ],
                        "type": "string",
                        "description": "What to scrape. 'detail' = full product by offer ID or detail URL (MOQ price ladder, SKUs, images, attributes, supplier). 'search' = product list by keyword. 'image' = find offers of the same product from an image URL (reverse image search). Titles and attributes come translated to English.",
                        "default": "detail"
                    },
                    "inputs": {
                        "title": "Inputs",
                        "type": "array",
                        "description": "Offer IDs or detail URLs for 'detail' (e.g. 642952568827 or https://detail.1688.com/offer/642952568827.html), keywords for 'search' (e.g. 'baby bag'), or image URLs for 'image' (e.g. a competitor's product photo).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum offers to return per run (search/image). Detail mode returns one record per input.",
                        "default": 50
                    },
                    "shippingCountry": {
                        "title": "Shipping country (landed cost)",
                        "type": "string",
                        "description": "Optional 2-letter country code (e.g. FR, US, DE). When set in 'detail' mode, each offer is enriched with YunExpress China→destination shipping options (cheapest + fastest + all) using the product weight — giving you the landed cost (product + shipping)."
                    },
                    "priceRange": {
                        "title": "Price range (search, CNY)",
                        "type": "array",
                        "description": "Optional [min, max] price filter in CNY for 'search' mode, e.g. [1, 20]."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
