# 1688 Product Scraper - Prices, MOQ & Suppliers (`webdata_labs/1688-scraper`) Actor

Scrape 1688 product prices, MOQ, suppliers, locations, and product images from offer URLs or IDs. Clean API-ready output with per-offer diagnostics.

- **URL**: https://apify.com/webdata\_labs/1688-scraper.md
- **Developed by:** [WebData Labs](https://apify.com/webdata_labs) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 3 total users, 1 monthly users, 83.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Product Scraper - Prices, MOQ & Supplier Data

Turn 1688 product URLs into clean, structured data. Extract current product titles, CNY prices, minimum order quantities, supplier details, locations, and product images for sourcing, catalog research, and price monitoring.

Provide `detail.1688.com` offer URLs or numeric offer IDs. The Actor returns one normalized dataset row for every successfully processed product, ready for JSON, CSV, Excel, API, webhook, or database workflows.

### What you can do with this 1688 scraper

- Compare wholesale prices and minimum order quantities across products.
- Build or refresh a sourcing catalog from selected 1688 offers.
- Monitor supplier listings and product prices on a schedule.
- Export supplier names, seller identifiers, and locations.
- Collect canonical product image URLs for catalog review.
- Connect the results to Make, Zapier, webhooks, spreadsheets, or your application.

### Data extracted

| Field                  | Description                                  |
| ---------------------- | -------------------------------------------- |
| `offerId`              | Unique 1688 offer identifier                 |
| `url`                  | Canonical product URL                        |
| `title`                | Product title from the offer page            |
| `priceMin`, `priceMax` | Observed price range in CNY                  |
| `minimumOrderQuantity` | Minimum order quantity when available        |
| `unit`                 | Order unit used by the supplier              |
| `companyName`          | Supplier or company name                     |
| `sellerLoginId`        | Seller or member identifier                  |
| `location`             | Supplier or offer location                   |
| `images`               | Product image URLs                           |
| `attributes`           | Additional product attributes when available |
| `scrapedAt`            | Extraction timestamp                         |

### Who this Actor is for

- Amazon, eBay, Etsy, and Shopify sellers researching products.
- Sourcing agents and importers comparing wholesale offers.
- Procurement teams building supplier shortlists.
- Analysts monitoring selected products or suppliers.
- Developers adding 1688 product data to an application or workflow.

### How to scrape 1688 product data

1. Copy one or more 1688 product URLs or offer IDs.
2. Paste them into **Offer URLs** or **Offer IDs**.
3. Keep the residential proxy enabled for reliable access.
4. Run the Actor.
5. Open the dataset and export the results in your preferred format.

No 1688 cookie is normally required. If a specific offer requires a logged-in session, you can optionally provide a fresh Cookie header in **Session cookie**.

### Input example

```json
{
    "offerUrls": [{ "url": "https://detail.1688.com/offer/927875250705.html" }],
    "offerIds": ["1063153988432"],
    "maxProducts": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
````

Duplicate URLs and IDs are automatically normalized by offer ID. The optional session cookie is treated as a secret and is never written to logs or dataset rows.

### Output example

```json
{
    "recordType": "product",
    "offerId": "927875250705",
    "url": "https://detail.1688.com/offer/927875250705.html",
    "title": "Example wholesale product",
    "currency": "CNY",
    "priceMin": 7.5,
    "priceMax": 8,
    "minimumOrderQuantity": 30,
    "unit": "piece",
    "companyName": "Example Supplier Co.",
    "sellerLoginId": "example_supplier",
    "location": "Guangdong",
    "images": ["https://cbu01.alicdn.com/img/ibank/example-product.jpg"],
    "attributes": {},
    "source": "1688",
    "scrapedAt": "2026-07-16T12:00:00.000Z"
}
```

The dataset contains successful product records only. If an offer is unavailable or blocked by a verification page, its URL and error code appear in the run summary under `failedOffers`. Transient page failures are retried automatically. If every valid offer fails, the run is marked failed instead of reporting a misleading empty success.

### How much does it cost to scrape 1688?

The Actor currently uses Apify's pay-per-usage model. Your final cost depends mainly on the number of products processed, run time, and residential proxy traffic. You can limit each run with `maxProducts` before processing a large list.

### Using the Apify API

Run this Actor from the Apify Console, REST API, JavaScript or Python client, schedules, webhooks, Make, or Zapier. The normalized dataset can be downloaded as JSON, CSV, Excel, XML, or RSS.

### Ready-to-run examples

- [Check one product's price and MOQ](https://apify.com/webdata_labs/1688-scraper/examples/check-1688-product-price-and-moq)
- [Compare selected supplier offers](https://apify.com/webdata_labs/1688-scraper/examples/compare-1688-supplier-offers)
- [Export products for sourcing](https://apify.com/webdata_labs/1688-scraper/examples/export-1688-products-for-sourcing)

### Limits

- This Actor processes known 1688 product URLs or offer IDs; it does not perform keyword search.
- 1688 may occasionally request browser verification for a specific offer or IP. The Actor rotates residential sessions and reports unresolved offers in `failedOffers`.
- Fields that are not displayed on an offer page may be returned as `null` or an empty object.
- Use the Actor only for data you are authorized to access and follow applicable website terms and laws.

### FAQ

#### Can I scrape multiple 1688 products in one run?

Yes. Add multiple URLs, multiple numeric offer IDs, or both. Duplicate products are automatically removed.

#### Do I need a 1688 account?

Most public offer pages work without a login. For session-restricted products, provide an optional fresh Cookie header from your own authorized 1688 session.

#### Can I schedule price monitoring?

Yes. Save the input as an Apify task and run it on a daily, weekly, or custom schedule. Each result includes `scrapedAt` for comparison over time.

#### Why is an offer listed in `failedOffers`?

The product may be unavailable, require a logged-in session, or have returned a 1688 verification page. Try the URL in your browser, refresh the optional session cookie, and run it again.

### Support

If a product is not extracted correctly, open an issue with the Actor run URL, the affected offer URL, and the expected field. Redact private input values and never include session cookies in an issue.

# Actor input Schema

## `offerUrls` (type: `array`):

Public 1688 product detail URLs to extract.

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

Numeric 1688 offer IDs. You can use this instead of URLs.

## `sessionCookie` (type: `string`):

Optional Cookie header from your logged-in 1688 browser session. Stored only in the run input; never written to logs or datasets.

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

Safety limit for this run.

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

Residential Chinese or nearby proxy sessions are recommended for 1688.

## Actor input object example

```json
{
  "offerUrls": [
    {
      "url": "https://detail.1688.com/offer/927875250705.html"
    }
  ],
  "maxProducts": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset containing successfully extracted 1688 products.

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

Counts, success rate, and non-billable failed-offer diagnostics.

# 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 = {
    "offerUrls": [
        {
            "url": "https://detail.1688.com/offer/927875250705.html"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdata_labs/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 = {
    "offerUrls": [{ "url": "https://detail.1688.com/offer/927875250705.html" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("webdata_labs/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 '{
  "offerUrls": [
    {
      "url": "https://detail.1688.com/offer/927875250705.html"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call webdata_labs/1688-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "1688 Product Scraper - Prices, MOQ & Suppliers",
        "description": "Scrape 1688 product prices, MOQ, suppliers, locations, and product images from offer URLs or IDs. Clean API-ready output with per-offer diagnostics.",
        "version": "0.1",
        "x-build-id": "hkw8ndwJTt49fua0F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/webdata_labs~1688-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-webdata_labs-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/webdata_labs~1688-scraper/runs": {
            "post": {
                "operationId": "runs-sync-webdata_labs-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/webdata_labs~1688-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-webdata_labs-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",
                "properties": {
                    "offerUrls": {
                        "title": "1688 offer URLs",
                        "type": "array",
                        "description": "Public 1688 product detail URLs to extract.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "offerIds": {
                        "title": "Offer IDs",
                        "type": "array",
                        "description": "Numeric 1688 offer IDs. You can use this instead of URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sessionCookie": {
                        "title": "1688 session cookie",
                        "type": "string",
                        "description": "Optional Cookie header from your logged-in 1688 browser session. Stored only in the run input; never written to logs or datasets."
                    },
                    "maxProducts": {
                        "title": "Maximum products",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Safety limit for this run.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential Chinese or nearby proxy sessions are recommended for 1688.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
