# AliExpress Reviews Scraper & New Review Monitor (`zerolag/aliexpress-reviews-scraper`) Actor

Scrape AliExpress reviews from product links or a search keyword: stars, date, text with translation, buyer country, variant and photos. Filter by date, stars and words, or get only new reviews on a schedule. Buyer names are left out.

- **URL**: https://apify.com/zerolag/aliexpress-reviews-scraper.md
- **Developed by:** [ZeroLag Data](https://apify.com/zerolag) (community)
- **Categories:** E-commerce, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 reviews

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/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

Scrape AliExpress reviews from product links or straight from a search keyword, and get one table with stars, date, review text with translation, buyer country, variant and photos. Run it once for an export, or on a schedule to get only new reviews.

- **Price:** $2.00 per 1,000 reviews on the Free plan, $1.40 on Gold. Platform usage is included.
- **Input:** product links, product ids or search keywords.
- **Output:** one row per review, with filters for date, stars, words and country. Buyer names are left out.
- **Measured:** 1,281 reviews from 5 products in 41 seconds on Apify.

Found a bug, need a field, or want a new Actor? Open an issue on the **Issues** tab. If it works well for you, a short review helps others find it.

### How to scrape AliExpress reviews

1. Add links or ids to **Product links or ids**, words to **Search keywords**, or both.
2. Set filters if you need them. A review you filter out is not charged.
3. Click **Start**.
4. Export the results as JSON, CSV or Excel.

The keyword search and the review scrape happen in the same run, so you need no separate product scraper. No login, cookies, proxy or API key are needed.

Example input:

```json
{
    "searchKeywords": ["wireless earbuds"],
    "maxProductsPerKeyword": 5,
    "searchSort": "best_match",
    "reviewsSince": "90 days",
    "maxRating": 3,
    "onlyWithText": true,
    "maxReviewsPerProduct": 50
}
```

On 5 November 2026 this input checked 5 products and returned 20 reviews of 3 stars or less in 12 seconds, for $0.04 on the Free plan.

### What data do you get?

Each row is one review. Fields without a value are `null`. The last column shows how many rows had a value in a run of 1,281 reviews from 5 products.

| Field | What it holds | Filled |
| --- | --- | --- |
| `rating`, `date`, `country`, `variant`, `shippingMethod` | Stars from 1 to 5, review date, buyer country, ordered variant, shipping method | 100% |
| `text` | What the buyer wrote, in the original language | 51% |
| `translatedText` | AliExpress translation into the language you pick | 36% |
| `photos` | Links to buyer photos | 14% |
| `attributes` | Ratings the buyer gave to product qualities, such as durability | 35% |
| `followUpText`, `followUpTranslatedText`, `followUpDate`, `followUpDays`, `followUpPhotos` | The review the buyer added later | 2% |
| `helpfulVotes`, `unhelpfulVotes` | Votes from other shoppers | 100% |
| `featured`, `similarItem` | AliExpress marks: a selected review, a review for a similar item | 100% |
| `reviewId`, `productId`, `productUrl`, `scrapedAt` | Ids, product link, time of reading | 100% |
| `skuId` | AliExpress id of the variant | 70% |
| `productTitle`, `sourceKeyword` | Title and keyword of a product found by search | Keyword runs |

One real row:

```json
{
    "reviewId": "60098705860034959",
    "productId": "3256812488758748",
    "productTitle": "Retro Wireless Bluetooth Earphones Sports Music Headset Noise Reduction Headphones With Battery Display For iPhone Huawie Realme",
    "productUrl": "https://www.aliexpress.com/item/3256812488758748.html",
    "rating": 1,
    "date": "2026-08-22",
    "text": "Están chafisimas, son de lo más corriente que hay. NO LOS COMPREN la calidad es pésima se escuchan como huecos vacíos y en mi caso uno llegó defectuoso y no se escucha",
    "translatedText": "They are very cheap, they are the most common ones out there. DO NOT BUY THEM, the quality is terrible, they sound like empty cavities, and in my case one arrived defective and cannot be heard.",
    "country": "MX",
    "variant": "Color:Green",
    "skuId": "12000059063778358",
    "shippingMethod": "Aliexpress Selection Standard",
    "photos": [
        "https://ae-pic-a1.aliexpress-media.com/kf/Ad4f4b33455054be0b068e54d0479bb10J.jpg"
    ],
    "helpfulVotes": 0,
    "unhelpfulVotes": 0,
    "followUpText": null,
    "followUpTranslatedText": null,
    "followUpDate": null,
    "followUpDays": null,
    "followUpPhotos": [],
    "attributes": {
        "Quality of sound": "Poor",
        "Durability": "Poor",
        "User Friendly": "Good"
    },
    "featured": false,
    "similarItem": false,
    "sourceKeyword": "wireless earbuds",
    "scrapedAt": "2026-11-05T23:13:51.646Z"
}
```

The **Product summaries and status** link in the Output tab opens a free JSON record with one entry per product: average rating, star counts, review topics from AliExpress, how many reviews were read, matched and saved, and why a product gave no reviews.

### How much does it cost?

| Plan | Price per 1,000 reviews |
| --- | --- |
| Free | $2.00 |
| Bronze | $1.80 |
| Silver | $1.60 |
| Gold | $1.40 |

You pay only for reviews saved to the dataset. Filtered reviews, product summaries and products with no reviews cost nothing. Each run also has a start fee of $0.00005. There is no separate charge for platform usage.

Example: 5 products with 100 reviews each make 500 reviews, which cost $1.00 on the Free plan. To cap a run, set **Reviews per run**, or set a maximum cost in the run options. The run stops when it reaches the limit.

### How to monitor new AliExpress reviews

1. Add your products or keywords.
2. Turn on **Only new reviews** and give each list its own **Monitor name**.
3. Add **Reviews since**, for example `30 days`, so the first run does not save old reviews you do not need.
4. Schedule the Actor in Apify, daily or weekly.

The first run for a product saves your baseline. Every later run saves and charges only reviews it has not seen before. In a test with 3 products found by keyword, the first run saved 18 reviews from the last 7 days, and the second run found nothing new and saved nothing.

The memory is a key-value store named `aliexpress-reviews-<monitor name>` in your Apify account. Delete it, or use a new monitor name, to start over. A product that first appears in a keyword search gets its own baseline in that run, so keep **Reviews since** on for keyword monitors.

### How to find complaints about a product type

Search a keyword and keep only low ratings with text:

```json
{
    "searchKeywords": ["wireless earbuds"],
    "maxProductsPerKeyword": 10,
    "reviewsSince": "90 days",
    "maxRating": 2,
    "onlyWithText": true
}
```

Add **Review text contains** with words like `broke` or `refund` to narrow it down. The filter also looks in the translation, so a Spanish review can match an English word. Some top listings show no 1 or 2 star reviews at all, so try **Best match** in **Search order** too.

### Limits

- **12 months.** AliExpress serves reviews from the last 12 months. In runs on 5 November 2026 the oldest review of every product was from November 2025.
- **5,000 per list.** AliExpress serves up to 5,000 reviews per list, and the newest reviews are at the end of it. On a product with 11,668 listed reviews the main list alone ended seven weeks before the test day. For a product like that this Actor also reads the photo, follow-up and country lists. It read 11,569 of those reviews in 107 seconds, up to the day of the run. Some reviews of the biggest products can stay out of reach. `reviewsListed` and `reviewsRead` in the product summary show the difference.
- **Speed.** AliExpress ignores sort options, so the Actor reads all reviews of a product and sorts them itself. A product with thousands of reviews takes longer, even if you want 10 of them. Choose **AliExpress order** when you need a few rows fast.
- **Product titles.** `productTitle` is filled for products found by keyword and is `null` for products you list yourself. Product pages answer automated visits with a bot check, and this Actor does not try to pass it.
- **Search.** If AliExpress answers a keyword search with a bot check, that keyword fails with a clear message in the product summary. Product links keep working.
- **Shared reviews.** Sellers of the same item can share one review list. A review that appears under several products is saved and charged once per run, under the first product. Reviews that AliExpress labels as being for a similar item have `similarItem: true`, and **Skip reviews of similar items** drops them.
- **Star-only reviews.** Many AliExpress reviews have no text. Turn on **Only reviews with text** if you do not want them.
- **Wrong ids.** The review list answers the same way for a wrong id and for a product with no reviews, so both get the status `no_reviews`.

### API and integrations

The **API** tab has ready code for JavaScript, Python and cURL. The **Integrations** tab connects the Actor to Make, Zapier, n8n and webhooks, so a scheduled run with **Only new reviews** can send fresh reviews straight to your own tool.

### FAQ

**Why do I get fewer reviews than the product page says?**
The number on the product page counts all ratings. The review list can hold fewer, and some listings show only reviews with text. Compare `ratingsTotal`, `reviewsListed` and `reviewsRead` in the product summary.

**Can I get buyer names?**
No. Names, avatars and gender are not saved. Review text is what buyers wrote, so it can still hold personal details. AliExpress also has its own terms of use. Check both against your use case.

**Which languages can I get?**
AliExpress translates reviews into 16 languages. Pick one in **Translation language**. The original text is always there. `translatedText` can be `null` when the review is already in that language.

**Can I read reviews from one country only?**
Yes. Add two-letter codes to **Buyer countries**. The Actor then reads the AliExpress list of each country, which also reaches reviews missing from the main list of a large product.

**What happens if one product fails?**
The run continues. The product summary says which product failed and why.

*This Actor is an independent tool with no connection to AliExpress. All trademarks belong to their owners.*

# Actor input Schema

## `productUrls` (type: `array`):

AliExpress product links or numeric product ids, one per line. Links from country sites such as aliexpress.us or pt.aliexpress.com work too. Use this, Search keywords, or both.

## `searchKeywords` (type: `array`):

The Actor searches AliExpress for each keyword and reads the reviews of the products it finds, in the same run. Example: wireless earbuds. Use this, Product links or ids, or both.

## `maxProductsPerKeyword` (type: `integer`):

How many products to take from the search results of each keyword.

## `searchSort` (type: `string`):

Which products a keyword finds first. Most orders finds products that have reviews. Best match follows the AliExpress default.

## `reviewsSince` (type: `string`):

Keep only reviews from this day on. Pick a date or a period such as 30 days. Empty means no date limit.

## `minRating` (type: `integer`):

Keep reviews with at least this many stars, from 1 to 5.

## `maxRating` (type: `integer`):

Keep reviews with at most this many stars, from 1 to 5. Set 2 to get complaints only.

## `reviewType` (type: `string`):

With photos and With follow-up use the AliExpress filters.

## `onlyWithText` (type: `boolean`):

Skip reviews that are only a star rating. Many AliExpress reviews have no text, so this saves money when you read what buyers wrote.

## `textContains` (type: `array`):

Keep reviews that mention at least one of these words. Case does not matter. The Actor looks in the original text, the translation and the follow-up.

## `countries` (type: `array`):

Keep reviews from these countries. Two-letter codes such as US, BR or ES. The Actor then reads the AliExpress list of each country, which also reaches reviews missing from the main list of a large product.

## `excludeSimilarItems` (type: `boolean`):

Some listings mix in reviews that AliExpress labels as a review for a similar item. Turn this on to keep only reviews of the listing itself.

## `onlyNewReviews` (type: `boolean`):

For scheduled runs. The first run saves your baseline. Every later run saves and charges only reviews it has not seen before.

## `monitorName` (type: `string`):

Separate memory for each list of products. Use a different name for each schedule, or a new name to start over. Letters, numbers and hyphens.

## `maxReviewsPerProduct` (type: `integer`):

The most reviews to save from one product. 0 means all reviews.

## `maxReviews` (type: `integer`):

The run stops after saving this many reviews in total. 0 means no limit.

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

AliExpress ignores sorting, so the Actor reads all reviews of a product and sorts them itself. AliExpress order is the fastest choice when you need only a few reviews from each product.

## `language` (type: `string`):

Language of the translated text and the variant names. AliExpress does the translating. The original text is always included.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.aliexpress.com/item/1005006255429323.html"
  ],
  "searchKeywords": [
    "wireless earbuds"
  ],
  "maxProductsPerKeyword": 2,
  "searchSort": "orders",
  "reviewType": "all",
  "onlyWithText": true,
  "textContains": [],
  "countries": [],
  "excludeSimilarItems": false,
  "onlyNewReviews": false,
  "monitorName": "default",
  "maxReviewsPerProduct": 10,
  "maxReviews": 1000,
  "sortBy": "newest",
  "language": "en_US"
}
```

# Actor output Schema

## `reviews` (type: `string`):

No description

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

No description

# 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 = {
    "productUrls": [
        "https://www.aliexpress.com/item/1005006255429323.html"
    ],
    "searchKeywords": [
        "wireless earbuds"
    ],
    "maxProductsPerKeyword": 2,
    "onlyWithText": true,
    "maxReviewsPerProduct": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("zerolag/aliexpress-reviews-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 = {
    "productUrls": ["https://www.aliexpress.com/item/1005006255429323.html"],
    "searchKeywords": ["wireless earbuds"],
    "maxProductsPerKeyword": 2,
    "onlyWithText": True,
    "maxReviewsPerProduct": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("zerolag/aliexpress-reviews-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 '{
  "productUrls": [
    "https://www.aliexpress.com/item/1005006255429323.html"
  ],
  "searchKeywords": [
    "wireless earbuds"
  ],
  "maxProductsPerKeyword": 2,
  "onlyWithText": true,
  "maxReviewsPerProduct": 10
}' |
apify call zerolag/aliexpress-reviews-scraper --silent --output-dataset

```

## MCP server setup

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