# AliExpress Review Aggregate Scraper (`xtracto/aliexpress-review-scraper`) Actor

Per-product review aggregate (averageStar, averageStarRate, review count, orders, sales) for every product in an AliExpress store. Uses the unsigned shoprenderview.aliexpress.com gateway. Per-buyer review TEXT is Baxia-gated and requires a browser actor.

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

## Pricing

from $10.00 / 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/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

## AliExpress Review Scraper

Collect per-product review aggregates — average star rating, review count, and order volume — for every product listed in any AliExpress store.

### Why use this actor

- No AliExpress account or login required — works on fully public store data.
- Accepts store URLs or bare numeric seller IDs.
- Returns aggregate review data (average rating, review count, orders) for every product in the store.
- Pricing and promotion data are included alongside review signals.
- Paginated crawl — covers stores with thousands of products in a single run.
- Stable JSON output ready to load into any database, spreadsheet, or data pipeline.

### How it works

1. You provide one or more AliExpress store URLs or numeric seller IDs.
2. The actor paginates through each store's product listing, collecting up to the page limit you set.
3. For each product it extracts the review aggregate (average star rating, review count, orders) along with pricing.
4. Results stream into your Apify dataset as each page is processed.
5. Download the complete dataset as JSON, CSV, or Excel when the run finishes.

You don't need to manage any browsers or scrapers.

### Input

```json
{
  "stores": [
    { "url": "https://www.aliexpress.com/store/6000002441" }
  ],
  "country": "US",
  "currency": "USD",
  "maxPagesPerStore": 5,
  "pageSize": 30,
  "maxConcurrency": 2,
  "maxRequestRetries": 6,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

| Field | Type | Description |
|---|---|---|
| `stores` | array | Store URLs (`https://www.aliexpress.com/store/<id>`) or bare numeric seller IDs. |
| `country` | string | Two-letter ISO country code for localized pricing (e.g. `US`, `GB`, `DE`). Default: `US`. |
| `currency` | string | ISO currency code for displayed prices (e.g. `USD`, `EUR`, `GBP`). Default: `USD`. |
| `maxPagesPerStore` | integer | Maximum pages to collect per store. Each page returns up to 30 products. Default: 5. |
| `pageSize` | integer | Number of products per page (10–60). Default: 30. |
| `maxConcurrency` | integer | Parallel workers across input stores. Default: 2. |
| `maxRequestRetries` | integer | Per-request retry budget before giving up. Default: 6. |
| `proxyConfiguration` | object | Apify Proxy or your own proxy list. RESIDENTIAL group is recommended. |

### Output

One record per product per store:

```json
{
  "sellerId": "6000002441",
  "productId": "1005007945497931",
  "title": "Wireless Bluetooth Earbuds TWS Noise Cancelling Earphones with Charging Case",
  "url": "https://www.aliexpress.com/item/1005007945497931.html",
  "image": "https://ae-pic-a1.aliexpress-media.com/kf/S1abc123def.jpg",
  "averageStar": 4.7,
  "averageStarRate": 94.2,
  "reviewCount": 3842,
  "orders": 12000,
  "salesText": "12,000+",
  "price": 8.99,
  "currency": "USD",
  "currencySymbol": "US $",
  "promotionPrice": 6.49,
  "inPromotion": true,
  "bigSaleProduct": false,
  "tags": ["Best Seller", "Free Shipping"],
  "scrapedAt": "2026-05-13T04:35:22Z"
}
```

| Field | Type | Description |
|---|---|---|
| `sellerId` | string | The store ID from your input. |
| `productId` | string | AliExpress product ID. |
| `title` | string | Product title. |
| `url` | string | Direct link to the product page. |
| `image` | string | Primary product image URL. |
| `averageStar` | number | Average star rating (0–5). |
| `averageStarRate` | number | Positive-feedback percentage (0–100). |
| `reviewCount` | integer | Total number of buyer reviews. |
| `orders` | integer | Total lifetime orders for this product. |
| `salesText` | string | Human-readable sales count (e.g. `"12,000+"`). |
| `price` | number | Current listed price. |
| `currency` | string | ISO currency code. |
| `promotionPrice` | number | Active promotion price (if the item is in a sale). |
| `inPromotion` | boolean | `true` if an active promotion is running on this product. |
| `tags` | array | Promotional or merchandising tags (e.g. `"Best Seller"`, `"Free Shipping"`). |
| `scrapedAt` | string | ISO 8601 timestamp of when the record was collected. |

### Other AliExpress Scrapers

| Actor | Description |
|---|---|
| [AliExpress Search Scraper](https://apify.com/search?q=aliexpress-search-scraper) | Keyword search results across multiple pages. |
| [AliExpress Category Scraper](https://apify.com/search?q=aliexpress-category-scraper) | Browse products by category ID. |
| [AliExpress Product Scraper](https://apify.com/search?q=aliexpress-product-scraper) | Full product detail from individual product URLs. |
| [AliExpress Store Scraper](https://apify.com/search?q=aliexpress-store-scraper) | Store profile and identity data from seller pages. |
| [AliExpress Review Scraper](https://apify.com/search?q=aliexpress-review-scraper) | Per-product review aggregates for every item in a store. |

# Actor input Schema

## `stores` (type: `array`):

Store URLs (e.g. https://www.aliexpress.com/store/6000002441) or raw numeric seller IDs (e.g. 6000002441). The scraper paginates all products in each store via shoprenderview.aliexpress.com and emits one REVIEW\_AGGREGATE row per product.

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

Two-letter ISO country code (US, GB, DE, ...). Affects shoprenderview pricing/locale.

## `currency` (type: `string`):

ISO currency code (USD, EUR, IDR, ...).

## `maxPagesPerStore` (type: `integer`):

Hard cap on shoprenderview pages per store. Each page returns ~30 products. Set high if the store has many SKUs.

## `pageSize` (type: `integer`):

Page size sent to shoprenderview. 30 matches the canonical browser request; values above 60 are typically capped server-side.

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

Parallel workers across input stores.

## `maxRequestRetries` (type: `integer`):

How many times a Baxia-challenged shoprenderview call will rotate proxy + retry before giving up.

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

Apify Proxy or your own list. RESIDENTIAL recommended â€” shoprenderview sometimes serves a Baxia x5secdata challenge on first hit from a fresh IP and a retry succeeds.

## Actor input object example

```json
{
  "stores": [
    {
      "url": "https://www.aliexpress.com/store/6000002441"
    }
  ],
  "country": "US",
  "currency": "USD",
  "maxPagesPerStore": 5,
  "pageSize": 30,
  "maxConcurrency": 2,
  "maxRequestRetries": 6,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "stores": [
        {
            "url": "https://www.aliexpress.com/store/6000002441"
        }
    ],
    "country": "US",
    "currency": "USD"
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/aliexpress-review-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 = {
    "stores": [{ "url": "https://www.aliexpress.com/store/6000002441" }],
    "country": "US",
    "currency": "USD",
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/aliexpress-review-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 '{
  "stores": [
    {
      "url": "https://www.aliexpress.com/store/6000002441"
    }
  ],
  "country": "US",
  "currency": "USD"
}' |
apify call xtracto/aliexpress-review-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AliExpress Review Aggregate Scraper",
        "description": "Per-product review aggregate (averageStar, averageStarRate, review count, orders, sales) for every product in an AliExpress store. Uses the unsigned shoprenderview.aliexpress.com gateway. Per-buyer review TEXT is Baxia-gated and requires a browser actor.",
        "version": "0.1",
        "x-build-id": "kBMJ8OIdRGexY1oB1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~aliexpress-review-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-aliexpress-review-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/xtracto~aliexpress-review-scraper/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-aliexpress-review-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/xtracto~aliexpress-review-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-aliexpress-review-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": [
                    "stores"
                ],
                "properties": {
                    "stores": {
                        "title": "Stores to crawl",
                        "type": "array",
                        "description": "Store URLs (e.g. https://www.aliexpress.com/store/6000002441) or raw numeric seller IDs (e.g. 6000002441). The scraper paginates all products in each store via shoprenderview.aliexpress.com and emits one REVIEW_AGGREGATE row per product.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "country": {
                        "title": "Ship-to country",
                        "type": "string",
                        "description": "Two-letter ISO country code (US, GB, DE, ...). Affects shoprenderview pricing/locale.",
                        "default": "US"
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "ISO currency code (USD, EUR, IDR, ...).",
                        "default": "USD"
                    },
                    "maxPagesPerStore": {
                        "title": "Max pages per store",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Hard cap on shoprenderview pages per store. Each page returns ~30 products. Set high if the store has many SKUs.",
                        "default": 5
                    },
                    "pageSize": {
                        "title": "Products per shoprenderview page",
                        "minimum": 10,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Page size sent to shoprenderview. 30 matches the canonical browser request; values above 60 are typically capped server-side.",
                        "default": 30
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Parallel workers across input stores.",
                        "default": 2
                    },
                    "maxRequestRetries": {
                        "title": "Max retries per request",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many times a Baxia-challenged shoprenderview call will rotate proxy + retry before giving up.",
                        "default": 6
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Apify Proxy or your own list. RESIDENTIAL recommended â€” shoprenderview sometimes serves a Baxia x5secdata challenge on first hit from a fresh IP and a retry succeeds.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
