API reference
Authentication
Create an API key in the dashboard and send it in the x-api-key header. Keep it server-side: anyone with the key can spend your quota.
GET /v1/products/{productId}/reviews
productId is the numeric AliExpress product id (the number in aliexpress.com/item/<id>.html).
Filters are the same ones AliExpress shows on the product page, and AliExpress applies them: onefilter per request.
| Parameter | Plan | Description |
|---|---|---|
page | Free | Page number, starting at 1. |
pageSize | Free | 1–20 on Free, 1–100 on Pro and Max. Default 20. |
filter=all | Free | All reviews (default). |
filter=5 … filter=1 | Free | Only reviews with that many stars. |
filter=additional | Pro | Reviews with additional feedback. |
filter=local | Pro | Reviews from buyers in country. |
filter=image | Max | Reviews with photos. |
country | Pro | Shopper country, ISO 3166-1 alpha-2 (default US). Used by filter=local. |
lang | Pro | Translation language: en_US (default), es_ES, fr_FR, de_DE, it_IT, pt_BR, nl_NL, pl_PL. |
Using a parameter or filter your plan doesn't include returns 403.
Response
{
"productId": "1005006123456789",
"filter": "all",
"page": 1,
"pageSize": 20,
"total": 452,
"totalPages": 23,
"summary": {
"averageRating": 4.4,
"totalReviews": 452,
"ratingDistribution": { "5": 323, "4": 54, "3": 33, "2": 12, "1": 30 },
"filterCounts": { "all": 452, "image": 32, "additional": 6, "local": 63 }
},
"data": [
{
"id": "60012345678901234",
"author": "J***n",
"country": "ES",
"rating": 5,
"content": "Very good quality, arrived in 10 days",
"originalContent": "Muy buena calidad, llegó en 10 días",
"additionalFeedback": null,
"date": "2026-08-09",
"sku": "Color:Black",
"helpfulVotes": 3,
"images": ["https://..."], // Max only
"thumbnails": ["https://..."] // Max only
}
]
}Quotas
Every response carries x-ratelimit-limit, x-ratelimit-remaining andx-ratelimit-reset (Unix time of the next reset, 00:00 UTC). Over the quota you get 429.
Each page is cached for up to 24 hours.
Errors
| Status | Meaning |
|---|---|
| 400 | Invalid parameter. |
| 401 / 403 | Missing or invalid API key, or a filter outside your plan. |
| 404 | Product not found. |
| 429 | Daily quota exceeded, or global rate limit. |
| 502 | The upstream source failed; retry later. Still counts against your quota. |
Errors look like { "error": { "message": "..." } }.