# Alibaba Scraper — Products, MOQ, Tiered Pricing & Suppliers (`brilliant_gum/alibaba-scraper`) Actor

No-login Alibaba.com B2B scraper: product search, full details (MOQ, tiered/ladder pricing, SKU variants, specs, certifications, images/video), and supplier profiles (years, employees, response time, on-time delivery, trade assurance, ratings). HTTP-first via Apify Residential.

- **URL**: https://apify.com/brilliant\_gum/alibaba-scraper.md
- **Developed by:** [Yuliia Kulakova](https://apify.com/brilliant_gum) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.009 / result record

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Scraper — Products, MOQ, Tiered Pricing & Suppliers

No-login scraper for **Alibaba.com** (B2B wholesale). HTTP-first, no browser, no account. Extracts the
B2B data that matters for sourcing: **MOQ, tiered/ladder pricing, SKU variants, specifications,
certifications, images/video**, plus full **supplier/company profiles** (years as supplier, employees,
response time, on-time-delivery rate, Trade Assurance, 6-month transaction volume, ratings).

![Alibaba Scraper](https://api.apify.com/v2/key-value-stores/IuFu0Cw6PpOkNkDV7/records/alibaba-scraper-banner.png)

> **Enjoying this Actor?** If it's useful, please leave a ⭐️ rating and a short review — it genuinely helps. **Something not working right?** Open an issue on the Actor's **Issues** tab — I actively maintain this Actor and respond fast to fix problems and help you get things working.

### Modes (combinable)

- **Product search** — keyword or ready-made search URL → one product record per offer (MOQ, price range,
  supplier, ratings, supplier service / shipping scores, star level, Alibaba Guaranteed flag). Optionally
  enriched with the full product page. Filter to **Alibaba Guaranteed** offers with `alibabaGuaranteed`.
- **Product details** — full product record by product URL or bare product ID (ladder pricing, SKU, specs,
  certifications, lead time, video, seller).
- **Supplier / company** — supplier profile by minisite URL / subdomain / company ID.
- **Reviews (aggregates)** — product & store rating, review counts, supplier rating breakdown.

### Example input

```json
{
  "mode": ["search"],
  "searchTerms": ["bluetooth speaker"],
  "maxItems": 20,
  "fetchProductDetails": true,
  "shipToCountry": "US",
  "currency": "USD"
}
```

Product details / supplier by URL or ID:

```json
{
  "mode": ["product-details", "supplier-company"],
  "productIds": ["1601787130500"],
  "supplierUrls": ["https://momenrhythm.en.alibaba.com/"]
}
```

### Output (one real product, trimmed)

```json
{
  "recordType": "product",
  "productId": "1601787130500",
  "title": "Branded Retail Speaker Digital Audio Product Parlante Waterproof Ipx7 Portable Wireless...",
  "priceMin": 7.8, "priceMax": 10.3, "priceDisplay": "$7.80-10.30", "currency": "USD",
  "ladderPrices": [
    { "minQty": 2, "maxQty": 39, "price": 10.3, "priceDisplay": "$10.30" },
    { "minQty": 40, "maxQty": 199, "price": 8.5, "priceDisplay": "$8.50" },
    { "minQty": 200, "maxQty": 2999, "price": 8.2, "priceDisplay": "$8.20" },
    { "minQty": 3000, "maxQty": null, "price": 7.8, "priceDisplay": "$7.80" }
  ],
  "moq": 2, "moqUnit": "pieces", "boxMoq": 1,
  "specifications": [ { "name": "BT Wireless", "value": "Bluetooth v5.4" }, { "name": "Output Power", "value": "10-30W" } ],
  "variantOptions": [ { "name": "color", "type": "IMAGE", "values": ["Black","Blue","Red","Camouflage","Multi"] } ],
  "certifications": [ { "name": "CE" }, { "name": "RoHS" }, { "name": "UN38.3" } ],
  "leadTime": [ { "minQty": 1, "maxQty": 1000, "days": 20 }, { "minQty": 1001, "maxQty": 3000, "days": 30 } ],
  "video": { "videoId": "6000329930385", "url": "https://video.alibaba.com/vod/6000329930385/master.m3u8" },
  "productRating": 4.8, "reviewCount": 10, "soldCount": 5,
  "isAlibabaGuaranteed": true, "supplierServiceScore": 4.7, "shippingScore": 4.7, "starLevel": 2,
  "companyName": "Shenzhen Momenrhythm Infinity Technology Co., Ltd.", "supplierCountry": "CN",
  "supplierYears": 3, "businessType": "Manufacturer,Trading Company",
  "responseTime": "≤1h", "onTimeDeliveryRate": "100.0%",
  "tradeAssurance": true, "tradeAssuranceAmount": "66,000",
  "supplier": { "employees": "11-50", "transactions6mAmount": "30,000+", "transactions6mCount": 53, "rating": 4.8 }
}
```

With `includeReviews: true`, each product record also carries an inline `reviews` aggregate:

```json
{
  "reviews": {
    "productRating": 4.8, "storeRating": 4.8, "storeReviewCount": 88, "supplierRating": 4.8,
    "supplierRatingBreakdown": { "supplierServices": 4.9, "shippingTime": 4.9, "productQuality": 4.8 },
    "snippets": [], "snippetsAvailable": 0,
    "note": "Alibaba.com does not expose individual buyer reviews without login; aggregates only."
  }
}
```

The standalone **`reviews` mode** emits one `review-summary` record per product (the same aggregates as its own dataset row).

Supplier record (trimmed):

```json
{
  "recordType": "supplier",
  "companyId": "283039640", "companyName": "Shenzhen Momenrhythm Infinity Technology Co., Ltd.",
  "url": "https://momenrhythm.en.alibaba.com/", "supplierCountry": "CN",
  "businessType": "Manufacturer,Trading Company", "supplierYears": 3, "employees": "11-50",
  "responseTime": "≤1h", "onTimeDeliveryRate": "100.0%", "isGoldSupplier": true,
  "isVerifiedManufacturer": "Verified as Custom Manufacturer",
  "tradeAssurance": true, "tradeAssuranceAmount": "66,000",
  "transactions6mAmount": "30,000+", "transactions6mCount": 53,
  "rating": 4.8, "ratingBreakdown": { "supplierServices": 4.9, "shippingTime": 4.9, "productQuality": 4.8 },
  "factoryRank": "#10 leading manufacturer in Speakers & Accessories"
}
```

### Pricing

This Actor uses Apify's **pay-per-event** model: a small **start fee per run** plus a **per-record
charge** for every result returned to your dataset (each product, supplier or review-summary row) — on
top of your own Apify platform usage (compute + proxy). There are no monthly minimums, and
the per-record charge is the dominant cost. The exact start fee and per-record rate are shown on the
Actor's **Pricing** tab in the Apify Store. Use `maxItems` and the min/max filters to cap spend.

### Proxy

Proxies are **included and configured automatically** — just leave the default in place. The proxy country
is pinned to your ship-to country so prices stay localized (USD for a US context). No login, API key, or
captcha-solver is needed for search / product-details / supplier.

### Notes & honesty

- **Reviews:** Alibaba.com does **not** expose individual buyer review text without login. The reviews mode
  returns genuine **aggregates** (product & store rating, review counts, supplier rating breakdown) and any
  embedded review snippets that carry text — it never fabricates review bodies.
- **Supplier profiles** are assembled from the supplier's public minisite and product listings, so they
  return reliably with the full company data (years, employees, ratings, Trade Assurance, transactions).
- You are responsible for complying with Alibaba's Terms of Service and applicable law.

# Actor input Schema

## `mode` (type: `array`):

What to scrape. 'search' runs each search term / search URL and returns one product record per offer card (MOQ, price range, supplier, ratings). 'product-details' fetches the full product record (tiered/ladder pricing, MOQ, SKU variants, specifications, certifications, images/video, seller) for each product URL / ID. 'supplier-company' returns a supplier/company profile (years, employees, response time, on-time delivery, trade assurance, transaction volume, ratings) for each supplier URL / company ID. 'reviews' attaches available review aggregates (product & store rating, review counts, rating breakdown) to the resolved products. Modes can be combined.

## `searchTerms` (type: `array`):

Keywords to search on Alibaba.com (e.g. "bluetooth speaker", "cnc machine"). Search mode only. Each term is paginated (about 48 offers per page).

## `searchUrls` (type: `array`):

Ready-made Alibaba.com search URLs (https://www.alibaba.com/trade/search?SearchText=...). Used verbatim and paginated. Advanced alternative to searchTerms.

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

Alibaba.com URLs to scrape. Product URLs (/product-detail/...\_<id>.html) feed product-details/reviews; search URLs (/trade/search?...) are paginated in search mode; supplier minisite URLs (https://<company>.en.alibaba.com/) feed supplier-company mode.

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

Direct Alibaba.com product URLs as plain strings (https://www.alibaba.com/product-detail/...\_<id>.html). Used by product-details and reviews modes.

## `productIds` (type: `array`):

Bare numeric Alibaba product/offer IDs (e.g. 1601787130500). Used by product-details and reviews modes. Alias: itemIds.

## `supplierUrls` (type: `array`):

Alibaba supplier minisite URLs or subdomains (https://<company>.en.alibaba.com/, or just the bare <company>.en.alibaba.com subdomain). Used by supplier-company mode. The full supplier profile is resolved from the supplier's public minisite and product listings. A minisite subdomain is required: a bare company ID cannot be resolved to a subdomain, so company IDs are not accepted as a standalone input.

## `categoryId` (type: `string`):

Optional Alibaba category ID to narrow keyword search (appended as \&categoryId=). Leave empty to search all categories.

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

Maximum products per search term / search URL. 0 = all available (safety-capped at 3000). Also caps products emitted per supplier in supplier-company mode.

## `maxSearchPages` (type: `integer`):

Maximum search result PAGES to fetch per query (about 48 offers per page). 0 = until maxItems reached or no more results (Alibaba caps at 100 pages).

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

Sort order for search results. Best-effort: mapped to Alibaba's sort parameter (default best-match, or price/orders). Alibaba may ignore unsupported sorts for some queries.

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

Keep only products at or above this unit price (in the result currency). Passed to Alibaba (pricef) and applied to output using the product's low tier price.

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

Keep only products at or below this unit price (in the result currency). Passed to Alibaba (pricet) and applied to output.

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

Keep only offers from verified / gold suppliers (offers exposing a gold-supplier badge or years). Applied to search output.

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

In product-details, keep only products whose supplier offers Trade Assurance. Applied to output.

## `alibabaGuaranteed` (type: `boolean`):

Search mode only: return only 'Alibaba Guaranteed' (formerly 'Guaranteed') offers, i.e. orders backed by Alibaba's end-to-end guarantee. Applies Alibaba's own halfTrust=true search facet and keeps only offers carrying the Alibaba Guaranteed badge. Every product record also exposes an isAlibabaGuaranteed boolean regardless of this flag.

## `fetchProductDetails` (type: `boolean`):

In search mode, enrich each result with the full product page: tiered/ladder pricing, exact MOQ, SKU variants, full specifications, certifications, image gallery + video, lead time and the full seller profile. Turn off for a faster/cheaper lightweight card (id, title, url, price range, MOQ, supplier, ratings from the search card). Alias: enrichListingDetails.

## `fetchSupplierDetails` (type: `boolean`):

Also emit a separate supplier/company record for each distinct supplier encountered (years, employees, response time, on-time delivery, trade assurance, transaction volume, business type, ratings). In search/product modes this is off by default; in supplier-company mode it is always on.

## `includeReviews` (type: `boolean`):

Attach a review-aggregates object inline on every product record: product rating & review count, store rating & count, supplier rating breakdown, and any review snippets embedded in the page (in the product record's 'reviews' field). Works in search and product-details modes without needing the separate 'reviews' mode. NOTE: Alibaba.com does not expose individual buyer review text without login, so this returns aggregates/snippets only (see README).

## `shipToCountry` (type: `string`):

Two-letter ISO ship-to country code (e.g. US, GB, DE). Sets the shipping/pricing context. The proxy country is pinned to match so prices stay in the chosen currency.

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

Three-letter currency code for prices (e.g. USD, EUR, GBP). Alibaba localizes prices to the proxy country; USD is returned for a US context.

## `language` (type: `string`):

Language/locale for titles and text (e.g. en\_US, de\_DE). Set via Alibaba's locale cookie.

## `deduplicate` (type: `boolean`):

Drop records whose dedupKey was already produced (within run, and across runs if a key store is set).

## `deduplicateKeyStore` (type: `string`):

Named key-value store to persist seen dedupKeys (and product prices) across scheduled runs. Empty = in-run dedup only.

## `monitoringMode` (type: `boolean`):

Output only products that are new or whose price changed since the previous run (requires a dedup key store). Great for price/MOQ monitoring.

## `maxConcurrency` (type: `integer`):

Parallel product/supplier targets. Keep moderate (3-8) for reliable extraction.

## `maxChallengeRetries` (type: `integer`):

Retries with a fresh proxy session on a temporary block, 403, 5xx or timeout. A few retries are normal.

## `proxy` (type: `object`):

Proxies are included and configured automatically — leave the default in place. The proxy country is auto-pinned to the ship-to country for correct localized pricing.

## Actor input object example

```json
{
  "mode": [
    "search"
  ],
  "searchTerms": [
    "bluetooth speaker"
  ],
  "maxItems": 20,
  "maxSearchPages": 0,
  "sortBy": "default",
  "verifiedSupplierOnly": false,
  "tradeAssuranceOnly": false,
  "alibabaGuaranteed": false,
  "fetchProductDetails": true,
  "fetchSupplierDetails": false,
  "includeReviews": false,
  "shipToCountry": "US",
  "currency": "USD",
  "language": "en_US",
  "deduplicate": true,
  "monitoringMode": false,
  "maxConcurrency": 5,
  "maxChallengeRetries": 6,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped Alibaba product, supplier and review-summary records.

# 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 = {
    "mode": [
        "search"
    ],
    "searchTerms": [
        "bluetooth speaker"
    ],
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("brilliant_gum/alibaba-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 = {
    "mode": ["search"],
    "searchTerms": ["bluetooth speaker"],
    "maxItems": 20,
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("brilliant_gum/alibaba-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 '{
  "mode": [
    "search"
  ],
  "searchTerms": [
    "bluetooth speaker"
  ],
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call brilliant_gum/alibaba-scraper --silent --output-dataset

```

## MCP server setup

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