# Alibaba Product Scraper Cheap (`data_api/alibaba-product-scraper-cheap`) Actor

Extracts high-quality product data, price ranges, MOQ, ratings, and supplier details from Alibaba search results and category URLs using built-in bypass infrastructure.

- **URL**: https://apify.com/data\_api/alibaba-product-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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 Product Scraper

![Alibaba Product Scraper](cover.jpg)

Sourcing on Alibaba means opening dozens of tabs, squinting at price tiers, copying MOQs, and trying to remember which supplier quoted what. This scraper does that legwork for you. Hand it a keyword or a search URL and it pulls back a clean row per product: name, current price, wholesale price tiers, minimum order quantity, supplier name and country, ratings, order volume, and the listing link. Run one keyword or a whole list, and export the lot to JSON, CSV, or Excel.

### What you get

One tidy row per product, with the same set of fields every time so your sheet or database stays predictable. Three groups of data per listing:

- **Product** — `productName`, `currentPrice`, `priceTier`, `minOrderQuantity`, `itemUrl`, `imageLink`, `salePrice`, `discountText`
- **Supplier** — `sellerName`, `sellerUrl`, `verifiedYears`, `supplierCountry`, `countryCode`
- **Signals** — `starRating`, `reviewsTotal`, `ordersVolume`, plus `productId`, `searchInput`, and `collectedAt`

### Quick start

1. Hit **Try for free** and open the input form.
2. Type keywords into **Search terms**, or paste Alibaba search/category links into **Product or category URLs**.
3. Set **Results per search** and leave residential routing on for the smoothest run.
4. Press **Start**, then export your results as JSON, CSV, Excel, or XML when the run finishes.

![How it works](how-it-works.jpg)

### Use cases

- **Product sourcing** — line up suppliers for the same item and compare price tiers and MOQs side by side
- **Price monitoring** — track how wholesale prices and promos shift over time for the products you sell
- **Competitor research** — see what rivals are sourcing and at roughly what cost
- **Supplier vetting** — pull verified years, country, ratings, and order volume to shortlist trustworthy vendors
- **Market sizing** — gauge how many suppliers and listings exist for a niche before you commit
- **Catalog building** — turn a search term into a ready-to-import product list with images and links

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchTerms` | array of strings | One of `searchTerms` or `targetUrls` | Keywords to look up on Alibaba, one per line. Each term is searched separately. |
| `targetUrls` | array of strings | One of `searchTerms` or `targetUrls` | Full Alibaba search result or category URLs to pull products from directly. |
| `useResidentialProxies` | boolean | No | Route traffic through residential and mobile IPs to dodge blocks. Default `true`. |
| `useBrowserRendering` | boolean | No | Render pages in a headless browser to clear harder security checks. Slower; default `false`. |
| `resultsLimit` | integer | No | Products to pull per keyword or URL. Default `50` (max `1000`). |
| `timeoutSeconds` | integer | No | Seconds to wait for each page before retrying. Default `45`. |

#### Example input

```json
{
    "searchTerms": [
        "stainless steel water bottle"
    ],
    "targetUrls": [
        "https://www.alibaba.com/trade/search?keywords=stainless+steel+water+bottle"
    ],
    "useResidentialProxies": true,
    "useBrowserRendering": false,
    "resultsLimit": 50,
    "timeoutSeconds": 45
}
````

### Output

Every product becomes one row, and each field is always present — values Alibaba does not expose come back as `null` so your dataset stays rectangular.

#### Example output

```json
{
    "productId": "1601723870128",
    "productName": "Insulated 750ml Stainless Steel Water Bottle Double Wall Vacuum Sports Flask",
    "itemUrl": "https://www.alibaba.com/product-detail/Insulated-750ml-Stainless-Steel-Water-Bottle_1601723870128.html",
    "imageLink": "https://s.alicdn.com/@sc04/kf/Hbe720e2d36304910aafb70ec7c4d92bfz.jpg_300x300.jpg",
    "currentPrice": "$3.20 - $4.85",
    "priceTier": "$3.20 - $4.85",
    "minOrderQuantity": "Min. order: 100 pieces",
    "sellerName": "Yongkang Sunrise Houseware Co., Ltd.",
    "sellerUrl": "https://sunrisehouseware.en.alibaba.com/company_profile.html",
    "verifiedYears": 6,
    "starRating": 4.7,
    "reviewsTotal": 214,
    "ordersVolume": "30,000+ sold",
    "supplierCountry": "China",
    "countryCode": "CN",
    "salePrice": "$2.95",
    "discountText": "8% off",
    "searchInput": "stainless steel water bottle",
    "collectedAt": "2026-06-29T12:00:00.000000+00:00"
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `productId` | string | Alibaba's own identifier for the listing |
| `productName` | string | Listing title with HTML markup stripped |
| `itemUrl` | string | Full link to the product detail page |
| `imageLink` | string | Direct URL to the main product photo |
| `currentPrice` | string | Listed price or price text as shown |
| `priceTier` | string | Quantity-based price range when wholesale tiers exist |
| `minOrderQuantity` | string | Smallest order the supplier accepts (MOQ) |
| `sellerName` | string | Trading name of the supplier or factory |
| `sellerUrl` | string | Link to the supplier's storefront on Alibaba |
| `verifiedYears` | integer | Years held as a Gold Supplier |
| `starRating` | number | Average product review score |
| `reviewsTotal` | integer | Number of reviews on the listing |
| `ordersVolume` | string | Orders placed or units sold |
| `supplierCountry` | string | Country or region the supplier ships from |
| `countryCode` | string | Two-letter ISO country code |
| `salePrice` | string | Active promotional price when one is running |
| `discountText` | string | Discount amount or percentage |
| `searchInput` | string | The keyword or URL that surfaced this product |
| `collectedAt` | string | ISO 8601 UTC timestamp when the row was captured |

### Tips for best results

- **Keep residential routing on.** Alibaba blocks hard, and residential IPs clear most pages. Only turn it off if you are testing and want faster, cheaper runs.
- **Turn on browser rendering only when results come back empty.** It helps past stubborn security checks but slows every request, so reach for it as a fallback.
- **Start with a small `resultsLimit`.** Try 20 to 50 first to confirm the output fits your pipeline, then raise it for the full pull.
- **Raise `timeoutSeconds` to about 60** if you see frequent timeouts on residential proxies or during busy hours.
- **Mix keywords and URLs freely.** You can run both `searchTerms` and `targetUrls` in the same job; each is processed on its own.

### How can I use Alibaba product data?

**How can I use the Alibaba Product Scraper to compare suppliers for one product?**
Search the same keyword and the scraper returns every matching listing as a row with `currentPrice`, `priceTier`, `minOrderQuantity`, `sellerName`, `supplierCountry`, and `verifiedYears`. Sort by price tier or MOQ in a spreadsheet and you have a clear supplier shortlist in minutes, no tab-juggling.

**How can I track Alibaba wholesale prices over time?**
Run the same `searchTerms` on a schedule and save each export. Because every row carries `currentPrice`, `priceTier`, `salePrice`, and `collectedAt`, you can chart how quotes move week to week and catch promotions early — useful for resellers and procurement teams watching cost trends.

**How can I pull Alibaba product data into a spreadsheet or database?**
Set `resultsLimit` to the volume you need and export the dataset as CSV, JSON, or Excel. Each product is one flat row with consistent keys, so it drops straight into Google Sheets, Excel, or a database table you can join against your own catalog or pricing data.

**How can I vet Alibaba suppliers before ordering?**
Each row includes `verifiedYears`, `supplierCountry`, `starRating`, `reviewsTotal`, and `ordersVolume`. Filter for suppliers with longer verified history, solid ratings, and real order volume to weed out thin or risky listings before you reach out.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

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

Keywords to look up on Alibaba, one per line (for example 'bluetooth speaker' or 'cotton tote bag'). Each term is searched on its own.

## `targetUrls` (type: `array`):

Paste full Alibaba search result or category page URLs to pull products straight from those pages.

## `useResidentialProxies` (type: `boolean`):

Strongly advised for Alibaba. Sends traffic through residential and mobile IP pools so tough blocks are far less likely.

## `useBrowserRendering` (type: `boolean`):

Runs each page through a headless browser to execute JavaScript and clear harder security checks. Slower, so leave it off unless results come back empty.

## `resultsLimit` (type: `integer`):

How many products to pull for each keyword or URL before moving on.

## `timeoutSeconds` (type: `integer`):

Seconds to wait for each page to load before giving up and retrying.

## Actor input object example

```json
{
  "searchTerms": [
    "stainless steel water bottle"
  ],
  "targetUrls": [
    "https://www.alibaba.com/trade/search?keywords=stainless+steel+water+bottle"
  ],
  "useResidentialProxies": true,
  "useBrowserRendering": false,
  "resultsLimit": 50,
  "timeoutSeconds": 45
}
```

# 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": [
        "stainless steel water bottle"
    ],
    "targetUrls": [
        "https://www.alibaba.com/trade/search?keywords=stainless+steel+water+bottle"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/alibaba-product-scraper-cheap").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": ["stainless steel water bottle"],
    "targetUrls": ["https://www.alibaba.com/trade/search?keywords=stainless+steel+water+bottle"],
}

# Run the Actor and wait for it to finish
run = client.actor("data_api/alibaba-product-scraper-cheap").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 '{
  "searchTerms": [
    "stainless steel water bottle"
  ],
  "targetUrls": [
    "https://www.alibaba.com/trade/search?keywords=stainless+steel+water+bottle"
  ]
}' |
apify call data_api/alibaba-product-scraper-cheap --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Alibaba Product Scraper Cheap",
        "description": "Extracts high-quality product data, price ranges, MOQ, ratings, and supplier details from Alibaba search results and category URLs using built-in bypass infrastructure.",
        "version": "0.0",
        "x-build-id": "SKzo0BOdGKRWsahaV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/data_api~alibaba-product-scraper-cheap/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-data_api-alibaba-product-scraper-cheap",
                "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/data_api~alibaba-product-scraper-cheap/runs": {
            "post": {
                "operationId": "runs-sync-data_api-alibaba-product-scraper-cheap",
                "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/data_api~alibaba-product-scraper-cheap/run-sync": {
            "post": {
                "operationId": "run-sync-data_api-alibaba-product-scraper-cheap",
                "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",
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Keywords to look up on Alibaba, one per line (for example 'bluetooth speaker' or 'cotton tote bag'). Each term is searched on its own.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "targetUrls": {
                        "title": "Product or category URLs",
                        "type": "array",
                        "description": "Paste full Alibaba search result or category page URLs to pull products straight from those pages.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "useResidentialProxies": {
                        "title": "Route through residential IPs",
                        "type": "boolean",
                        "description": "Strongly advised for Alibaba. Sends traffic through residential and mobile IP pools so tough blocks are far less likely.",
                        "default": true
                    },
                    "useBrowserRendering": {
                        "title": "Render pages in a browser",
                        "type": "boolean",
                        "description": "Runs each page through a headless browser to execute JavaScript and clear harder security checks. Slower, so leave it off unless results come back empty.",
                        "default": false
                    },
                    "resultsLimit": {
                        "title": "Results per search",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "How many products to pull for each keyword or URL before moving on.",
                        "default": 50
                    },
                    "timeoutSeconds": {
                        "title": "Timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Seconds to wait for each page to load before giving up and retrying.",
                        "default": 45
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
