# Alibaba Scraper 🛒 (supplier trust flags + MOQ pricing) (`tagadanar/alibaba-scraper`) Actor

Find China suppliers and product prices fast: title, price, tiered MOQ pricing, minimum order quantity, supplier name and storefront, plus Verified Supplier and Trade Assurance trust flags. One flat price per product, platform usage included. No API key.

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

## Pricing

from $3.50 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Alibaba Scraper 🛒 (supplier trust flags + MOQ pricing)

Turn any Alibaba.com search into a clean spreadsheet of products and the suppliers
behind them. Every row carries the price and the tiered minimum-order pricing, the
minimum order quantity, the supplier name and storefront link, how many years the
supplier has been a Verified member, the certifications shown on the listing, and
the review score. Give it a keyword or paste a search URL and it works down the
result pages until it has what you asked for.

Built for the part that usually goes wrong: finishing the run. Alibaba throttles
repeated requests, and a lot of scrapers stall or come back half empty. This one
paces itself and rotates so a search returns a full set instead of a handful.

No API key, no login, no template to fill in. Results come back as flat JSON (and
CSV/Excel from the dataset export).

### What you get

One record per product:

| Field | What it is |
|---|---|
| `title` | Product title as listed |
| `url` | Link to the product detail page |
| `image` | Main product image |
| `priceText` | Price exactly as shown, e.g. `€37.94` or `€5.74-7.50` |
| `priceMin` / `priceMax` | The price range as numbers |
| `currency` | Currency of the shown price |
| `priceTiers` | Tiered MOQ pricing when the listing publishes a price ladder |
| `minOrder` / `minOrderText` | Minimum order quantity, as a number and as shown |
| `supplierName` | The company behind the product |
| `supplierUrl` | The supplier's Alibaba storefront |
| `supplierCountry` | Supplier country code, e.g. `CN` |
| `supplierYears` | Years the supplier has held Verified membership |
| `isVerifiedSupplier` | Whether the supplier is a Verified (ex-Gold) member |
| `hasTradeAssurance` | Whether Trade Assurance is advertised on the card |
| `certifications` | Product certifications on the listing, e.g. `["CE","FCC","RoHS"]` |
| `badges` | Any extra supplier badges shown |
| `crown` | Whether Alibaba tags the supplier as a top/crown supplier |
| `reviewScore` / `reviewCount` | Buyer rating and number of reviews |
| `searchTerm` / `sourceUrl` / `scrapedAt` | Where the row came from and when |

Turn on **Add supplier trust profile** to also open each supplier's storefront and
add their Verified tenure, Trade Assurance status, response rate and business type
as a `supplierProfile` object. It only bills when a profile is actually returned.

### Who uses it

- **Sourcing agents and importers** comparing the same product across dozens of
  suppliers, sorting by minimum order and Verified tenure before reaching out.
- **Dropshippers and Amazon/eBay sellers** pulling a category into a sheet to find
  the lowest MOQ and the best price break for a first order.
- **Procurement teams** building an approved-supplier shortlist filtered on
  certifications (CE, FCC, RoHS) and Trade Assurance.
- **Market and pricing analysts** tracking how many suppliers offer a product and
  where the price bands sit.

### Input examples

Search by keyword:

```json
{
  "search": ["stainless steel water bottle"],
  "maxResults": 100
}
````

Several searches at once, with supplier profiles:

```json
{
  "search": ["led strip light", "solar panel 400w", "yoga mat"],
  "maxResults": 300,
  "scrapeSupplierProfiles": true
}
```

Paste a search URL straight from your browser, or a single product page:

```json
{
  "search": [
    "https://www.alibaba.com/trade/search?keywords=cordless+drill&tab=all",
    "https://www.alibaba.com/product-detail/Widget_1600933801964.html"
  ],
  "maxResults": 50
}
```

### Pricing

You pay per product returned, and per supplier profile only when one is actually added. Platform usage is included in the price, so there is no subscription and no usage line on your bill.

| Event | Price |
| --- | --- |
| Actor start | $0.001 per run |
| Product scraped | $5.00 per 1,000 |
| Supplier profile | $5.00 per 1,000 (only when **Add supplier trust profile** returns one) |

The tiny start fee covers runs that return nothing; on any normal search it is noise next to the per-product price.

### FAQ

**Do I need an API key or an Alibaba account?**
No. Give it a keyword or a URL and run it.

**Do I need to set anything up so a run finishes?**
No. Alibaba limits how many pages one address can pull before it asks for a
check, so the actor spaces requests out for you and comes back with a full set.
It handles that on its own, nothing to configure.

**Can I get tiered price breaks?**
Yes, when the listing publishes them they come back in `priceTiers` as quantity
and price pairs. The single shown price and its range are always in `priceText`,
`priceMin` and `priceMax`.

**How do I get the full supplier profile, not just the card flags?**
Turn on **Add supplier trust profile**. The extra storefront lookup adds Verified
tenure, Trade Assurance, response rate and business type.

**What does it cost to run?**
One flat price per product delivered, with platform usage included. No separate
usage bill to reconcile. Products that fail to parse are not billed.

**Is this affiliated with Alibaba?**
No. It reads public listing pages, the same ones anyone can open in a browser.

### Related actors

- **Europages Scraper** for European B2B suppliers with contact emails and VAT IDs.
- **IndiaMART Scraper** for India's largest B2B marketplace: suppliers, cities and
  contact details.

Use Alibaba for China-and-global sourcing at scale, and the other two when you
need Europe or India coverage on the same buying project.

***

Keywords: alibaba scraper, alibaba.com scraper, alibaba product scraper, alibaba
supplier scraper, b2b supplier data, wholesale supplier list, MOQ pricing,
minimum order quantity, verified supplier, gold supplier, trade assurance,
sourcing data, import export leads, alibaba api alternative, dropshipping supplier
research, procurement supplier list.

# Actor input Schema

## `search` (type: `array`):

One entry per line: a product keyword exactly as you would type it into Alibaba's search box (e.g. <code>stainless steel water bottle</code>), an Alibaba search-results URL, or a single product-detail URL. Keywords and URLs can be mixed.

## `maxResults` (type: `integer`):

Stop after this many products across all searches. You are only charged for products actually delivered.

## `scrapeSupplierProfiles` (type: `boolean`):

Also open each supplier's storefront to add their Gold Supplier tenure, Verified Supplier status, Trade Assurance and response rate. Slower, and billed as a separate supplier-profile item only when the profile is actually returned.

## Actor input object example

```json
{
  "search": [
    "stainless steel water bottle"
  ],
  "maxResults": 20,
  "scrapeSupplierProfiles": false
}
```

# Actor output Schema

## `products` (type: `string`):

One item per product 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 = {
    "search": [
        "stainless steel water bottle"
    ],
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/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 = {
    "search": ["stainless steel water bottle"],
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("tagadanar/alibaba-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "search": [
    "stainless steel water bottle"
  ],
  "maxResults": 20
}' |
apify call tagadanar/alibaba-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=tagadanar/alibaba-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Alibaba Scraper 🛒 (supplier trust flags + MOQ pricing)",
        "description": "Find China suppliers and product prices fast: title, price, tiered MOQ pricing, minimum order quantity, supplier name and storefront, plus Verified Supplier and Trade Assurance trust flags. One flat price per product, platform usage included. No API key.",
        "version": "0.1",
        "x-build-id": "2a5eMjC9ZHiLDmegv"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/tagadanar~alibaba-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-tagadanar-alibaba-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/tagadanar~alibaba-scraper/runs": {
            "post": {
                "operationId": "runs-sync-tagadanar-alibaba-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/tagadanar~alibaba-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-tagadanar-alibaba-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "search"
                ],
                "properties": {
                    "search": {
                        "title": "Search terms or URLs",
                        "minItems": 1,
                        "type": "array",
                        "description": "One entry per line: a product keyword exactly as you would type it into Alibaba's search box (e.g. <code>stainless steel water bottle</code>), an Alibaba search-results URL, or a single product-detail URL. Keywords and URLs can be mixed.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max products",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Stop after this many products across all searches. You are only charged for products actually delivered.",
                        "default": 100
                    },
                    "scrapeSupplierProfiles": {
                        "title": "Add supplier trust profile",
                        "type": "boolean",
                        "description": "Also open each supplier's storefront to add their Gold Supplier tenure, Verified Supplier status, Trade Assurance and response rate. Slower, and billed as a separate supplier-profile item only when the profile is actually returned.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
