Amazon Reviews Scraper: Collect Customer Ratings and Sentiment Without the SP-API
How to pull Amazon customer reviews at scale by ASIN — star rating, verified badge, full review text, helpful votes and images — across 8 marketplaces.
The actor referenced in this article. Pay only for results delivered.
Amazon’s Selling Partner API hands sellers access to their own review notifications. It gives you essentially nothing for reading competitor reviews at scale. To access public review data programmatically — star ratings, full text, verified purchase status, helpful votes, review images — you need either a very expensive third-party data provider or a scraper that reads the same public pages any browser can see.
The Amazon Reviews Scraper pulls customer reviews by ASIN across 8 Amazon marketplaces. No SP-API account required, no developer approval process, no monthly subscription. Each review costs $0.003, with nothing charged on failure.
What You Get Per Review
For each review the actor returns:
- asin — the product the review was left on
- rating — 1 to 5 stars
- title — the reviewer’s headline
- body — full review text
- reviewerName — display name of the reviewer
- verifiedPurchase — boolean, true when Amazon shows the “Verified Purchase” badge
- helpfulVotes — number of people who found the review helpful
- date — review publication date
- imageUrls — array of image URLs when the reviewer included photos
- marketplace — which Amazon domain the review came from
Scrape Reviews by ASIN in Python
import os
from apify_client import ApifyClient
apify = ApifyClient(os.environ["APIFY_TOKEN"])
run = apify.actor("themineworks/amazon-reviews").call(run_input={
"asin": "B0BSHF7WHW", # Apple AirPods Pro (2nd gen)
"marketplace": "amazon.com",
"maxReviews": 200,
"sortBy": "recent", # "recent" or "helpful"
"verifiedPurchaseOnly": False,
})
reviews = [
r for r in apify.dataset(run["defaultDatasetId"]).iterate_items()
if r.get("_type") != "summary"
]
print(f"Fetched {len(reviews)} reviews")
for r in reviews[:5]:
verified = "✓" if r.get("verifiedPurchase") else " "
print(f"[{r['rating']}★] [{verified}] {r['title'][:60]}")
print(f" Helpful: {r.get('helpfulVotes', 0)} Date: {r.get('date', '')}")
Filter by Star Rating
To build a dataset of only negative reviews — useful for finding recurring complaints against a competitor — pass a starFilter list:
run = apify.actor("themineworks/amazon-reviews").call(run_input={
"asin": "B09G9HD6PD",
"marketplace": "amazon.com",
"maxReviews": 500,
"sortBy": "recent",
"starFilter": [1, 2], # 1-star and 2-star only
"verifiedPurchaseOnly": True,
})
negative_reviews = [
r for r in apify.dataset(run["defaultDatasetId"]).iterate_items()
if r.get("_type") != "summary"
]
# Collect complaint themes
complaints = [r["body"] for r in negative_reviews if r.get("body")]
print(f"{len(complaints)} verified negative reviews collected")
Supported Marketplaces
| Input value | Marketplace |
|---|---|
amazon.com | United States |
amazon.co.uk | United Kingdom |
amazon.de | Germany |
amazon.fr | France |
amazon.co.jp | Japan |
amazon.in | India |
amazon.ca | Canada |
amazon.com.au | Australia |
Running the same ASIN across amazon.com and amazon.co.uk lets you compare how the same product is perceived in different markets — useful for localisation decisions.
Wire It Into a Claude Agent via MCP
{
"mcpServers": {
"amazon-reviews": {
"command": "npx",
"args": ["-y", "@apify/mcp-client"],
"env": {
"APIFY_TOKEN": "your-token-here",
"MCP_ACTOR_URL": "https://mcp.apify.com/?tools=themineworks/amazon-reviews"
}
}
}
}
With the MCP server connected, you can ask Claude to pull reviews for any ASIN and immediately analyse them — summarise the top complaints, extract recurring themes, draft a response to the most-helpful negative review, or compare sentiment across two competing products. Claude calls the actor, reads the results, and synthesises them without any intermediary script.
Use Cases
Reputation monitoring. Track a product’s star rating trajectory over time by scheduling daily runs with sortBy: "recent" and appending results to a spreadsheet. A sudden drop in average rating — before it shows up in the displayed aggregate — is an early warning of a quality or fulfilment problem.
Competitor benchmarking. Pull the top 200 reviews for each competing product in a category. Feed them into a classifier or Claude to extract what customers praise and what they criticise. The gap between what they love about competitors and what they hate is the product brief for a better version.
Sentiment datasets for NLP. If you are training a sentiment classifier, fine-tuning a model on product review language, or building a review-quality scoring system, this actor generates labelled training data at scale — each review comes with a star rating as a ground-truth sentiment label.
NPS and CSAT benchmarking. Before launching a product, pull reviews for the category leaders to establish what “good” looks like from a customer satisfaction perspective. The verified purchase badge lets you exclude incentivised or unverified reviews that inflate scores.
Review image analysis. Customers who include photos in reviews often surface product defects, packaging problems, or use cases the product listing doesn’t mention. The imageUrls field gives you direct access to those images for vision model analysis.
Pricing
Each successfully extracted review costs $0.003. Collecting 1,000 reviews from a single ASIN costs $3. Reviews that return a CAPTCHA or network error are not charged.
Frequently Asked Questions
Do I need an Amazon seller account or SP-API access?
No. The actor reads publicly visible review pages — the same pages any browser can access without logging in. There is no API key, no SP-API application, and no Amazon account needed.
Can I get only verified purchase reviews?
Yes. Set verifiedPurchaseOnly: true in the input. The actor checks the verified badge before recording each review and skips unverified ones. This is the standard filter for most sentiment analysis and benchmarking work because it excludes reviews left without actually buying the product.
How many reviews can I pull per ASIN?
Amazon’s public review pages paginate up to approximately 5,000 reviews per ASIN (10 reviews per page, up to 500 pages). The actor loops through the pagination automatically. Set maxReviews to cap the count and control cost.
Can I sort reviews by helpfulness or date?
Yes. Set sortBy to "recent" for reverse-chronological order or "helpful" to surface the reviews with the most helpful votes. Helpful-sorted is useful for finding the most influential reviews; recent-sorted is better for monitoring for new problems.
Does it capture review images?
Yes. When a customer includes photos with their review, the imageUrls array contains the full URLs of those images. You can download them directly for visual analysis or QA documentation.
What happens if Amazon shows a CAPTCHA?
The actor detects the CAPTCHA page and retries with a fresh residential proxy IP. Up to 2 retries per page. If all retries fail the page is skipped and the reviews on it are not charged.
Explore the scraper referenced in this article — see inputs, outputs, and pricing, then run it on Apify.
Airbnb Scraper: Listing Prices, Ratings, and Availability Without the API
Airbnb has no public listings API. Here's how to pull nightly price, rating, superhost status and coordinates from Airbnb search results using Python.
Maps Leads: Verified Email Extraction from Google Maps Business Listings
How to pull B2B leads from Google Maps with MX-verified emails, past the official API's 120-result cap, and pay only for contactable businesses.
Realtor.com Scraper: Property and Agent Data Without the MLS Paywall
Scrape Realtor.com listings in Python — price, beds, baths, county, and the listing agent + brokerage office on every record. No login, no API key.