# Wholesale Product Scraper for Alibaba.com - Supplier Leads (`scrapesage/alibaba-scraper`) Actor

Scrape Alibaba.com B2B products by keyword, URL or ID: tiered wholesale (FOB) prices, MOQ, specs, SKU variants, certifications, images, Trade Assurance & supplier/manufacturer leads with firmographics & lead score. Filter, set currency & monitor price drops.

- **URL**: https://apify.com/scrapesage/alibaba-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** E-commerce, Lead generation, Agents
- **Features:** Limited permissions
- **Stats:** 31 total users, 11 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.38 / 1,000 product scrapeds

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

## Wholesale Product Scraper for Alibaba.com - Prices, MOQ, Specs & Supplier Leads

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Alibaba Group or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Alibaba.com" is referenced only to describe the publicly available website this Actor collects data from.

Extract **Alibaba.com B2B product and supplier data** by keyword, search link, product ID or supplier minisite: **tiered wholesale (FOB) ladder prices, minimum order quantity (MOQ), the SKU/variant matrix, every product spec, certifications, product video, packaging and production lead times**, and the **supplier company profile** (business type, years on Alibaba, response time, on-time delivery rate, ratings, Alibaba's verified identity, headcount, factory size, 6-month online orders and revenue). Optionally turn every supplier into a **deduplicated sourcing / vetting lead** with a 0-100 lead score.

No login, no API key, no browser: the Actor reads the data Alibaba.com embeds in its own pages.

### What you get

Three kinds of rows, each with its own event on the Pricing tab:

| Row | Where it comes from | What it carries |
| --- | --- | --- |
| **Product** (`type: "product"`) | Alibaba's search results or a supplier's product list | Title, images, price range and currency, MOQ, sold count, the supplier's ratings, certificates, reorder rate, deals, supplier name, country and years on Alibaba |
| **Product with full detail** (`type: "product"`, `includeProductDetails`) | The product's own page | Everything above plus tiered FOB ladder prices (USD), SKU / variant matrix, all specs, certifications with number and validity, product video, packaging, production lead times, category path, best-seller ranking, customization options, sample price, Trade Assurance and the full supplier profile |
| **Supplier lead** (`type: "supplier"`, `outputSupplierLeads`) | The suppliers of the products in the run | Company, minisite, business type, country, years, employees, response time, on-time delivery, Gold / Verified / Trade Assurance status, verified identity and capabilities, factory size, production lines, 6-month online orders and revenue, contact name and title, ratings, sample products and a 0-100 lead score |

In the Console the dataset has three table views: **Products** (price range, MOQ, sold count, the supplier's ratings, supplier and country), **Product details** (price tiers, MOQ, production lead times, number of variants, key specs, ships-from country and the supplier's business type, filled when `includeProductDetails` is on) and **Supplier leads** (one row per supplier with business type, years, response time, on-time delivery, lead score and the contact name, when `outputSupplierLeads` is on). Every view exports to CSV or Excel as shown; the JSON keeps every field.

### Use cases

- **Product sourcing & dropshipping** - find products by keyword, compare tiered wholesale prices and MOQs across suppliers, and pull every spec, image and certification you need to list a product.
- **Supplier discovery & vetting** - score suppliers by tenure, business type (manufacturer vs trading company), verified identity, on-time-delivery rate, response time, recent order volume, Trade Assurance and ratings before you reach out (`outputSupplierLeads`).
- **Pricing & market intelligence** - track FOB price ladders, MOQs and new products by category; benchmark a niche in your own currency.
- **Repricing & monitoring** - schedule recurring runs with **monitor mode** to catch price drops and MOQ changes on the products you care about.
- **Lead generation for B2B services** - manufacturers and trading companies on Alibaba are active buyers of logistics, inspection, financing, packaging and marketing services. Score and shortlist them.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) - the free plan is enough to try this Actor.
2. Open the **Wholesale Product Scraper for Alibaba.com**, enter search keywords (or paste Alibaba links / product IDs), and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS - or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchTerms": ["wireless earbuds", "solar panel"],
    "country": "US",
    "maxProducts": 100,
    "includeProductDetails": true,
    "outputSupplierLeads": true,
    "maxMoq": 100,
    "supplierType": "verified",
    "minRating": "4",
    "monitorMode": false
}
```

- **searchTerms** - keywords, each scraped as its own product feed; several keywords share Max products equally.
- **startUrls** - Alibaba.com links: product pages (`/product-detail/...`), search pages (`/trade/search?SearchText=...`, kept with every filter the link carries), `/showroom/...` pages, or supplier minisites (`https://<name>.en.alibaba.com/`, any of its pages: the supplier's product list is read). A text file or Google Sheet of links works too, here or in **Import URLs from a file**.
- **productIds** - Alibaba product IDs or product links to fetch full detail directly (e.g. `1601295664563`).
- **country** *(default `US`)* - the market Alibaba prices and ships for. It sets Alibaba's own country and currency setting, so a `GB` run prices in GBP and a `DE` run in EUR; the `currency` column of every row names the currency of its prices. Codes and names both work (`GB`, `United Kingdom`, `Germany`).
- **includeProductDetails** *(default false)* - open each product's page for the full record (see the table above).
- **outputSupplierLeads** *(default false)* - also push one deduplicated lead per supplier (implies product detail).
- **Filters** - `minPrice` / `maxPrice` (in the run's currency), `maxMoq`, `supplierCountry`, Verified suppliers and `tradeAssuranceOnly` are sent to **Alibaba's own search filters**, so every page holds more matches; every filter is then checked again on each row before it is billed. `minRating` keeps products whose supplier's quality score (0-5, from buyers' reviews) is at least the value; `supplierType` Manufacturers / Trading companies reads the business type from each product's page, so those rows are product-detail rows.
- **monitorMode** *(default false)* - emit only new or changed products across runs (`changeType`: new / price_drop / price_rise / moq_change).

### Output

One record per product (`type: "product"`), plus optional supplier lead records (`type: "supplier"`). A product with full detail:

```json
{
    "type": "product",
    "productId": "1601790505156",
    "title": "Factory Customized X7MAX Bone Conduction Sports Headphones Open Ear Headsets IPX8 Waterproof Earbuds BT6.0 Wireless Earphones",
    "url": "https://www.alibaba.com/product-detail/_1601790505156.html",
    "priceMin": 12,
    "priceMax": 13.5,
    "currency": "USD",
    "priceUnit": "piece",
    "ladderPrices": [
        { "minQty": 1, "maxQty": 99, "price": 13.5, "priceText": "$13.50" },
        { "minQty": 100, "maxQty": 499, "price": 13, "priceText": "$13" },
        { "minQty": 500, "maxQty": 999, "price": 12.5, "priceText": "$12.50" },
        { "minQty": 1000, "maxQty": null, "price": 12, "priceText": "$12" }
    ],
    "moq": 1,
    "moqUnit": "pieces",
    "rating": 4,
    "reviewCount": 7,
    "attributes": [
        { "name": "BT Wireless", "value": "Bluetooth v6.0" },
        { "name": "brand name", "value": "KEMI" },
        { "name": "place of origin", "value": "Guangdong, China" }
    ],
    "variants": [
        { "name": "color", "type": "IMAGE", "options": ["Black"] },
        { "name": "model number", "type": "TEXT", "options": ["X7MAX"] }
    ],
    "certifications": [
        { "name": "Declaration of Conformity", "number": null, "type": "PRODUCT", "issuedBy": "Other", "validPeriod": "03/04/2026 - 05/25/2027" }
    ],
    "video": { "videoId": "6000331344598", "cover": "https://sc04.alicdn.com/kf/H50e32dce02fd4fe981a00ddd190bc2ba1.jpg", "url": "https://gv.videocdn.alibaba.com/icbu_vod_video/...-hd.mp4", "durationSec": 30 },
    "leadTimes": [
        { "minQty": 1, "maxQty": 10, "days": 7 },
        { "minQty": 11, "maxQty": 100, "days": 15 },
        { "minQty": 101, "maxQty": 1000, "days": 30 }
    ],
    "packaging": { "unitWeightKg": 0.23, "unitVolumeCbm": null, "unitSize": "24X16X9" },
    "tradeAssurance": true,
    "supplierName": "Dongguan Kemi Electronic Technology Co., Ltd.",
    "supplierCountry": "CN",
    "supplier": {
        "businessType": "Manufacturer,Trading Company",
        "yearsOnAlibaba": 1,
        "employees": "301-500",
        "responseTime": "≤2h",
        "onTimeDeliveryRate": "100.0%",
        "contactName": "Ms. Zhang",
        "ratingAvg": 4.3,
        "verifiedIdentity": "Custom Manufacturer",
        "verifiedEmployees": 304,
        "factorySize": "8000m²",
        "productionLines": 10,
        "onlineOrders6m": 100
    },
    "categoryPath": "Consumer Electronics > Earphone & Headphone & Accessories > Sports Earphones & Headphones",
    "rankingText": "#5 most popular in Sports Earphones & Headphones",
    "productPageAvailable": true,
    "priceTiersText": "1-99: $13.50 | 100-499: $13 | 500-999: $12.50 | 1,000+: $12",
    "leadTimeText": "1-10: 7 days | 11-100: 15 days | 101-1,000: 30 days",
    "specsText": "BT Wireless: Bluetooth v6.0; brand name: KEMI; place of origin: Guangdong, China",
    "certificationsText": "Declaration of Conformity",
    "supplierBusinessType": "Manufacturer, Trading Company",
    "scrapedAt": "2026-10-31T23:50:00.000Z"
}
```

The `...Text` fields are one-line copies of the arrays above (quantity range: price, quantity range: days, the first eight specs, certificate names) for the Product details view and for spreadsheets; the arrays stay on the row for code.

A supplier lead record (`type: "supplier"`) carries the supplier profile above plus `productsInRun`, `sampleProducts`, `avgProductPrice`, `tradeAssuranceAmount` and a 0-100 `leadScore`.

**What the rating columns mean.** `rating`, `reviewScore`, `shippingScore`, `supplierServiceScore` and `reviewCount` are the **supplier's** ratings that Alibaba shows on the search card (product quality, overall, shipping, service, and the number of reviewed orders). A product's own review figures, which Alibaba shows for few B2B products, are in `ratingDetail` and `reviewCountDetail`.

**Prices and currency.** `priceMin` / `priceMax` are the list price range in the row's `currency` (a discounted card also carries `promotionPrice`). With full detail on a US run they are the USD ladder; `ladderPrices[].price`, `priceMinDetail` and `priceMaxDetail` are always USD, and `ladderPrices[].priceText` is the price as shown in the run's market.

**In the Console**, the supplier leads follow the product rows, so on a big run the **Supplier leads** view starts on a later page (the run's status message names the page). Through the API, read only the leads with `?view=supplierLeads&clean=true`.

#### Honest limits

- `soldCount` is filled only where Alibaba shows a sold count (products with recent sales); a supplier minisite shows a 180-day count instead, in `sold180Days`.
- `employees`, `contactTitle`, `mainMarkets` and the other verified profile figures are filled only where the supplier published them or Alibaba verified them.
- Alibaba does not offer some products to buyers in some countries, and it judges the country from both the visitor's IP and the site's country setting: a product listed in the search can open "Product Not Available" for your `country`. Outside the US, with the default proxy setting, such a page is asked again from a residential exit in your country, so you get what a buyer there sees. A product Alibaba still hides from your market ships as its search card, billed at the product price, with `productPageAvailable: false`; the run's status message counts them. A pasted product id that answers this way is named on the status message and not billed.
- Alibaba does not publish supplier emails or phone numbers; the leads carry the supplier's minisite, contact name and title.
- Monitor mode compares a product's list price and MOQ with its last reading in the same currency; moves under 2% are ignored, so a slow drift is reported once it adds up.
- Alibaba reshuffles its Best Match results between visits. In my test a monitor re-run 10 minutes after the first found 17 of the top 20 "solar lights" products new to the watch; sorted by sales volume it was 5 of 20. So in monitor mode `new` means new to your watch list, not newly listed on Alibaba. For a steadier watch, paste a search link sorted by sales volume (`sortType=prodSold180`, "Sort by sales volume" on Alibaba) into Start URLs.

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

This Actor uses Apify's **pay-per-event** pricing: you pay for the rows it delivers, with no monthly rental. From 16 November 2026, each run also pays a small start fee that Apify charges when the run starts: $0.005 for a run with the default 1 GB of memory, plus $0.005 for each extra GB. The events it can charge are:

- **Product** - a product from an Alibaba.com search, a search or showroom link, or a supplier's product list: title, wholesale price range and currency, MOQ, supplier name and country, plus the supplier's rating and the sold count where Alibaba shows them.
- **Product detail** - a product whose own page was read: the product row plus specs, the SKU / variant matrix, Trade Assurance and the supplier's company profile, with tiered FOB prices, lead times, packaging, certifications and video where the supplier lists them.
- **Supplier lead** - one row per supplier of the run's products: company, minisite, country, years on Alibaba and a 0-100 lead score, plus response time, on-time delivery, contact name, business type and employees where Alibaba lists them.

A product row is billed as either a product or a product detail, never both. Rows that fail your filters, and pasted product ids that Alibaba does not show, are not billed. The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

### Automate & schedule

Run this Actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** - start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** - official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** - run it hourly/daily/weekly to monitor price drops, MOQ changes or new products in a category; ideal with monitor mode.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - trigger downstream actions (CRM import, Slack alert, repricing job) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/alibaba-scraper').call({
    searchTerms: ['stainless steel water bottle'],
    country: 'US',
    maxProducts: 100,
    includeProductDetails: true,
    outputSupplierLeads: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} products & supplier leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps - no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** - multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** - push new supplier leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** - get notified when a monitored product drops in price.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** - auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** - pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** - trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this Actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** - ask your assistant to "find low-MOQ stainless steel bottle suppliers on Alibaba with Trade Assurance and list their lead scores" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **e-commerce sourcing & supplier stack**:

- **[AliExpress Scraper](https://apify.com/scrapesage/aliexpress-scraper)** - consumer / dropship products, live prices, orders sold & supplier leads.
- **[TradeIndia Scraper](https://apify.com/scrapesage/tradeindia-scraper)** - Indian B2B suppliers, products & contact leads.
- **[Banggood Scraper](https://apify.com/scrapesage/banggood-scraper)** - cross-border dropship products, prices & reviews.
- **[eBay Scraper](https://apify.com/scrapesage/ebay-scraper)** - active listings on 10 eBay marketplaces, prices, item details and seller leads.
- **[ImportYeti Scraper](https://apify.com/scrapesage/importyeti-scraper)** - supplier & shipment / bill-of-lading intelligence.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** - enrich any supplier minisite with emails, phones & socials.

### Tips

- **Prices in your currency**: set `country` to your market (`GB`, `DE`, `AU` ...); `US` gives USD. Product detail always also carries the USD ladder prices.
- **Low-MOQ sourcing**: set `maxMoq` (e.g. 100) to surface suppliers that accept small / sample orders.
- **Manufacturers only**: set `supplierType` = `manufacturer`; each product's page is read for the supplier's business type.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to track only new or price-changed products. Each run checks the first Max products of every search, so a quiet monitor run is quick and cheap. Watch a search sorted by sales volume (paste its link) for a steadier list: Alibaba reshuffles Best Match between visits.
- **Proxies**: keep the default. It uses Apify datacenter exits with homepage-primed sessions and switches to residential exits only when Alibaba keeps refusing datacenter.

### FAQ

**How do I scrape Alibaba products for a keyword?** Put the keyword(s) in `searchTerms`. Add `includeProductDetails` for ladder prices, specs, certifications and the supplier profile, and `outputSupplierLeads` to also get one scored lead per supplier.

**Does it get tiered wholesale (FOB) prices and MOQ?** Yes - with `includeProductDetails` on, every product whose supplier sets tiers carries its full `ladderPrices` array (quantity tier to unit price, in USD) and `moq`, and the Console's **Product details** view shows the tiers on one line (`priceTiersText`). A product priced by variant has a price range instead of tiers.

**Can I scrape a supplier's whole catalogue?** Yes - paste the supplier's minisite (`https://<name>.en.alibaba.com/`) into Start URLs; the Actor reads its product list page by page.

**Can I get supplier contact emails?** Alibaba does not publish supplier emails or phones - contact happens through the platform and the supplier's minisite. This Actor returns the supplier's minisite URL, contact name, business type and full firmographics; pair it with the [Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper) to enrich minisites for public contact details.

**Can I export to Google Sheets, CSV, or Excel?** Yes - one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor price drops automatically?** Turn on `monitorMode`, then create a [Schedule](https://docs.apify.com/platform/schedules) (e.g. daily). Each run emits only new or changed products, each tagged with a `changeType` (price_drop, price_rise, moq_change, new); unchanged products are not billed. `new` means new to your watch list: Alibaba reshuffles Best Match results between visits, so a search sorted by sales volume gives a steadier watch.

**Is scraping Alibaba.com legal?** This Actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws and Alibaba's terms.

**A field is null - why?** The source did not publish it for that product or supplier: see **Honest limits** above. A product the Actor could not open on any try ships as its search card, and the run's status message says how many and why.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Alibaba Group or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"Alibaba.com" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Alibaba.com product, is not authorised or certified by Alibaba Group, and does not distribute Alibaba.com software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Data & lawful use

This Actor reads business and professional listings that the professionals themselves published to be found: names, roles, firms, ratings and the contact details shown on the public listing. Because those details belong to identifiable people, treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for B2B prospecting or market research), keep any outreach relevant to the professional's line of work, honour opt-outs and deletion requests, and do not use the output for spam.

Under [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

### Need help?

Open an issue on the Actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome - this Actor is actively maintained.

# Actor input Schema

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

Keywords to search Alibaba.com for, e.g. <code>wireless earbuds</code>, <code>stainless steel water bottle</code>, <code>solar panel</code>. Each keyword is scraped as its own product feed, and the keywords share Max products equally. Leave empty if you only use Start URLs / Product IDs.

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

Alibaba.com links to scrape: product pages (<code>/product-detail/...html</code>; each returns a full product-detail row, billed as a product detail), search pages (<code>/trade/search?SearchText=...</code>, kept with every filter the link carries; <code>/showroom/...</code> pages run as a keyword search) or supplier minisites (<code>https://\<name>.en.alibaba.com/</code>, any of its pages: the supplier's product list is read). You can also link a text file or a Google Sheet of URLs here, or use the box below. Used in addition to the keyword search.

## `urlsFromFile` (type: `string`):

Paste a list of Alibaba.com links (one per line, CSV columns are fine) or one link to a .txt / .csv file or a Google Sheet shared as "Anyone with the link". They are read like Start URLs.

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

Alibaba.com product IDs (e.g. <code>1601295664563</code>) or product links to fetch full product detail for directly. Each returns a full product-detail row, billed as a product detail; an ID Alibaba.com does not have is named on the run card and not billed.

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

Only keep products whose lowest unit price is at least this much, in the currency of the country below (USD for US). Sent to Alibaba's own price filter and checked on every row's priceMin.

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

Only keep products whose lowest unit price is at most this much, in the currency of the country below (USD for US). Sent to Alibaba's own price filter and checked on every row's priceMin.

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

Only keep products whose minimum order quantity is at most this many units - useful for finding low-MOQ suppliers for small / test orders. Sent to Alibaba's own MOQ filter and checked on every row.

## `supplierType` (type: `string`):

Keep only products from one kind of supplier. Verified suppliers: Alibaba's own Verified Supplier filter (confirmed on the product page when details are on). Gold suppliers: products whose card shows Alibaba's gold supplier badge. Manufacturers / Trading companies: read from the business type on each product's own page, so this option opens every product page and its rows are billed as product details.

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

Keep only products whose supplier is located in this country: an ISO code or a name (e.g. <code>CN</code>, <code>India</code>, <code>VN</code>, <code>US</code>). Sent to Alibaba's own supplier-location filter and checked on every row. Leave blank for all.

## `minRating` (type: `string`):

Only keep products whose supplier's product-quality score (the 0-5 rating on the search card, from buyers' reviews of that supplier) is at least this. Drops suppliers without reviews when set.

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

Only keep products covered by Alibaba Trade Assurance (order protection). Sent to Alibaba's own Trade Assurance filter; each product's page confirms it, so rows are full product-detail rows, billed as product details.

## `country` (type: `string`):

The country Alibaba prices and ships for: an ISO code or a name (e.g. <code>US</code>, <code>GB</code>, <code>Germany</code>, <code>AU</code>). Sets Alibaba's own country and currency setting for the run, so prices come in that country's currency (US: USD, GB: GBP, euro countries: EUR); every row's <code>currency</code> names the currency of its prices, and product detail always also carries the USD ladder prices. A country I do not recognise stops the run before anything is billed.

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

Maximum number of product records to scrape across all searches / URLs (shared equally between them). Alibaba.com search returns ~48 products per page. In monitor mode this is the watch window: the first Max products of each search are checked every run.

## `includeProductDetails` (type: `boolean`):

Open each product to add tiered wholesale (FOB) ladder prices, the full SKU/variant matrix, every product attribute/spec, all images & the product video, certifications, packaging & production lead times, category path, customization options, Trade Assurance and the full supplier company profile. Adds one page fetch per product; these rows are billed as product details instead of products.

## `outputSupplierLeads` (type: `boolean`):

In addition to product records, push one deduplicated lead record per unique supplier (type = "supplier") with company name, business type, country, years on Alibaba, employees, response time, on-time delivery rate, Gold/Verified/Trade-Assurance status, Alibaba's verified profile figures (verified identity, headcount, factory size, production lines, main markets, 6-month online orders and revenue), contact name, ratings, sample products and a 0-100 lead score. Implies product detail for the richest firmographics. The leads follow the product rows in the dataset. (Alibaba does not publish supplier emails/phones - contact is via the supplier's minisite & the platform.)

## `deduplicateProducts` (type: `boolean`):

Drop duplicate products that appear in more than one search / page in the same run.

## `monitorMode` (type: `boolean`):

Remember products across runs in a named key-value store and emit ONLY products that are new OR whose price (by 2% or more) or MOQ changed since the last run (each carries a <code>changeType</code>: new / price_drop / price_rise / moq_change). Each run checks the first Max products of every search, judged on the search card before any product page is opened, so unchanged products are free; the first run of a search also records the next pages, unbilled, as its baseline. Alibaba reshuffles its Best Match results between visits, so <code>new</code> means new to this watch, not newly listed: for a steadier watch paste a search link sorted by sales volume (<code>sortType=prodSold180</code>) into Start URLs. Pair with Apify Schedules for price-drop alerts.

## `monitorKey` (type: `string`):

Names the monitor's memory store so you can run several independent monitors (e.g. one per keyword). Reuse the same key to keep tracking the same feed.

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

Parallel product-page fetches. Keep low (2-4) so Alibaba's anti-bot doesn't challenge the proxy.

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

Proxies to use. The default (Apify Proxy, no group chosen) is the Actor's own plan: Apify datacenter exits, each session primed with a homepage visit, switching to Apify residential exits only when Alibaba keeps refusing datacenter. Any other choice (proxy groups, a country, your own proxy URLs, no proxy) is used exactly as you set it.

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "supplierType": "any",
  "minRating": "0",
  "tradeAssuranceOnly": false,
  "country": "US",
  "maxProducts": 100,
  "includeProductDetails": false,
  "outputSupplierLeads": false,
  "deduplicateProducts": true,
  "monitorMode": false,
  "monitorKey": "default",
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped Alibaba.com product records and optional supplier/manufacturer lead records as JSON items in the default dataset.

# 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 = {
    "searchTerms": [
        "wireless earbuds"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/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 = {
    "searchTerms": ["wireless earbuds"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/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 '{
  "searchTerms": [
    "wireless earbuds"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapesage/alibaba-scraper --silent --output-dataset

```

## MCP server setup

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