Get buyer reviews for a product
Buyer reviews for one product, 20 per page, with the rating summary — the average, the total, the positive share and the count at each star — and how many reviews each filter holds. Each review carries its rating, date, text translated into the requested language where AliExpress did so and the reviewer’s original words, the masked reviewer name and country, the variant bought, the shipping method, photos, helpful count, any follow-up review and the seller’s reply. Many AliExpress reviews are a rating with no text, so text is null on those. Sort by latest to follow new reviews. A product with no reviews and an unknown product id both come back as an empty list, not a 404. If limit stops a response part-way through a page, the next cursor repeats that page — de-duplicate by reviewId, and notes says when it happens.
/product-reviews Reviews https://api.fetchlayer.dev/aliexpress/product-reviews Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
product string required AliExpress product id or any product page URL.
sort string optional best_match, or latest for newest first. (default: best_match)
filter string optional all, with_photos, or additional (reviews with a follow-up). (default: all)
limit number optional Maximum reviews returned (max 1000), or -1 for the maximum allowed. (default: 20)
pages number optional Pages of 20 to collect in one request (max 50), or -1 for the maximum allowed. Each page counts as one request. (default: 1)
cursor string optional Resume from a previous response's nextCursor.
delayMs number optional Milliseconds to wait between pages (max 30000).
shipTo string optional Two-letter country code the shopper ships to, for example US or DE. Changes prices, shipping and availability. (default: US)
language string optional Language for titles and labels: en_US, de_DE or pt_BR. Any other value is a 400. (default: en_US)
format string optional json, or markdown to get the result rendered as text. (default: json)
timeoutMs number optional Per-request time limit in milliseconds (max 600000).
Response Fields
product-reviews
Get buyer reviews for a product
productId string Global product id the reviews belong to.
ratings object average, total, positivePercent, and fiveStar through oneStar counts.
filterCounts object Reviews available under each filter: all, with_photos, additional.
reviews object[] The reviews on this page or pages.
reviews[].reviewId string Stable review id — de-duplicate on it.
reviews[].rating number | null Stars out of 5.
reviews[].date string | null Date as displayed, for example "12 Sep 2026".
reviews[].text string | null Review text in the requested language where AliExpress translated it. Null for a rating-only review.
reviews[].originalText string | null The reviewer’s own words, when they differ from text.
reviews[].reviewerName string | null Reviewer name, masked by AliExpress.
reviews[].reviewerCountry string | null Two-letter country of the reviewer.
reviews[].anonymous boolean Whether the reviewer posted anonymously.
reviews[].variant string | null The variant bought, for example "Color:Black".
reviews[].shippingMethod string | null Shipping method the order used.
reviews[].imageUrls string[] Photos attached to the review.
reviews[].helpfulCount number | null Shoppers who marked it helpful.
reviews[].additionalReview object | null A follow-up the reviewer added later, with its own text and photos.
reviews[].sellerReply string | null The seller’s reply, when there is one.
reviewCount number Reviews in this response.
totalReviews number | null Reviews matching the filter in total.
pagesScraped number Pages actually collected. Each page counts as one request against your plan.
nextCursor string | null Pass back as cursor to continue, or null when there is no next page.
hasNextPage boolean Whether more reviews are available beyond this response.
market object The market this result was read in — shipTo, currency and language — after defaults were applied. Compare prices only between results with the same market.
notes string[] Caveats about this specific result — a walk refused part-way, a padded search, a page repeated by the cursor. Read it before treating a result as complete.
requestedUrl string The AliExpress page this result corresponds to.
scrapedAt string ISO 8601 timestamp of when the data was collected.
resultType string Which shape this response is, e.g. product-search or product-reviews.
transport string The upstream source the data came from: aliexpress.
blocked boolean Always false on a successful response.
Request
curl -X POST "https://api.fetchlayer.dev/aliexpress/product-reviews" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"product":"1005009494458560","sort":"latest","shipTo":"US","language":"en_US"}'Response
{
"resultType": "product-reviews",
"market": {
"shipTo": "US",
"currency": "USD",
"language": "en_US"
},
"notes": [],
"productId": "1005009494458560",
"sort": "latest",
"filter": "all",
"ratings": {
"average": 4.7,
"total": 2708,
"positivePercent": 93.3,
"fiveStar": 2275,
"fourStar": 252,
"threeStar": 92,
"twoStar": 33,
"oneStar": 56
},
"filterCounts": {
"all": 2708,
"with_photos": 544,
"additional": 45
},
"reviewCount": 20,
"totalReviews": 2708,
"pagesScraped": 1,
"nextCursor": "eyJwIjoyfQ",
"hasNextPage": true,
"reviews": [
{
"reviewId": "60099036673946467",
"rating": 4,
"text": "Good keyboards, but the seller's packaging is very poor.",
"originalText": "Buenos teclados pero el embalaje por parte del vendedor es muy malo",
"date": "09 Sep 2026",
"reviewerName": "R***a",
"reviewerCountry": "CO",
"anonymous": false,
"variant": "Color:Black",
"shippingMethod": "AliExpress Selection Standard Shipping",
"imageUrls": [],
"helpfulCount": 0,
"additionalReview": null,
"sellerReply": null
}
]
}