# Alibaba Products Scraper (`blueskyscraper/alibaba-products-scraper`) Actor

Scrape Alibaba search results by keyword or search URL: title, price range and quantity price tiers, minimum order, images, certifications, delivery estimate, and the supplier's country, years, rating, response rate and badges. Up to 4,800 products per keyword, with price and MOQ filters.

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

## Pricing

from $0.70 / 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

**Alibaba Products Scraper** turns Alibaba search results into clean rows **without an account**: title, price range and **quantity price tiers**, **minimum order**, images, certifications, delivery estimate and lead time, plus the **supplier's country, years on Alibaba, rating, response rate, orders and badges**. Up to 4,800 products per keyword. **$1 per 1,000 products, no start fee.**

### Tested head-to-head — 29 September 2026

![Alibaba scrapers tested head-to-head: this Actor charges $1 per 1,000 products and suppliers, $3 per 1,000 product pages and $2 per 1,000 buying requests, and found 20 suppliers in 20.5 seconds](https://api.apify.com/v2/key-value-stores/tZJ3TnhQJ1jqUQVXq/records/alibaba-tested-2026-09-29.png)

The same `yoga mat` requests went to this Actor and to the most-used Alibaba scrapers on the Apify Store: 20 products, 20 suppliers, 20 buying requests and one product page.

| | This Actor | The others |
|---|---|---|
| Price per 1,000 products | **$1** | $1.22–5.25 |
| Price per 1,000 suppliers | **$1** | $1.25–5.25 |
| Price per 1,000 product pages | **$3** | $10.00 |
| Price per 1,000 buying requests (RFQ) | **$2** | $30.25 |
| 20 suppliers found in | **20.5 s** | 19.2–189.3 s |
| Fields in a product row | **54**, flat columns | 17, or nested objects |
| Start fee | **none** | all 5 charge one |

### What is Alibaba Products Scraper?

A tool for **product sourcing, price research and dropshipping**: type what you would search on Alibaba, or paste a search URL with your filters, and get every product as a row. Switch on **Open each product page** for the full specifications of each result.

| Filter | What it does |
|---|---|
| **Minimum / maximum price** | Alibaba's price filter |
| **Minimum order at most** | products you can order in small quantities |
| **Supplier countries** | `CN`, `IN`, `VN`, `TR`… |
| **Trade Assurance / Verified / Verified Pro** | only suppliers with these badges |
| **Minimum supplier rating** | e.g. 4.5 and up |
| **Skip sponsored listings** | paid placements left out, free |

### What data do you get?

`productId`, `title`, `url`, `priceText`, `priceMin`, `priceMax`, `priceTiers`, `minOrder`, `minOrderText`, `unit`, `category`, `image`, `images`, `hasVideo`, `productRating`, `deliveryEstimate`, `leadTimeDays`, `certifications`, `promotions`, `isAd`, `searchRank`, and the supplier: `supplierName`, `supplierCountry`, `supplierYears`, `supplierType`, `goldSupplier`, `verifiedSupplier`, `verifiedPro`, `tradeAssurance`, `supplierResponseRate`, `supplierOrders`, `supplierOrdersValue`, `supplierEmployees`, `supplierFactorySizeM2`, `supplierMainProducts`, `supplierRating`, `supplierReviewCount`, `supplierUrl`.

### How much does it cost?

| Row | Price |
|---|---|
| **Product** (search result) | $0.001 — $1 per 1,000 |
| **Product page** (full details) | $0.003 — $3 per 1,000 |
| **Supplier** | $0.001 — $1 per 1,000 |
| **Buying request (RFQ)** | $0.002 — $2 per 1,000 |

No start fee and no proxy charge. Error rows and rows removed by your filters are never billed. **Maximum rows per run** is a hard ceiling on the bill.

### ⬇️ Input

```json
{
    "keywords": ["led strip light"],
    "maxPrice": 5,
    "maxMinOrder": 10,
    "supplierCountries": ["CN"],
    "maxResultsPerInput": 1000
}
```

### ⬆️ Output

```json
{
    "type": "product",
    "title": "SHENGDE PU Rubber Yoga Mat Natural Anti Slip Sweat Absorbent Custom Logo Wholesale Animal Print Black Oval Arch",
    "url": "https://www.alibaba.com/product-detail/_1601190991934.html",
    "priceText": "US $7.50-$9.99",
    "priceTiers": [{ "minQuantity": 100, "maxQuantity": 299, "price": 9.99 }, { "minQuantity": 300, "maxQuantity": 999, "price": 8.99 }],
    "minOrderText": "100 pieces",
    "supplierName": "Fuqing Shengde Ruibo Technology Co., Ltd.",
    "supplierYears": 3,
    "supplierRating": 4.5
}
```

### ❓ FAQ

#### Is it legal to scrape Alibaba?

It reads only what alibaba.com shows any visitor without an account: public listings, supplier profiles and public buying requests. Names of contact people and buyers are personal data under laws like the GDPR — have a lawful reason to process them.

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

No. The Actor needs no login and no proxy settings; if Alibaba shows a slider check, the request is retried on a fresh connection by itself.

#### Why are some fields empty?

Suppliers fill in their profiles differently — staff, factory size or certifications appear only when the supplier published them.

#### How many products can I get per keyword?

Alibaba shows up to 100 pages of 48 products — 4,800 per search. Split broad searches into several keywords or price ranges.

### You might also like

| Actor | What it does |
|---|---|
| [Alibaba Scraper](https://apify.com/blueskyscraper/alibaba-scraper) | Products, product pages, suppliers and buying requests in one Actor |
| [Alibaba Product Details Scraper](https://apify.com/blueskyscraper/alibaba-product-details-scraper) | Full product pages: specifications, variants, lead time, sample price |
| [Alibaba Supplier Scraper](https://apify.com/blueskyscraper/alibaba-supplier-scraper) | Suppliers and manufacturers for any product, one row each |
| [Alibaba RFQ Scraper](https://apify.com/blueskyscraper/alibaba-rfq-scraper) | Buyers' requests for quotation: product, quantity, country |

# Actor input Schema

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

<b>Products</b> — Alibaba search results: title, price and quantity price tiers, minimum order, supplier with years, country, rating and response rate. <b>Product details</b> — the full product page: specifications, variants, lead time, sample price, sold count, supplier contact. <b>Suppliers</b> — one row per company selling a product. <b>Buying requests</b> — RFQs posted by buyers: product, quantity, country.

## `keywords` (type: `array`):

What you would type into the Alibaba search box: <code>yoga mat</code>, <code>led strip light</code>, <code>custom t-shirt</code>. Each keyword is one search.

## `productUrls` (type: `array`):

Product pages for <b>Product details</b>: <code>https://www.alibaba.com/product-detail/\_1601617846699.html</code> or just the ID <code>1601617846699</code>.

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

Any alibaba.com link, routed automatically: a search results page with your filters (<code>alibaba.com/trade/search?SearchText=…</code>), a product page, or a buying-requests search on sourcing.alibaba.com.

## `maxResultsPerInput` (type: `integer`):

Cap for each keyword or URL, not for the whole run. Alibaba shows up to 4,800 products per search (100 pages of 48).

## `minPrice` (type: `number`):

Alibaba's own price filter.

## `maxPrice` (type: `number`):

Alibaba's own price filter.

## `maxMinOrder` (type: `integer`):

Only products you can order in this quantity or less — e.g. <code>10</code> for small test orders.

## `supplierCountries` (type: `array`):

Two-letter codes: <code>CN</code>, <code>IN</code>, <code>VN</code>, <code>TR</code>, <code>PK</code>, <code>US</code>. One code uses Alibaba's filter; several are filtered row by row. Empty = all.

## `tradeAssuranceOnly` (type: `boolean`):

Suppliers covered by Alibaba Trade Assurance.

## `verifiedSupplierOnly` (type: `boolean`):

Suppliers inspected by a third party (Alibaba's Verified Supplier badge).

## `verifiedProOnly` (type: `boolean`):

Alibaba's highest supplier tier.

## `minSupplierRating` (type: `number`):

Store rating out of 5, e.g. <code>4.5</code>.

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

Alibaba's Best match, or suppliers who answer fastest first.

## `excludeAds` (type: `boolean`):

Leave out products placed by paid ads (marked <code>isAd</code>). Skipped rows are free.

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

Products mode: one full product-page row per result — specifications, variants, lead time, sample price, sold count, supplier contact person — billed as a product page.

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

Stop after this many rows in the whole run — a hard ceiling on cost.

## `monitoringStoreName` (type: `string`):

Give the run a name (e.g. <code>new-yoga-mats</code>) and every later run with the same name returns <b>only rows it has not delivered before</b> — new products, new suppliers, new buying requests. Schedule it daily. Empty = normal run.

## Actor input object example

```json
{
  "mode": "products",
  "keywords": [
    "yoga mat"
  ],
  "maxResultsPerInput": 50,
  "tradeAssuranceOnly": false,
  "verifiedSupplierOnly": false,
  "verifiedProOnly": false,
  "sortBy": "bestMatch",
  "excludeAds": false,
  "includeDetails": false,
  "maxItems": 10000
}
```

# Actor output Schema

## `rows` (type: `string`):

One row per product, product page, supplier or buying request; error rows explain inputs that could not be read.

# 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 = {
    "keywords": [
        "yoga mat"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("blueskyscraper/alibaba-products-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 = { "keywords": ["yoga mat"] }

# Run the Actor and wait for it to finish
run = client.actor("blueskyscraper/alibaba-products-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 '{
  "keywords": [
    "yoga mat"
  ]
}' |
apify call blueskyscraper/alibaba-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,blueskyscraper/alibaba-products-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/5QczPcdhCiceBj7dt/builds/vmalb4MVo8LA9QuFh/openapi.json
