Noon Reviews Scraper
Pricing
from $1.20 / 1,000 results
Noon Reviews Scraper
Harvest Noon product reviews and ratings in bulk. Extract customer feedback, detailed insights & seller performance data. Perfect for market research, competitive analysis, pricing optimization & consumer behavior intelligence.
Pricing
from $1.20 / 1,000 results
Rating
4.3
(6)
Developer
Shahid Irfan
Maintained by CommunityActor stats
2
Bookmarked
49
Total users
15
Monthly active users
2 days ago
Last modified
Categories
Share
What does Noon Reviews Scraper do?
Noon Reviews Scraper collects written customer reviews from Noon.com product pages. Give it a Noon product ID or product URL, set how many reviews you want, and it saves each review as a separate Apify dataset item.
The Actor uses Noon's storefront review service, paginates the written-review list, and falls back to the public rating feed or the product page when the main list is unavailable. It also records what happened in a SUMMARY key-value store entry, so you can check whether a short dataset is caused by the product or by a blocked request.
Before you run it
Noon blocks datacenter and shared IPs on its review API. Direct requests from a normal server IP commonly return 403 from Akamai or an HTTP/2 reset. Use Apify Residential proxies, or supply your own residential proxy URLs.
The default input requests Apify Residential proxies. If your Apify account does not have residential proxy access, the run can start but return no reviews. In that case, add a residential proxy or run the Actor on a network that Noon accepts.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrl | String | none | Full Noon product or customer-reviews URL. Takes priority over productId. |
productId | String | N70105592V | Noon product ID, such as N70105592V. Used when startUrl is absent. |
results_wanted | Integer | 20 | Maximum reviews to save. Range: 1 to 1000. |
includeRatingSummary | Boolean | false | Add one rating_summary item with the average rating, rating count, written-review count, and rating breakdown. |
sortFilter | String | helpful | helpful, newest, highest_rating, or lowest_rating. |
locale | String | en-ae | Storefront language and country, such as en-ae, ar-ae, en-sa, or ar-sa. |
proxyConfiguration | Object | Apify Residential | Apify proxy or custom proxy URLs. The proxy country follows locale unless you set one. |
startUrl wins when both startUrl and productId are present. The URL also supplies the product ID and, when it contains a storefront prefix, the locale.
Locales
| Locale | Storefront |
|---|---|
en-ae | UAE, English |
ar-ae | UAE, Arabic |
en-sa | Saudi Arabia, English |
ar-sa | Saudi Arabia, Arabic |
Output
Each dataset item is one written review. Fields missing from a review are left out of that item.
| Field | Type | Description |
|---|---|---|
productId | String | Product ID used for the run. |
variantSku | String | Variant SKU attached to the review. |
title | String | Review headline. |
author | String | Reviewer display name. |
rating | Number | Star rating, normally 1 to 5. |
reviewText | String | Review body. |
titleTranslation | String | Translated title, when Noon provides one. |
reviewTextTranslation | String | Translated body, when Noon provides one. |
date | String | Review update date. |
helpfulCount | Number | Helpful votes. |
verifiedPurchase | Boolean | Whether Noon marks the review as a verified purchase. |
imageUrls | Array | Review image identifiers. |
imageUrlsV2 | Array | Review image URLs. |
variant | Array | Purchased variant attributes. |
showTranslateBtn | Boolean | Whether Noon offers a translation control. |
language | String | Review language. |
uid | String | Noon review identifier. |
recordType | String | rating_summary on the optional summary item. |
ratingSummary | Object | Aggregate rating data on the optional summary item. |
Rating summary item
When includeRatingSummary is true, the Actor adds one item. Counts below are examples; the current values depend on the product and the run date.
{"recordType": "rating_summary","productId": "N70105592V","ratingSummary": {"averageRating": 4.6,"ratingCount": 36558,"writtenReviewCount": 3962,"highestRatingValue": 5,"breakdown": [{ "rating": 5, "count": 30000 },{ "rating": 4, "count": 3000 }]}}
ratingCount includes star-only ratings. writtenReviewCount is the number the review service reports for written reviews, so it is usually the smaller number.
Run summary and diagnostics
The Actor writes two key-value store entries:
SUMMARY: product title and URL, requested and saved counts, written-review total, pages fetched, sort order, catalog success, proxy state, warm-up status, attempts per request, fallback source, stop reason, and whether the run completed.RUN_DIAGNOSTICS: request labels, status codes, retry counts, selected browser profiles, and block evidence. It does not store response bodies, cookies, proxy URLs, or tokens.
If the review list is blocked but the product page loads, the Actor saves the five reviews embedded in the page and marks usedFallback and fallbackSource in SUMMARY. A five-item dataset with usedFallback: true means the review API did not answer, not that the product has only five written reviews.
Examples
Collect the 20 most helpful reviews:
{"productId": "N70105592V","results_wanted": 20,"sortFilter": "helpful","locale": "en-ae"}
Collect 100 newest reviews from a product URL and add the rating summary:
{"startUrl": "https://www.noon.com/uae-en/xbox-series-s-512-gb-digital-console-with-wireless-controller/N40635117A/p/","results_wanted": 100,"includeRatingSummary": true,"sortFilter": "newest"}
Collect reviews from the Saudi storefront with your own proxy:
{"productId": "N70105592V","results_wanted": 250,"sortFilter": "lowest_rating","locale": "en-sa","proxyConfiguration": {"proxyUrls": ["http://user:pass@residential-proxy.example:8000"]}}
Sample review item
{"productId": "N70105592V","variantSku": "N70106183V","author": "Muhammad I.","title": "Fantastic deal on iPhone 16 Pro Max: fast delivery, great price, and top-notch quality!","rating": 5,"reviewText": "I recently purchased the iPhone 16 Pro Max, and I could not be more pleased with my experience. I got it at an amazing discounted price, which made the deal even sweeter. The delivery was super fast, and everything arrived in perfect condition, right on time.","titleTranslation": "صفقة رائعة على iPhone 16 Pro Max: تسليم سريع وسعر رائع وجودة عالية!","reviewTextTranslation": "لقد اشتريت مؤخرًا هاتف iPhone 16 Pro Max، ولم أكن أكثر سعادةً بتجربتي.","date": "2026-02-07","helpfulCount": 16,"verifiedPurchase": true,"imageUrls": ["eb43de1f-9017-4871-bb0a-8382bbd8f16f-1770533314-1.png"],"imageUrlsV2": ["https://f.nooncdn.com/review/eb43de1f-9017-4871-bb0a-8382bbd8f16f-1770533314-1.png"],"language": "en","showTranslateBtn": true,"uid": "fae7c913-b75a-4cea-bcd1-c7c90027f7a3"}
Limits and behavior
results_wantedcaps saved reviews. The Actor stops when it reaches the cap, exhausts the written-review list, or hits its page limit.- The review list is requested in pages of 15. The Actor pushes each page to the dataset as soon as it passes deduplication.
helpfulsort uses Noon's helpful order.newestuses Noon's time order.highest_ratingandlowest_ratinguse Noon's high and low rating orders.- Reviews are deduplicated by
uidwhen Noon supplies one. - A failed request triggers up to 8 timed retries for the first review page (5 for later pages). Each retry uses a fresh residential proxy session and keeps the
ios18TLS profile for the first three attempts;chrome136is a late fallback. Permanent400,401,404,410, and422responses are not retried. - The review-list endpoint is TLS-profile sensitive.
ios18is the primary profile;chrome136is the only other profile that has passed from residential AE sessions. Desktop Chrome and Firefox profiles currently receive403from Akamai. - If the review list is blocked, the Actor falls back to the public rating feed and the product page's embedded reviews. The fallback page is cached from the warm-up, so the run can still finish with the five server-rendered reviews instead of failing.
- The product page is warmed on a valid URL before the review request. Session recovery is bounded to 150 seconds for the bootstrap and 90 seconds per later page.
- A product with no written reviews ends with an empty dataset and a warning. A blocked request with no fallback data fails the run with a message that points to
RUN_DIAGNOSTICS.
Local development
npm installnpm testnpm run lintnpm start
Local runs read storage/key_value_stores/default/INPUT.json. A local empty result usually means Noon blocked the local IP. Use a residential proxy before changing the parser.
Export and automation
Apify datasets can be downloaded as JSON, CSV, Excel, XML, or HTML, and read through the Apify API. Use a schedule for recurring collection, or a webhook to send finished datasets to another service.
Legal use
Collect only public review data you have a lawful reason to use. Follow Noon's terms, applicable privacy law, and any restrictions that apply to your use case.
Related Actors
Support
Open an issue on the Actor page with the input, the SUMMARY record, and the relevant RUN_DIAGNOSTICS requests. Remove proxy credentials before posting.