# Alibaba.com Wholesale Sourcing & Supplier Vetting Finder (`vexaloom-labs/alibaba-com-wholesale-sourcing-and-supplier`) Actor

Search Alibaba.com's B2B marketplace (not AliExpress) for products or suppliers. Get price, MOQ, Trade Assurance status, supplier verification, years on platform, and response time for each listing.

- **URL**: https://apify.com/vexaloom-labs/alibaba-com-wholesale-sourcing-and-supplier.md
- **Developed by:** [vexaloom-labs](https://apify.com/vexaloom-labs) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Wholesale Sourcing & Supplier Vetting Finder

Sourcing from Alibaba.com means comparing manufacturers on more than price. Trade Assurance coverage, third-party assessment, tenure, response rate, and minimum order quantities decide whether a supplier is worth contacting. This actor reads Alibaba.com's public wholesale and country-search pages, then returns either product rows or supplier shortlists — no Alibaba login, cookie, API key, or proxy setup required.

### What this actor does

- **Search products** by keyword across Alibaba.com's wholesale catalogue and paginate through the source's own result pages.
- **Search suppliers** by aggregating the unique suppliers behind those product results, one row per supplier.
- **Fetch product details** from product URLs or numeric product IDs: price band, MOQ, attributes, images, supplier performance, Trade Assurance, and sold count.
- **Fetch supplier profiles** from minisite URLs or supplier IDs: tenure, location, business type, employees, factory size, main markets, certifications, payment terms, and recent transaction volume.
- Filter by Trade Assurance, third-party assessed suppliers, supplier country, price band, supplier tenure, and supplier rating.
- Sort by price, rating, tenure, or transaction level before the `maxItems` cut-off.
- Omit any field Alibaba did not publish for a listing instead of returning blank or fabricated values.

### Modes

| Mode | What it returns | Input it uses |
|---|---|---|
| `searchProducts` | One row per product listing | `keyword` plus optional filters |
| `searchSuppliers` | One row per unique supplier behind the matching products | `keyword` plus optional filters |
| `productDetails` | Full detail for each product URL/ID | `startUrls` |
| `supplierDetails` | Full profile for each supplier URL/ID | `startUrls` |

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | Select | `searchProducts` | One of the four modes above. |
| `keyword` | String | `LED lights` | Product or supplier keyword for the two search modes. |
| `tradeAssuranceOnly` | Boolean | `false` | Keep only listings with Alibaba Trade Assurance. |
| `verifiedSupplierOnly` | Boolean | `false` | Keep only Gold Suppliers or third-party assessed suppliers. |
| `supplierCountry` | String | – | Two-letter ISO code, e.g. `CN`, `IN`, `PK`, `US`. |
| `minPrice` / `maxPrice` | Number | – | Filter on the lowest listed unit price. |
| `minSupplierYears` | Integer | – | Minimum years the supplier has been on Alibaba.com. |
| `minSupplierRating` | Number | – | Minimum supplier rating out of 5. |
| `sortBy` | Select | `relevance` | `relevance`, `priceLowToHigh`, `priceHighToLow`, `supplierRating`, `yearsOnPlatform`, or `transactionLevel`. |
| `startUrls` | Array | – | Product URLs/IDs for `productDetails`; supplier minisite URLs or subdomains for `supplierDetails`. |
| `maxItems` | Integer | `20` | Maximum records to save (1–200). |
| `maxPages` | Integer | `5` | Safety limit on result pages (about 40 offers each). |

#### Example: compare verified Indian LED suppliers

```json
{
  "mode": "searchProducts",
  "keyword": "LED lights",
  "supplierCountry": "IN",
  "tradeAssuranceOnly": true,
  "verifiedSupplierOnly": true,
  "minSupplierYears": 3,
  "sortBy": "priceLowToHigh",
  "maxItems": 30
}
```

#### Example: build a supplier shortlist

```json
{
  "mode": "searchSuppliers",
  "keyword": "solar panel",
  "tradeAssuranceOnly": true,
  "minSupplierRating": 4.5,
  "sortBy": "transactionLevel",
  "maxItems": 25
}
```

#### Example: enrich known products

```json
{
  "mode": "productDetails",
  "startUrls": [
    "https://www.alibaba.com/product-detail/4-Sides-Solar-Garden-Light-Motion_1600132781729.html",
    "1600132781729"
  ]
}
```

#### Example: inspect a supplier minisite

```json
{
  "mode": "supplierDetails",
  "startUrls": ["https://shinedo.en.alibaba.com/"]
}
```

### Output per product

| Field | Description |
|---|---|
| `productId` | Alibaba product identifier. |
| `title` | Listing title. |
| `price` | Original price text, e.g. `US $1.30-$7.36`. |
| `priceMin` / `priceMax` | Numeric price band. |
| `priceCurrency` | Currency parsed from the price text. |
| `priceUnit` / `unit` | Unit the price and MOQ refer to. |
| `minOrder` / `minOrderQuantity` | MOQ text and numeric quantity. |
| `supplier` | Supplier company name. |
| `supplierId` | Alibaba company ID on search rows; minisite slug on detail rows. |
| `supplierSlug` | Minisite subdomain when available. |
| `supplierUrl` | Supplier profile or minisite link. |
| `supplierLocation` / `supplierCountryCode` | Supplier country. |
| `supplierRating` / `supplierRatingValue` | Store rating out of 5. |
| `supplierReviewCount` | Number of store reviews. |
| `supplierProductRating` | Product review score when Alibaba exposes it. |
| `yearsOnPlatform` / `supplierYears` | Supplier tenure on Alibaba.com. |
| `tradeAssurance` | Present when the supplier offers Trade Assurance. |
| `supplierVerified` / `supplierGold` | Third-party assessment and Gold Supplier flags. |
| `supplierResponseRate` | Supplier response rate. |
| `supplierTransactionLevel` | Alibaba transaction level. |
| `supplierHistoryGmv` / `supplierOrderCount` | Recent trade history. |
| `mainProducts` | Supplier's main product lines. |
| `soldCount` | Units sold, when the result card publishes it. |
| `responseTime` | Typical response time on detail rows. |
| `onTimeDeliveryRate` / `reorderRate` | Supplier performance on detail rows. |
| `productAttributes` | Full attribute map on detail rows (certifications, IP rating, material, etc.). |
| `category` | Breadcrumb category path on detail rows. |
| `images` / `imageUrl` | Product gallery and primary image. |
| `productUrl` | Canonical product page. |
| `searchKeyword` / `position` | Search context on search rows. |
| `recordType` / `scrapedAt` | `product` and collection timestamp. |

### Output per supplier

| Field | Description |
|---|---|
| `supplierId` / `companyId` | Minisite slug when available (Alibaba company ID otherwise) plus the company ID. |
| `supplier` | Company name. |
| `supplierUrl` / `supplierLogo` | Minisite link and logo. |
| `supplierLocation` / `supplierCountryCode` | Province/country and ISO code. |
| `supplierRating` / `supplierRatingValue` / `supplierReviewCount` | Store rating and review count. |
| `yearsOnPlatform` / `supplierYears` | Tenure on Alibaba.com. |
| `tradeAssurance` | Present when Trade Assurance is offered. |
| `supplierVerified` / `supplierGold` | Assessment and Gold Supplier flags. |
| `supplierResponseRate` / `supplierTransactionLevel` | Response and transaction performance. |
| `supplierHistoryGmv` / `supplierOrderCount` | Recent trade history. |
| `mainProducts` | Main product lines. |
| `matchingProductCount` | Products from this supplier in the current result set. |
| `priceMin` / `priceMax` / `priceCurrency` | Lowest and highest listed prices among those products. |
| `yearEstablished`, `employees`, `factorySize`, `businessType` | Firmographics on supplier-profile rows. |
| `supplierMainMarkets`, `annualRevenue`, `certifications` | Company overview fields on supplier-profile rows. |
| `acceptedPaymentMethods`, `acceptedDeliveryTerms`, `acceptedPaymentCurrency` | Trade terms on supplier-profile rows. |
| `recentTransactionAmount` / `recentTransactionCount` | Alibaba's six-month transaction summary. |
| `assessmentCompany` | Third-party assessment provider. |
| `supplierDescription` / `productGroups` | Company description and product groups. |
| `recordType` / `scrapedAt` | `supplier` and collection timestamp. |

### Data source and reliability

Alibaba.com's interactive `/trade/search` page is captcha-protected. This actor instead uses the public SEO wholesale pages (`/wholesale/<keyword>.html`) and country-search pages (`/countrysearch/<CC>/<keyword>.html`), which embed the full offer payload in `window._PAGE_DATA_`. Pagination follows the source's own `_<page>.html` URL rule, and duplicate listings across pages are removed by product ID.

Product and supplier detail pages are fetched only when that mode is selected. They occasionally show a captcha; the actor retries with backoff and, on Apify, can fall back to the included datacenter proxy. No user proxy or credential is needed.

### Limits

- Search pages expose around 40 offers per page; `maxPages` caps how deep a run goes. Alibaba caps pagination at 100 pages for these SEO routes.
- United States and some other country catalogues are smaller than the China catalogue; use `supplierCountry` to target a market.
- Trade Assurance and third-party assessment flags are shown only when Alibaba publishes them for that supplier.
- Supplier contact emails and phone numbers are not public. Use the supplier's Alibaba profile to send an inquiry.
- Prices are the seller's listed unit prices. Shipping, duties, and taxes are not included.

### FAQ

**Is this Alibaba.com or AliExpress?**
Alibaba.com's B2B wholesale marketplace, not AliExpress's retail storefront.

**Do I need an Alibaba account or cookies?**
No. Every mode works from public pages with no login.

**Why is the price a range?**
Wholesale sellers publish tiered or range pricing because the unit price depends on order volume. `priceMin` and `priceMax` give the numeric band; `price` preserves the seller's original text.

**What counts as a verified supplier?**
A Gold Supplier or a supplier assessed by a third-party inspection company. The two signals are also reported separately as `supplierGold` and `supplierVerified`.

**Why do some rows lack MOQ, sold count, or response time?**
Alibaba does not publish those fields on every page type. They are omitted, never filled with placeholders.

**Can I get more than 40 results?**
Yes. Raise `maxItems` and `maxPages`; the actor paginates and de-duplicates by product ID or supplier ID.

**Is this affiliated with Alibaba.com?**
No. This actor independently reads public Alibaba.com pages and is not affiliated with or endorsed by Alibaba Group.

# Actor input Schema

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

Search products, search suppliers, or fetch specific product/supplier pages.

## `keyword` (type: `string`):

Product or supplier keyword, e.g. 'LED lights' or 'solar panel'. Used by both search modes.

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

Keep only products from suppliers that offer Alibaba Trade Assurance order protection.

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

Keep only Gold Suppliers or suppliers assessed by a third-party inspection company.

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

Optional two-letter ISO country code, e.g. CN, IN, PK, US. Leave empty for all countries.

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

Drop offers whose lowest listed unit price is below this value.

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

Drop offers whose lowest listed unit price is above this value.

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

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

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

Keep suppliers rated at or above this score out of 5.

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

Sort the collected records before the max-items cut-off.

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

Used by the two detail modes. Paste Alibaba.com product URLs or numeric product IDs, or supplier minisite URLs or supplier IDs. For supplier profile URLs you can also use https://<supplier>.en.alibaba.com/.

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

Maximum number of product or supplier records to save.

## `maxPages` (type: `integer`):

Safety limit on result pages (about 40 offers per page). Increase it when filtering heavily or requesting many records.

## Actor input object example

```json
{
  "mode": "searchProducts",
  "keyword": "LED lights",
  "tradeAssuranceOnly": false,
  "verifiedSupplierOnly": false,
  "sortBy": "relevance",
  "maxItems": 3,
  "maxPages": 1
}
```

# Actor output Schema

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

Dataset containing all scraped Alibaba B2B products and suppliers.

# 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": "searchProducts",
    "keyword": "LED lights",
    "tradeAssuranceOnly": false,
    "verifiedSupplierOnly": false,
    "sortBy": "relevance",
    "maxItems": 3,
    "maxPages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("vexaloom-labs/alibaba-com-wholesale-sourcing-and-supplier").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": "searchProducts",
    "keyword": "LED lights",
    "tradeAssuranceOnly": False,
    "verifiedSupplierOnly": False,
    "sortBy": "relevance",
    "maxItems": 3,
    "maxPages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("vexaloom-labs/alibaba-com-wholesale-sourcing-and-supplier").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": "searchProducts",
  "keyword": "LED lights",
  "tradeAssuranceOnly": false,
  "verifiedSupplierOnly": false,
  "sortBy": "relevance",
  "maxItems": 3,
  "maxPages": 1
}' |
apify call vexaloom-labs/alibaba-com-wholesale-sourcing-and-supplier --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vexaloom-labs/alibaba-com-wholesale-sourcing-and-supplier"
        }
    }
}
```

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/IvuYtDYqV02cHwZ4H/builds/t2FhX8KksV1EvLzIo/openapi.json
