AliExpress Product Reviews Scraper: Ratings & Buyer Photos
Pricing
from $1.10 / 1,000 reviews
AliExpress Product Reviews Scraper: Ratings & Buyer Photos
Collect public AliExpress product reviews, ratings, English translations, buyer photos, seller replies and follow-up feedback. Filter by stars or photos and export JSON, CSV or Excel.
Pricing
from $1.10 / 1,000 reviews
Rating
0.0
(0)
Developer
GoFetch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Collect AliExpress product reviews as one row per review: ratings, English translations when available, original text, buyer photos, variants, helpful votes, public display names, seller replies and follow-up feedback. Use product URLs or IDs for product research, rating comparisons and review exports.

Quick start
- Paste one or more public AliExpress item URLs into Product URLs or IDs.
- Choose a per-product limit; the prefill saves up to 20 reviews from one product.
- Run the Actor and open the Overview dataset view. Export JSON, CSV or Excel.
{"productUrls": ["https://www.aliexpress.com/item/1005007334128523.html"],"maxReviewsPerProduct": 100,"maxItems": 1000,"sort": "default","stars": [],"withPhotosOnly": false,"proxyConfiguration": {"useApifyProxy": true}}
The productUrls list accepts 1–100 URLs on regional AliExpress domains or bare 1005… item IDs. URLs are trimmed and duplicate products removed. A mix of valid and invalid entries runs with a warning; an entirely invalid list fails with invalid:. Search-card IDs beginning 3256… are rejected; open the product and copy its item URL.
Inputs and filtering
| Input | Default | Meaning |
|---|---|---|
productUrls | Required; working prefill provided | Product URLs or exact item IDs, processed in input order |
maxReviewsPerProduct | 100 | Per-product saved-row cap; 0 means all reachable, still bounded by maxItems |
maxItems | 1000 | Run-wide saved-review cap, 1–100,000; Free-plan limits also apply |
sort | default | Source slice order, or newest for local date sorting of the reachable set |
stars | [] | Select ratings 1–5. The platform multiselect sends strings such as ["1","5"]; numeric API values also work |
withPhotosOnly | false | Keep reviews that have buyer photos |
proxyConfiguration | Apify datacenter | Optional residential; explicit choices do not silently switch |
Star filters use separate server-side slices. Combined stars and photos use those star slices with a local photo filter, so scanning may fetch reviews that are not saved. Photo-only requests use the source's image slice when possible. An empty filtered answer is a valid result.
newest collects the accessible reviews for each product, sorts their dates descending locally, then takes the requested number. It can make many more requests than default, even for a small output cap. Reviews with no date sort last. Products still run in input order; sorting is per product.
Output example
This row came from a real private proof run. Review IDs are exact strings: numeric conversion can silently round them.
{"productId": "1005007334128523","productUrl": "https://www.aliexpress.com/item/1005007334128523.html","reviewId": "60097261297836640","rating": 5,"text": "Not too bright, but good enough to illuminate a room for navigation or mood. \r \n The usb cord is short, about 20 cm from light to control switch and 20 cm from switch to usb a plug. \r \n I'll splice some wires for my purpose.","originalText": "Not too bright, but good enough to illuminate a room for navigation or mood. The usb cord is short, about 20 cm from light to control switch and 20 cm from switch to usb A plug. I'll splice some wires for my purpose.","originalLanguage": "en","date": "2026-05-26T00:00:00.000Z","reviewerName": "S***t","reviewerCountry": "US","isAnonymous": false,"sku": "Emitting Color:Natural White Length:1m","images": [],"helpfulCount": 0,"notHelpfulCount": 0,"sellerReply": null,"logistics": "AliExpress Selection Standard Shipping","followUp": null,"scrapedAt": "2026-10-21T10:47:29.849Z"}

text prefers the source's English translation and falls back to the original. originalText preserves the original feedback; originalLanguage is the source-provided language label and may itself be inaccurate. date and followUp.date are ISO UTC dates when present. reviewerName is only the public display name, including anonymized forms; there is no identity or contact enrichment. followUp is an object with text, date and images, or null. Missing scalar values are null, and missing image lists are empty arrays. Replies, translations and follow-up fields are returned only when the public source supplies them.
Pricing
Billing uses one Review event (apify-default-dataset-item) per saved dataset row. There is no start fee, photo fee, translation fee or seller-reply add-on. Filtering does not create additional billable result events.
| Apify pricing tier | Per 1,000 saved reviews |
|---|---|
| FREE | $2.00 |
| BRONZE | $1.80 |
| SILVER | $1.40 |
| GOLD | $1.10 |
| PLATINUM / DIAMOND | $1.10 |
Example Actor result charges:
| Saved reviews | BRONZE total | GOLD total |
|---|---|---|
| 100 | $0.18 | $0.11 |
| 1,000 | $1.80 | $1.10 |
| 5,000 | $9.00 | $5.50 |
These totals cover the Actor's result events; your Apify account's applicable platform charges and credits are governed by its plan. Check the run's charge settings before collecting a large set.
Is it free?
Apify Free-plan accounts can use up to 100 results per run and 20 runs per calendar month (UTC). These are developer limits. The 21st run succeeds gracefully with a quota message and makes no target requests. The allowance resets on the first day of the UTC month. Paid Apify plans use the requested input limits. The pricing tier and account's credits remain subject to Apify billing; the allowance is not a promise of unlimited free use.
Reach, reliability and guarantees
- The source exposes at most 5,000 reachable reviews per filter slice. When an all-rating job needs deeper collection, the Actor walks the five star slices. This can extend reach to at most 25,000 reviews; a single star slice above 5,000 remains truncated. The proof product returned all 5,208/5,208 reported review records, compared with 5,225 total ratings; ratings without review records are not fabricated.
- The Actor uses fixed pages of 100, checks the returned page number, stops on wrapped/repeated pages and deduplicates exact IDs per product. It logs source truncation once per product and records it in
STATISTICS. newestsorts the reachable set. It does not guarantee the globally newest reviews when a source slice is inaccessible or truncated. Source ordering, counts and live reviews can change during a run.- Saved rows survive later request failures. Partial runs with saved rows finish successfully and explain why they stopped. A soft deadline stops requests before the hard timeout and saves collected rows. An exhausted run charge budget succeeds with “run budget reached.”
- Zero rows succeed as “no results” only after valid empty answers for all processed products/filters. Unknown or delisted items can return the same valid empty answer as an item with no reviews; the Actor does not claim to distinguish them. Zero-row processing failures fail with a concise reason such as
blocked:,network:,outdated:orinvalid:. - Restarts seed exact product/review keys and saved counts from the existing dataset, preserving run and product caps without re-pushing saved reviews. A restart may fetch earlier source pages again. Deduplication is per run, not a historical cache across separate runs.
- Default memory is 256 MB, capped at 512 MB. No account, login or private API credentials are required for the public reviews endpoint. Source changes can still interrupt collection; the private proof is a measured sample, not a future availability promise.
API and integrations
Call the Actor with the same JSON through Apify's API. Keep your token in an environment variable:
curl -X POST \'https://api.apify.com/v2/acts/xmolodtsov~aliexpress-reviews-scraper/run-sync-get-dataset-items' \-H "Authorization: Bearer $APIFY_API_TOKEN" \-H 'Content-Type: application/json' \-d '{"productUrls":["1005007334128523"],"maxReviewsPerProduct":20}'
For deep or newest jobs, use an asynchronous Actor run and download the dataset after completion. Use Apify integrations with n8n, Make, webhooks or scheduled runs to pass the input and consume the resulting dataset. Existing dataset exports work for spreadsheets and analytics pipelines. The Actor does not create tasks or schedules automatically.
Support
Open the Actor's Issues tab with your input, run ID and the expected result. Never include account credentials.
More scrapers from this developer
TikTok: TikTok Search Scraper: videos and creators for any keyword, pay per result · TikTok Profile Scraper (Pay Per Result): profiles, followers and latest posts by username · TikTok Comments Scraper: comments and full reply threads from any video · TikTok Hashtag Scraper: videos for any hashtag, with views, likes and music · TikTok Sound & Music Scraper: videos that use a sound or song · TikTok Top Ads Scraper: public Creative Center ad rankings, engagement, media and landing pages
Social & news: Reddit Search Scraper: posts by keyword, subreddit or author · Google News Scraper: Google News results as clean full-text articles · Threads Replies Scraper: public post replies, likes, authors and inline nested replies
Instagram: Instagram Reel Scraper: public profile reels, plays, captions, music and media URLs · Instagram Comment Scraper: public post and reel comments, likes, timestamps and usernames
E-commerce: Prom.ua Product Search Scraper: Prom.ua product search results, no browser needed · Amazon Product Search & Bestsellers Scraper: search results, Best Sellers and product details from Amazon · AliExpress Search Scraper: aliExpress products by keyword with prices, orders and shipping
Maps & leads: Google Maps Scraper: places, leads and emails from Google Maps
Ads: Facebook Ad Library Scraper (Meta Ads Library): ads from the Meta Ad Library, with EU reach and payers · Google Ads Transparency Scraper: Google ad creatives by advertiser or domain, with regional details
Video: YouTube Transcript Scraper: transcripts, subtitles and captions from YouTube videos · YouTube Shorts Scraper: Shorts of any channel with exact views, likes and duration · YouTube Channel Scraper: every video of a channel, with channel stats · YouTube Search Scraper: search results and videos for any keyword · YouTube Comments Scraper: comments, replies and likes from any video · Bilibili Comments Scraper: public hot comments and reply threads by video or keyword
Jobs: SEEK Job Listings Scraper: public AU/NZ job listings, salaries and redacted descriptions
Frequently asked questions
Is it legal to scrape AliExpress reviews? This Actor requests publicly accessible product reviews and returns only publicly displayed review information, including display names as shown. It does not log in, access private profiles or collect contact fields. Public display names and review text may still be personal data. Use the results in accordance with applicable law, including GDPR/CCPA, and AliExpress terms; public availability alone does not determine lawful reuse. Avoid identifying reviewers, contacting them or republishing personal data unnecessarily.
Why are there fewer reviews than ratings? Source totals can include ratings with no review record, and filter slices have finite depth. Photos/stars narrow the saved set. A requested count is a cap, not a guaranteed yield.
Why can newest take longer? The source ignores sort parameters. The Actor has to scan its reachable set before it can sort and select reviews locally.
Can I download buyer images? images contains public source URLs, and follow-up photos appear separately when supplied. The Actor does not download image binaries. URLs and content can disappear or change.