AliExpress API — Product Reviews and Star Ratings
Documentation menu
FetchLayer FetchLayer API

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.

POST /product-reviews Reviews
https://api.fetchlayer.dev/aliexpress/product-reviews
OpenAPI JSON

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
    }
  ]
}