# AliExpress Product Search Scraper (`myagizm/aliexpress-products-scraper`) Actor

Search public product listings and collect product titles, current prices, currencies, ratings, review counts, and sales signals.

- **URL**: https://apify.com/myagizm/aliexpress-products-scraper.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.20 / 1,000 product results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## AliExpress Product Search Scraper

Search product listings by keyword and receive clean, flat product records for catalog research, price monitoring, and competitor comparisons.

### Output fields

| Field | Meaning |
| --- | --- |
| productId | Stable opaque identifier for deduplication |
| title | Product title |
| price, currency | Price shown for the returned listing and its currency |
| rating, reviewCount | Aggregate rating and review count when present |
| soldCount | Sales signal when the listing exposes one |
| productUrl | Product page link |

No image/CDN links are included. Currency and market presentation follow the marketplace page returned for the request; check currency before comparing prices across regions.

### Input

Provide a keyword such as `wireless earbuds`. Set `maxItems` from 1 to 100. `maxPages` (1–12) and `timeoutSeconds` (15–300) bound pagination and runtime. Empty keywords are rejected as input errors (SUCCEEDED, no rows, no charge; explanation in OUTPUT). An unexplained empty response remains FAILED; only an explicit benign NO\_RESULTS response with a successful control can finish SUCCEEDED.

### Pricing

PAY\_PER\_EVENT: $1.20 per 1,000 returned product records. Only records written to the dataset are billable; failed and zero-result runs write no product event.

### English example input

```json
{"keyword":"wireless earbuds","maxItems":50,"maxPages":12}
```

### Errors & billing

Input errors finish with status SUCCEEDED, no results and no charge; see the OUTPUT record for the reason.

### 错误与计费

输入错误会以 SUCCEEDED 状态结束，不返回结果且不收费；原因请查看 OUTPUT 记录。

### 中文说明

按关键词搜索商品列表，获得适用于商品目录研究、价格监控和竞品比较的结构化记录。

#### 输出字段

| 字段 | 说明 |
| --- | --- |
| productId | 用于去重的稳定匿名标识 |
| title | 商品标题 |
| price、currency | 页面显示的价格及币种 |
| rating、reviewCount | 页面提供时的综合评分和评论数 |
| soldCount | 页面提供时的销量信号 |
| productUrl | 商品页面链接 |

不返回图片/CDN链接。币种和市场展示方式以请求返回的页面为准，跨地区比较价格前请先核对币种。

#### 输入

填写关键词，例如 `wireless earbuds`。`maxItems` 范围为 1–100；`maxPages` 范围为 1–12；`timeoutSeconds` 范围为 15–300。空关键词属于输入错误：运行以 SUCCEEDED 结束，不返回行或收费，原因记录在 OUTPUT 中。无法解释的空响应仍以 FAILED 结束；只有后端明确返回良性 NO\_RESULTS 且正常控制确认访问有效时才以 SUCCEEDED 结束。

#### 价格

按使用量付费：每 1,000 条写入的数据记录收费 $1.20。只有写入数据集的记录会产生商品结果费用；失败或无结果的运行不会产生商品事件费用。

#### 中文输入示例

```json
{"keyword":"wireless earbuds","maxItems":50,"maxPages":12}
```

# Actor input Schema

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

Product name, category, brand, or phrase to search. Required.

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

Maximum unique product rows to return (1–100). Only returned rows are billed.

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

Maximum number of search pages to request. The run stops early when it reaches maxItems or no new products appear.

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

Global time budget for the complete paginated search.

## Actor input object example

```json
{
  "keyword": "wireless earbuds",
  "maxItems": 50,
  "maxPages": 12,
  "timeoutSeconds": 240
}
```

# Actor output Schema

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

Product records shown in the overview table.

## `fullJson` (type: `string`):

All fields for every returned product record.

# 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 = {
    "keyword": "wireless earbuds",
    "maxItems": 50,
    "maxPages": 12,
    "timeoutSeconds": 240
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/aliexpress-products-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 = {
    "keyword": "wireless earbuds",
    "maxItems": 50,
    "maxPages": 12,
    "timeoutSeconds": 240,
}

# Run the Actor and wait for it to finish
run = client.actor("myagizm/aliexpress-products-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 '{
  "keyword": "wireless earbuds",
  "maxItems": 50,
  "maxPages": 12,
  "timeoutSeconds": 240
}' |
apify call myagizm/aliexpress-products-scraper --silent --output-dataset

```

## MCP server setup

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