# Alibaba Scraper - Products, Suppliers, MOQ, Image Search (`scrapewise/alibaba-com-scraper`) Actor

Scrape Alibaba.com without login: keyword search in any language or search by image. 50+ fields: price tiers, MOQ, supplier country, years, staff, factory size, revenue, response rate, verified and Trade Assurance. MOQ, price and country filters really applied. Supplier mode.

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

## Pricing

from $0.85 / 1,000 result delivered (product or supplier)s

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: products, suppliers, MOQ and image search

Scrape **Alibaba.com** search results without login or cookies: products with the full **price-tier ladder**, **MOQ**,
units sold and ratings, plus the **supplier behind each product** (country, years as Gold Supplier, staff, factory size,
revenue on Alibaba.com, response rate, Verified and Trade Assurance badges). Search by **keyword in any language**, by
**image**, or find **similar products** to one you already have. Switch to **supplier mode** to get one row per company.

Built for B2B sourcing, dropshipping and Amazon FBA research, price monitoring and supplier shortlists.

### At a glance

- **$1.00 per 1,000 results** (products or suppliers). Full product page: +$1.00 per 1,000. Image search: $0.004 per
  image, which already includes its first 60 products.
- **Every page on every plan.** Up to 100 pages (4,800 products) per keyword, no paywall on depth.
- **Filters Alibaba.com applies and we check again on every row:** max MOQ, price range in USD, supplier country,
  Trade Assurance, Verified, Verified Pro, minimum store rating, words to exclude, sponsored listings out.
  Products outside your filters are never charged.
- **Any language:** English, German, Spanish and French go straight in; Chinese, Japanese, Korean, Russian, Arabic and
  Thai keywords are translated to English first, because Alibaba.com answers them with off-topic products.
- **50+ fields per product**, 70+ with the full product page.
- **Fast and small:** about 3 to 5 seconds per page of 48 products, so it fits API calls and AI agents well.
- **Error rows are free:** an invalid link, a taken-down product or an empty search comes back as a row with an
  `errorCode`, never as a charge.

### Quick start

Search two keywords, cap the MOQ at 50 and keep only Trade Assurance suppliers:

```json
{
  "keywords": ["coffee mug", "yoga mat"],
  "maxItems": 100,
  "maxMinOrderQuantity": 50,
  "tradeAssurance": true
}
```

Find suppliers from a photo:

```json
{
  "imageUrls": ["https://images.unsplash.com/photo-1514228742587-6b1558fcca3d?w=640"],
  "maxResultsPerImage": 40
}
```

One row per supplier for a keyword, only companies in Vietnam:

```json
{
  "keywords": ["coconut bowl"],
  "searchType": "suppliers",
  "supplierCountry": "VN",
  "maxItems": 50
}
```

### Input

| Field | What it does |
|---|---|
| `keywords` | Products to search, one per line, in any language. An Alibaba.com search link also works and keeps its filters. |
| `searchType` | `products` (default) or `suppliers` (one row per company found in the search). |
| `maxItems` | Total results for the run (default 20). 0 = no limit. |
| `maxItemsPerKeyword` | Optional cap per keyword. |
| `sortBy` | `relevance` (default) or `bestSelling` (most sold in the last 180 days). |
| `minPrice`, `maxPrice` | Price range in US dollars. |
| `maxMinOrderQuantity` | Only products whose MOQ is at or below this number. |
| `supplierCountry` | 2-letter code or English name: CN, IN, VN, TR, PK, US... |
| `tradeAssurance`, `verifiedSupplier`, `verifiedProSupplier` | Badge filters. |
| `minStoreRating` | Only suppliers rated at least this (out of 5). |
| `excludeKeywords` | Skip products whose title has any of these words. |
| `excludeAds` | Skip sponsored listings. |
| `imageUrls`, `imageFile` | Search by image: public photo links or one uploaded file (JPG, PNG, WebP, up to 10 MB). |
| `similarToProducts` | Alibaba.com product links or ids: returns visually similar products from other suppliers. |
| `maxResultsPerImage` | Products per image, up to 100 (default 20). |
| `productUrls` | Product links or ids to read directly, with the full product page. |
| `includeDetails` | Also open each product page (variants, lead time, package, supplier capabilities). |
| `translateKeywords` | On by default. Off sends the keyword exactly as typed. |
| `proxyConfiguration` | Apify datacenter proxy by default; switches to residential by itself if needed. |

### Output: product rows

Every row has `type` (`product`, `supplier` or `error`), `scrapedAt`, `errorCode` and `error`.

| Field | Example |
|---|---|
| `productId`, `title`, `url` | `1601594117802`, "Stainless Steel Double Wall Vacuum Insulated Tumbler", product link |
| `priceMin`, `priceMax`, `currency`, `priceText` | `0.88`, `1.78`, `USD`, "US $0.88-$1.78" |
| `priceTiers` | `[{"minQuantity": 50, "maxQuantity": 999, "priceUsd": 1.78}, ...]` |
| `minOrderQuantity`, `unit`, `minOrderText` | `50`, `piece`, "50 pieces" |
| `soldCount`, `soldText` | `118`, "118 sold" |
| `productionLeadDays` | `31` (shortest production time shown on the card) |
| `promotionPriceMin`, `promotionDiscountPercent`, `shippingCostUsd`, `deliveryLabel`, `easyReturn` | when Alibaba.com shows them |
| `categoryId`, `categoryName`, `attributes` | `100003291`, "Stainless Steel Tumblers", `[{"name": "Occasion", "value": "Business Gifts"}]` |
| `productCertifications` | `["CE", "ROHS"]` |
| `productRating`, `reviewCount`, `reviewTags` | `4.7`, `33`, `[{"tag": "excellent service", "count": 13}]` |
| `imageUrl`, `images`, `hasVideo` | main photo, gallery, `true` |
| `isAd`, `position`, `page`, `searchInput`, `searchedAs` | sponsored flag, rank, page, your keyword, the English keyword used |
| `supplier.companyId`, `supplier.companyName` | `247366542`, "Hangzhou Able Import & Export Co., Ltd" |
| `supplier.country`, `supplier.countryName` | `CN`, "China" |
| `supplier.goldSupplier`, `supplier.goldSupplierYears` | `true`, `7` |
| `supplier.verified`, `supplier.verifiedPro`, `supplier.tradeAssurance`, `supplier.verifiedBy` | `true`, `false`, `true`, "Intertek" |
| `supplier.employees`, `supplier.factorySizeM2` | `20`, `50` |
| `supplier.platformRevenueUsd`, `supplier.transactions`, `supplier.transactionsVolumeUsd` | `1200000`, `271`, "1,200,000+" |
| `supplier.responseRate`, `supplier.exportCountries`, `supplier.mainProducts` | `81.5`, `["United States", "Germany", ...]`, `["Drinkware", ...]` |
| `supplier.storeRating`, `supplier.serviceRating`, `supplier.shippingRating` | `4.7`, `4.7`, `4.6` |
| `supplier.storeUrl`, `supplier.profileUrl`, `supplier.productListUrl`, `supplier.certifications` | store links, `["ISO"]` |

#### Extra fields with the full product page

`variantOptions` (color, size... with photos), all `attributes`, `leadTimeTiers` (days per quantity range),
`packageSizeCm`, `unitWeightKg`, `tradeTerm` (FOB...), `shipsFrom`, `customization` (what can be customized and its
MOQ), `videoCoverUrl`, `productReviewCount`, `categoryPath`, and for the supplier: `businessType` (Manufacturer,
Trading Company), `yearsOnAlibaba`, `employeesRange`, `responseTime`, `onTimeDeliveryRate`, `goldSupplierPlus`,
`tradeAssuranceLimitUsd`, `orders6Months`, `revenue6MonthsUsd`, `ratingsByAspect` and `capabilities` (store rating,
on-time dispatch, private labels and the other verified cards).

### Output: supplier rows (`searchType: suppliers`)

One row per company, the first time it shows up in your searches: all the `supplier.*` fields above at the top level,
plus `productsFound`, `lowestPriceUsd`, `lowestMinOrderQuantity`, `categories` and `sampleProducts` (the product that
brought the company in, with price and MOQ). Good for building a supplier shortlist in one run.

### Example row (trimmed)

```json
{
  "type": "product",
  "productId": "1601594117802",
  "title": "Stainless Steel Double Wall Vacuum Insulated Thermos Tumbler 12-24 Hours Thermal Performance",
  "priceMin": 0.88,
  "priceMax": 1.78,
  "currency": "USD",
  "priceTiers": [{"minQuantity": 50, "maxQuantity": 999, "priceUsd": 1.78},
                 {"minQuantity": 500000, "maxQuantity": null, "priceUsd": 0.88}],
  "minOrderQuantity": 50,
  "unit": "piece",
  "soldCount": 118,
  "productionLeadDays": 31,
  "productRating": 4.7,
  "reviewCount": 33,
  "supplier": {
    "companyName": "Hangzhou Able Import & Export Co.,Ltd",
    "country": "CN",
    "goldSupplierYears": 7,
    "verified": true,
    "tradeAssurance": true,
    "employees": 20,
    "platformRevenueUsd": 1200000,
    "responseRate": 81.5,
    "storeRating": 4.7
  },
  "scrapedAt": "2026-10-18T02:23:57Z",
  "errorCode": null,
  "error": null
}
```

### Pricing

| Event | Price | When |
|---|---|---|
| Result delivered | $0.001 | each unique product, or each unique supplier in supplier mode |
| Full product page delivered | $0.001 | each product that came back with its product page |
| Image search | $0.004 | each image (or similar-to product) that returned products; covers the first 60 |

So 1,000 products cost $1.00, 1,000 products with full pages $2.00, and an image search with 40 matches $0.004.
Apify plan discounts apply on top. Duplicates, rows outside your filters and error rows are free.

### Errors

| `errorCode` | Meaning |
|---|---|
| `INVALID_INPUT` | Not an Alibaba.com link or id, or a filter value that cannot be read. |
| `NO_RESULTS` | The search (with your filters) or the image returned nothing. |
| `NOT_FOUND` | The product link is invalid or the product was taken down. |
| `IMAGE_UNREADABLE` | The photo could not be downloaded (private link, not an image, over 10 MB). |
| `BLOCKED` | Alibaba.com refused several fresh IPs in a row. Run again in a few minutes. |
| `UNEXPECTED` | Anything else; the run still ends normally with what was already delivered. |

### Integrations, scheduling and AI agents

- **Schedules:** run a keyword list every day or week to watch prices, MOQ and new suppliers.
- **Export:** JSON, CSV, Excel or XML from the dataset, or the API (`/datasets/{id}/items`).
- **Make, n8n, Zapier, Google Sheets, Slack:** use the Apify integrations to push every new run.
- **AI agents:** the Actor works as a tool in the Apify MCP server, so Claude, ChatGPT and other agents can call it
  with a keyword and get structured supplier data back. Small runs (20 to 50 results) finish in a few seconds.

### FAQ

**Do I need an Alibaba.com account or cookies?** No. Everything is public data read without login.

**Which currency are prices in?** US dollars, whatever country the run comes from.

**Why translate Chinese keywords?** Alibaba.com is the international site and indexes product titles in English.
A Chinese keyword like 水杯 brings drinking straws and phone pouches; translated to "water cup" it brings water cups.
The original keyword stays in `searchInput` and the English one in `searchedAs`. Turn `translateKeywords` off to
send it as typed.

**Is the MOQ filter real?** Yes. It is sent to Alibaba.com and checked again on each row; a product above your MOQ is
skipped and not charged. The same goes for price, country, badges and store rating.

**Do you return personal data?** No. Product pages carry the seller's personal name, gender, photo and account login;
none of it is returned. Supplier rows describe the company only. E-mail addresses found in free text are replaced
with "\[contact removed]".

**How deep can a keyword go?** Alibaba.com serves up to 100 pages of 48 products per keyword. Image search stops at
100 products per image.

### Limitations

- Supplier mode collects companies from the product search, so it returns suppliers that sell products matching
  your keyword (not every company on Alibaba.com).
- Search cards show up to 4 price tiers and a short attribute list; turn on the full product page for everything.
- Image search returns visually similar products; it does not guarantee the exact same item.
- Store pages on supplier subdomains (company profile, reviews list) are not read.

### Changelog

- **17 Oct 2026:** first version. Keyword search in any language, image search, similar products, supplier mode,
  server-side and re-checked filters, full product page option.

# Actor input Schema

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

Products to search on Alibaba.com, one per line, for example "coffee mug", "yoga mat" or "solar panel". Any language works: English, German, Spanish or French go straight to Alibaba.com; Chinese, Japanese, Korean, Russian, Arabic and other scripts are translated to English first (see 'searchedAs' in each row). You can also paste an Alibaba.com search link (https://www.alibaba.com/trade/search?SearchText=...) and its filters are kept.

## `searchType` (type: `string`):

Products: one row per product with price tiers, MOQ and its supplier. Suppliers: one row per company found for each keyword (name, country, years, staff, factory size, revenue on Alibaba.com, response rate, verified, Trade Assurance, main products) with a sample product. Each supplier row is charged as one result.

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

Total number of products (or suppliers) for the whole run, counting keywords, images and links together, for example 20 for a quick test or 2000 for a full sourcing list. Every page of results is available on every Apify plan. 0 = no limit.

## `maxItemsPerKeyword` (type: `integer`):

Cap for each keyword, so one broad keyword does not use the whole 'Max results' budget, for example 100. Empty = no cap per keyword.

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

Order Alibaba.com applies to the keyword search: relevance (default) or best selling in the last 180 days.

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

Only products whose price reaches at least this value in US dollars, for example 1.5. Empty = no minimum.

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

Only products whose lowest price is at or below this value in US dollars, for example 10. Empty = no maximum.

## `maxMinOrderQuantity` (type: `integer`):

Only products whose minimum order quantity (MOQ) is at or below this number, for example 1 or 10 to buy samples or small batches. Empty = any MOQ.

## `supplierCountry` (type: `string`):

Only suppliers located in one country, as a 2-letter code or English name, for example CN (China), IN (India), VN (Vietnam), TR (Turkey), PK (Pakistan) or US. Empty = any country.

## `tradeAssurance` (type: `boolean`):

Only suppliers that offer Alibaba.com Trade Assurance (order protection).

## `verifiedSupplier` (type: `boolean`):

Only suppliers verified on site by an inspection company (Verified Supplier badge).

## `verifiedProSupplier` (type: `boolean`):

Only Verified Pro suppliers, the stricter Alibaba.com badge. Narrows the results a lot (for example 817 of 67,000 for coffee mug).

## `minStoreRating` (type: `number`):

Only suppliers whose store rating is at least this value, for example 4 or 4.5 (out of 5). Empty = any rating.

## `excludeKeywords` (type: `array`):

Leave out products whose title contains any of these words, one per line, for example "sample" or "used". Excluded products are not charged.

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

Alibaba.com mixes paid placements into the results (isAd: true in each row). On: sponsored listings are skipped and not charged.

## `imageUrls` (type: `array`):

Find Alibaba.com suppliers from a product photo, one image link per line: any public JPG, PNG or WebP up to 10 MB (an Amazon, Etsy, Shopify or Temu photo, or your own). Returns similar products with price, MOQ and supplier.

## `imageFile` (type: `string`):

Upload a product photo (JPG, PNG or WebP) from your computer instead of pasting a link. It is searched exactly like an image link.

## `similarToProducts` (type: `array`):

Alibaba.com product links (https://www.alibaba.com/product-detail/...\_1601236370764.html) or numeric product ids, one per line. Returns visually similar products from other suppliers, to compare prices for the same item.

## `maxResultsPerImage` (type: `integer`):

Products returned for each image or 'similar to' product, up to 100 (Alibaba.com's own limit). Empty = 20. Each image search is charged once and includes the first 60 products.

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

Alibaba.com products to read directly, one per line: product links (https://www.alibaba.com/product-detail/...\_1601236370764.html) or just the numeric id. Each comes with the full product page (variants, lead time, package size, supplier capabilities).

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

Off (default): rows come from the search cards (title, price tiers, MOQ, sales, supplier, images). On: also opens each product page and adds variants, all attributes, lead time per quantity, package size and weight, customization options, supplier business type, on-time delivery rate, response time, ratings by aspect, orders in the last 6 months. Charged once more per product with 'Full product page delivered'.

## `translateKeywords` (type: `boolean`):

On (default): keywords in Chinese, Japanese, Korean, Russian, Arabic, Thai and other non-Latin scripts are translated to English before the search, because Alibaba.com returns off-topic products for them. Off: the keyword is sent as typed.

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

Apify datacenter proxy by default, with a fresh IP whenever Alibaba.com refuses one. If the datacenter keeps being refused, the run switches to residential IPs by itself.

## Actor input object example

```json
{
  "keywords": [
    "coffee mug"
  ],
  "searchType": "products",
  "maxItems": 20,
  "sortBy": "relevance",
  "tradeAssurance": false,
  "verifiedSupplier": false,
  "verifiedProSupplier": false,
  "excludeAds": false,
  "includeDetails": false,
  "translateKeywords": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `resultsCsv` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "coffee mug"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/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 = {
    "keywords": ["coffee mug"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/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 '{
  "keywords": [
    "coffee mug"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/alibaba-com-scraper --silent --output-dataset

```

## MCP server setup

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