# Alibaba.com Scraper (`dami_studio/alibaba-com-scraper`) Actor

Alibaba.com scraper API for B2B products by search term. Each row has the price range, minimum order quantity and unit, supplier name, country, years on Alibaba, rating, review count, certifications and link, in the currency you pick. No login. $0.85 per 1,000 products.

- **URL**: https://apify.com/dami_studio/alibaba-com-scraper.md
- **Developed by:** [Dami's Studio](https://apify.com/dami_studio) (community)
- **Categories:** E-commerce, Lead generation
- **Features:** Limited permissions, Multi-tenant, Server interface
- **Stats:** 14 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.82 / 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.com scraper for B2B product searches, one row per listing**: the price range, the minimum
order quantity and its unit, the supplier's name, country and years on Alibaba, rating and review
count, three sub-scores, certifications and images. No account, no API key.

A wholesale listing does not have one price. It has a range that moves with quantity, and a floor
you have to reach before anyone will sell to you, so every row carries `priceMin`, `priceMax` and
`minOrderQuantity` instead of a single number. The quantity ladder itself is not included. Two runs of the same term overlap but
never match exactly.

| | |
|---|---|
| **Input** | Search terms, or Alibaba.com search URLs |
| **Output** | One row per product: price range, MOQ and unit, supplier name, country, years on Alibaba, rating, review count, sub-scores, certifications, images |
| **Ceiling** | 20,000 products per run |
| **Account needed** | None |
| **Price** | $0.85 per 1,000 products on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 5,800 |

### 🔍 What Alibaba.com Scraper does

There are two ways in, and they work together in one run.

**Search terms.** One per line. Each term is walked separately, 40 products a page, and the results
are de-duplicated across all of them. A product found by two of your terms is written once and
charged once.

**URLs.** Paste an Alibaba.com search or listing page and the term is read straight out of it.

**Pin the currency.** Alibaba prices in whichever currency the request asks for, so pick one in
**Price currency** and every row in the run uses it. All ten options were checked live and convert
the price rather than just relabelling it.

**The filters run here, not on Alibaba.** Price, MOQ, rating, review count, supplier years and
country are applied after each page is read, which has one useful side effect: a product a filter
rejects is never charged.

### 📋 What data you get from each Alibaba.com product

| What you get | Field |
|---|---|
| Product id, title and link | `productId`, `title`, `productUrl` |
| The price range as numbers and as printed, and its currency | `priceMin`, `priceMax`, `priceText`, `currency` |
| Promotion price and discount, when Alibaba shows them | `promotionPrice`, `discountText` |
| Minimum order and what it is counted in | `minOrderQuantity`, `minOrderUnit`, `moqText` |
| Units sold, when shown | `soldCount`, `soldText` |
| The supplier: name, id, country, years on Alibaba, storefront and product list | `supplierName`, `supplierId`, `supplierCountry`, `supplierYears`, `supplierUrl`, `supplierProductsUrl` |
| Rating, review count, three sub-scores and the star level | `rating`, `reviewCount`, `supplierServiceScore`, `shippingScore`, `productScore`, `starLevel` |
| Compliance marks and listing tags | `certifications`, `tags` |
| Images | `imageUrl`, `images` |
| Which of your terms found it, and where it sat | `searchKeyword`, `page`, `position` |

### ▶️ How to scrape Alibaba.com products

1. Open [Alibaba.com Scraper](https://apify.com/dami_studio/alibaba-com-scraper) and click
   **Try for free**.
2. Put your terms into **Search terms**, one per line.
3. Pick your **Price currency**, then set **Maximum products**.
4. Click **Start**.
5. Download the dataset as JSON, CSV or Excel.

Run it with everything empty and you get one labelled sample row, free.

### 💰 How much does it cost to scrape Alibaba.com products?

**$0.85 per 1,000 products** on the Free plan. Paid plans pay a little less: $0.84 on Starter, $0.83 on Scale and $0.82 on Business. On the free plan, the $5
Apify gives you each month covers about 5,800 products.

One row is one product. A product two of your terms both find is charged once. The sample row, every
diagnostic row and every product your filters dropped are not charged, and a term that finds nothing
produces no product rows to pay for.

### 📥 What you give it

```json
{
  "searchQueries": ["led light", "stainless steel water bottle"],
  "maxItems": 200,
  "currency": "USD",
  "maxMoq": 500
}
```

| Field | Default | What it is |
|---|---|---|
| `searchQueries` | none | One term per line. More terms return more unique products than paging one term deeper. |
| `startUrls` | none | Alibaba.com search or listing URLs. Works alongside the terms. |
| `maxItems` | `50` | Hard cap on products across every term, 1 to 20,000. You pay per product returned, so this is your spend cap. |
| `currency` | `USD` | `USD`, `EUR`, `GBP`, `JPY`, `INR`, `CAD`, `AUD`, `BRL`, `RUB` or `SGD`. |
| `minPrice`, `maxPrice` | none | Bounds on the price range, in the currency above. `minPrice` keeps products whose range reaches it, `maxPrice` keeps those whose range starts at or below it. Whole numbers only. |
| `maxMoq` | none | Keep products you can order at or below this quantity. Units differ per product, so this compares the number only. |
| `minSupplierYears` | none | Years the supplier has been selling on Alibaba. Present on every product. |
| `minReviewCount`, `minRating` | none | Supplier review count and score out of 5, whole numbers only. Products with no review data are dropped by any value above 0. |
| `supplierCountries` | none | Two-letter codes like `CN`, `HK`, `IN`, `VN`. |
| `maxPagesPerQuery` | `100` | Page ceiling per term, 40 products a page. Pages overlap, so each one adds fewer new products as you go deeper. |
| `requestDelayMs` | `500` | Gap between requests in milliseconds. Raise it if a run ends early. |
| `proxyConfiguration` | none | Optional. Leave it alone unless you want the run to go out through a network of your own. |

### 📤 What you get back

A real product row from a run on 20 September 2026 for `led light`, with the `images` list trimmed:

```json
{
  "productId": "1600196937716",
  "title": "24v Constant Current Cc Led Strip Led Strip Lights 16.4 Feet Dimmable White Led Light Strip Flexible Led Tape Light 19.2W 8mm",
  "productUrl": "https://www.alibaba.com/product-detail/24v-Constant-Current-Cc-Led-Strip_1600196937716.html",
  "priceMin": 2.82,
  "priceMax": 2.96,
  "priceText": "$2.82-2.96",
  "currency": "USD",
  "promotionPrice": null,
  "discountText": null,
  "minOrderQuantity": 300,
  "minOrderUnit": "meters",
  "moqText": "Min. order: 300 meters",
  "soldCount": null,
  "soldText": null,
  "supplierName": "Shenzhen Surmountor Lighting Co., Limited",
  "supplierId": "218662891",
  "supplierCountry": "CN",
  "supplierYears": 13,
  "supplierUrl": "https://surmountor.en.alibaba.com/",
  "supplierProductsUrl": "https://surmountor.en.alibaba.com/productlist.html",
  "rating": 5,
  "reviewCount": 2,
  "supplierServiceScore": 5,
  "shippingScore": 5,
  "productScore": 5,
  "starLevel": 3,
  "certifications": ["Declaration of Conformity", "UKCA", "RoHS", "CE"],
  "tags": [],
  "imageUrl": "https://s.alicdn.com/@sc04/kf/H185b357c6486403fbbfa27ec0a46d035J.jpg_300x300.jpg",
  "images": ["https://s.alicdn.com/@sc04/kf/H185b357c6486403fbbfa27ec0a46d035J.jpg_300x300.jpg", "..."],
  "searchKeyword": "led light",
  "page": 1,
  "position": 1,
  "scrapedAt": "2026-09-20T07:01:33.944Z"
}
```

| Field | How to read it |
|---|---|
| `priceMin`, `priceMax`, `priceText` | The bottom and top of the range as numbers, plus the string Alibaba printed. |
| `minOrderQuantity`, `minOrderUnit` | The MOQ and what it is counted in: pieces, sets, meters, rolls. Compare the units before comparing the numbers. |
| `rating`, `reviewCount` | The supplier's score out of 5 and how many reviews it came from. Empty when a product carries no review data. |
| `supplierServiceScore`, `shippingScore`, `productScore` | Alibaba's three sub-scores behind that rating. |
| `starLevel`, `certifications` | Alibaba's own supplier star level, and the compliance marks listed on the card. |
| `promotionPrice`, `discountText`, `soldCount` | Filled in only when the card shows them. `null` otherwise. |

### 🧾 Reading the output

| Row | How to spot it | Billed |
|---|---|---|
| A product | It has a `productId` and no `_sample` or `_diagnostic` key | yes |
| The sample row | `_sample: true`, only when no search term or URL was given | no |
| A diagnostic | `_diagnostic: true` and a `status` | no |

Product rows carry no `charged` flag; the sample and diagnostic rows carry `charged: false`. The
sample row has a `productId` and prices like a real one, so to keep only products, drop every row
with `_sample` or `_diagnostic`.

| Status | What it means |
|---|---|
| `NO_RESULTS` | Nothing came back for that term, or your filters rejected everything on every page. |
| `BAD_INPUT` | That entry is not a usable term or an Alibaba.com URL. |
| `SEARCH_FAILED` | Alibaba answered, but not with the listing data it normally carries. |
| `NOT_SERVED` | This product was not served this run. Re-run it later. Runs before 13 October 2026 wrote `BLOCKED` here. |
| `TIME_LIMIT` | The run got close to its time limit and stopped on its own. The products delivered before that are complete and charged. Give the run more time, or ask for fewer products, to get the rest. |
| `UNEXPECTED_ERROR` | The run stopped early on an unexpected error. The results before this row are kept. |

Notes never fail the run, even a `TIME_LIMIT` stop before any product came back.

### 💡 What people use it for

- Sourcing: pulling a category and sorting by MOQ to find who will sell in small quantities.
- Comparing what the same item costs across twenty suppliers before asking anyone for a quote.
- Building a supplier shortlist with years on Alibaba, rating and sub-scores already on the row.
- Keeping only listings that carry `CE` or `RoHS` in `certifications` before an import.

### 🚧 What it does not do

- **No quantity ladder.** You get the range, not the tier table that says what 500 units cost
  against 5,000. That lives on the product page.
- **Prices are ex-works.** Shipping, duty and tax are not in them.
- **No product detail.** Specs, full descriptions and the supplier's own certificates are on the
  product page.
- **No Trade Assurance filter.** Check it on the product page.
- **Two runs of the same term will not match exactly.** If you need a fixed set, keep your own list
  of `productId` values.
- **The filters take whole numbers only.** A `minPrice` of `1` is the lowest floor you can set, and
  a rating filter cannot express 4.5. Filter the dataset yourself for anything finer.
- **Narrow filters make a long, thin run.** It keeps turning pages looking for matches. You are only
  charged for what it keeps, but the run takes longer, so set `maxPagesPerQuery` lower when you
  filter hard.
- **Country filters return very little.**
- **Pages overlap.** Going deeper on one term returns fewer new products each time. Adding a second
  term beats adding twenty pages.
- It is not an official Alibaba.com tool. Dami's Studio is independent and is not affiliated with or endorsed by Alibaba.com or Alibaba, or by any other company named on this page.

### 🧭 Which wholesale scraper do you need?

| If you want | Use |
|---|---|
| Export products, MOQ and suppliers on Alibaba.com | This one |
| 1688 offers by search term: unit price, MOQ and the quantity price ladder | [1688 Wholesale Scraper](https://apify.com/dami_studio/1688-wholesale-scraper) |
| A 1688 seller's rating, five sub-scores and audits | [1688 Supplier Ratings Scraper](https://apify.com/dami_studio/alibaba-1688-supplier-ratings-scraper) |
| AliExpress search results with prices and order counts | [AliExpress Products Scraper](https://apify.com/dami_studio/aliexpress-products-scraper) |
| Retail products in a Taobao category | [Taobao Category Products Scraper](https://apify.com/dami_studio/taobao-category-products-scraper) |
| Products that look like a photo you have, on 1688, Alibaba.com and AliExpress | [1688, Alibaba & AliExpress Image Search](https://apify.com/dami_studio/1688-alibaba-aliexpress-image-search-scraper) |

### ❓ Questions people ask

#### Do I need an Alibaba account or an API key?

No. Nothing to register and no quota to watch.

#### Why is there no single price on Alibaba.com?

Because a wholesale listing does not have one. `priceMin` and `priceMax` are the two ends of the
band, and the real number comes out of a quote.

#### Are the prices really converted to my currency?

Yes. Every currency in the list was checked live, and each row carries the currency it used.

#### Can I filter to suppliers outside China?

You can, but expect a very short list.

#### Can I track Alibaba.com prices over time?

Yes. `productId` is stable, so a weekly run plus a join on that field gives you a price history per
listing. Expect the set of listings to drift a little between runs.

#### Can I call it from code or connect it to an AI assistant?

The [API tab](https://apify.com/dami_studio/alibaba-com-scraper/api/python) has code for Python, JavaScript and the
CLI. MCP clients like Claude and ChatGPT use
`https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/alibaba-com-scraper`; coding assistants can load [our
skill file](https://api.apify.com/v2/key-value-stores/BTBHU3DdiuoF4JOsK/records/apify-ecommerce-SKILL.md). All three
bill your Apify account at the same price.

#### Is scraping Alibaba.com legal?

These are public product listings. Apify's write-up on
[the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) is a good starting
point, and we are not lawyers.

### 🆘 If something breaks

Open the **Issues** tab on the actor page. Send the search term or URL and the run ID; the `status`
on the diagnostic row usually names the problem on its own.

# Actor input Schema

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

What to look for on Alibaba.com, one term per line, for example "led light" or "stainless steel water bottle". Each term is walked separately and results are de-duplicated across all of them.

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

Optional. Paste Alibaba.com search or listing URLs instead of typing terms, for example https://www.alibaba.com/trade/search?SearchText=led%20light. The search term is read out of the URL. Works alongside the field above.

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

Hard cap on products returned across all search terms. You are charged per product returned, so this is your budget cap. Duplicates are never charged.

## `currency` (type: `string`):

Alibaba returns prices in whichever currency the request asks for. Pin it here and every row in one run uses the same currency. Every option listed was checked live to convert prices, not just relabel them.

## `minPrice` (type: `integer`):

Keep only products whose price range reaches this value, in the currency chosen above.

## `maxPrice` (type: `integer`):

Keep only products whose price range starts at or below this value.

## `maxMoq` (type: `integer`):

Keep only products you can order in quantities at or below this number. Units differ per product (pieces, sets, meters, rolls), so this compares the number only.

## `minSupplierYears` (type: `integer`):

Keep only suppliers who have been selling on Alibaba at least this many years.

## `minReviewCount` (type: `integer`):

Keep only products whose supplier has at least this many reviews. Products with no review data are dropped by any value above 0.

## `minRating` (type: `integer`):

Keep only products rated at or above this, out of 5.

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

Two-letter country codes, for example CN, HK, IN, US, VN. Narrow filters here return very little.

## `maxPagesPerQuery` (type: `integer`):

Page ceiling per term, 40 products per page. Pages overlap, so a page adds fewer new products as you go deeper. Raise this only if you want depth on one term; searching more terms returns more unique products per request.

## `requestDelayMs` (type: `integer`):

Minimum gap between requests. Rarely needed.

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

Optional. Leave this alone unless you need the run to go out through a particular network. Your own proxy servers are used exactly as given.

## Actor input object example

```json
{
  "searchQueries": [
    "led light"
  ],
  "startUrls": [],
  "maxItems": 50,
  "currency": "USD",
  "maxPagesPerQuery": 100,
  "requestDelayMs": 500,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One dataset row per Alibaba.com product offer found. Empty input, blocked searches and searches with no matches produce an uncharged sample or diagnostic row instead.

# 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": [
        "led light"
    ],
    "startUrls": [],
    "maxItems": 50,
    "currency": "USD",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dami_studio/alibaba-com-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": ["led light"],
    "startUrls": [],
    "maxItems": 50,
    "currency": "USD",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("dami_studio/alibaba-com-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": [
    "led light"
  ],
  "startUrls": [],
  "maxItems": 50,
  "currency": "USD",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call dami_studio/alibaba-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/alibaba-com-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/3UQCL0HsYKsudgul0/builds/y6esi46tzM9Engzhs/openapi.json
