Skip to main content
Thirdwatchthirdwatch
Reviews & ratings

How to Analyze Amazon Reviews for Product Research (2026)

Scrape Amazon reviews for product research, sentiment analysis, and competitor intelligence. Includes verified-purchase fields, Python code, and JSON output.

Jul 17, 2026 · 5 min read · 1,247 words
See the scraper →

The Thirdwatch Amazon Reviews Scraper converts Amazon product URLs or ASINs into structured written-review data for product research. It returns ratings, titles, text, authors, dates, verified-purchase and Vine labels, helpful votes, media, and source links. Product managers, marketplace sellers, researchers, and data teams can use the output to identify recurring complaints, compare competing products, track new feedback, and build sentiment datasets without an Amazon account.

▶ Skip the setup: Run the product-research Task on Apify → — it is preloaded with the small, tested configuration from this guide. No code required.

Disclosure: Thirdwatch's Apify links include its referral parameter. This does not change your price.

Why scrape Amazon reviews for product research

Amazon review analysis turns unstructured buyer feedback into evidence for product, positioning, and merchandising decisions. A product manager can group complaints by feature, a marketplace seller can compare verified-purchase feedback across competing ASINs, and a research team can quantify how sentiment changes after a new version launches.

The commercial signal is meaningful. Northwestern University's Spiegel Research Center found that purchase likelihood for a product displaying five reviews was 270% greater than for a product with no reviews. That does not mean every review is equally useful. Star-only ratings help summarize satisfaction, while written reviews explain why customers were satisfied or disappointed. Verified-purchase and Vine labels add context, helpful votes identify feedback other shoppers found useful, and attached images can expose quality problems that rating averages hide.

The practical workflow is therefore to collect written reviews, preserve their product identity, normalize the fields, and analyze themes alongside ratings. The Amazon Reviews Scraper actor page provides that repeatable data layer.

How does this compare to the alternatives?

Amazon review research can be done manually, with a custom script, or through a maintained pay-per-result Actor.

Method Commercial model Reliability Setup time Maintenance
Manual spreadsheets Staff time Low for more than a few products Minutes Repeated copying and cleanup
DIY Python parser Free code plus infrastructure Varies as public pages change Several days You own retries, parsing, and exports
Thirdwatch Amazon Reviews Scraper Pay per saved review Managed workflow with normalized fields About five minutes Thirdwatch maintains the Actor

Manual review reading remains valuable for final judgment, but it is a poor collection method. A DIY parser offers control, yet the engineering work is rarely the differentiator in a product-research project. The Thirdwatch Actor is best when the goal is to obtain consistent rows quickly and spend analyst time on categorization, sentiment, and decisions.

How to scrape Amazon reviews for product research in 4 steps

How do I choose the Amazon products to compare?

Start with a deliberate competitive set rather than a random list. Include your product, the category leader, a value alternative, and one or two products aimed at the same customer segment. Record the ASINs because they remain more stable than marketing titles.

products = {
    "our_product": "B0D1XD1ZV3",
    "category_leader": "B09V3KXJPB",
    "value_alternative": "B08N5WRWNW",
}

Use Amazon US for the strongest written-review coverage. Other supported markets can be selected with country, but anonymous review availability differs by storefront. A focused set of three to ten products is usually enough for an initial taxonomy of complaints and strengths.

How do I run the Amazon Reviews Scraper with Python?

The official Apify client starts the Actor and returns the dataset items. Store the API token in an environment variable rather than placing it in source control. Apify documents token management in its API authentication guide.

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("thirdwatch/amazon-reviews-scraper").call(run_input={
    "productUrlsOrAsins": list(products.values()),
    "country": "us",
    "maxReviewsPerProduct": 100,
    "sortBy": "recent",
})

reviews = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Collected {len(reviews)} written reviews")

maxReviewsPerProduct applies separately to each ASIN. Start with 25–100 reviews to validate the analysis, then raise the limit for products with high review volume. Select recent for monitoring or helpful when building a stable research sample.

How do I group review complaints and strengths?

Begin with transparent keyword groups before adding a language model. This creates an auditable baseline and reveals whether your category vocabulary is sensible.

from collections import Counter, defaultdict

themes = {
    "setup": ["setup", "install", "instructions", "assembly"],
    "durability": ["broke", "broken", "durable", "sturdy", "lasted"],
    "value": ["price", "expensive", "worth", "value"],
    "delivery": ["shipping", "delivery", "package", "damaged"],
}

theme_ratings = defaultdict(list)
for review in reviews:
    text = f"{review.get('title', '')} {review.get('text', '')}".lower()
    for theme, words in themes.items():
        if any(word in text for word in words):
            theme_ratings[theme].append(review.get("rating"))

for theme, ratings in theme_ratings.items():
    clean = [r for r in ratings if isinstance(r, (int, float))]
    average = sum(clean) / len(clean) if clean else None
    print(theme, len(ratings), round(average, 2) if average else "n/a")

Review a sample from every theme before treating the counts as findings. Words such as “light” can be positive for portability and negative for perceived durability. Human validation is the difference between a useful taxonomy and a misleading dashboard.

How do I compare verified and unverified feedback?

Segment the dataset instead of deleting one class. Verified-purchase status is useful context, not a universal truth score.

import pandas as pd

df = pd.DataFrame(reviews)
summary = (
    df.groupby(["asin", "verified_purchase"], dropna=False)
      .agg(
          reviews=("review_id", "count"),
          average_rating=("rating", "mean"),
          total_helpful_votes=("helpful_votes", "sum"),
      )
      .reset_index()
)
print(summary.to_string(index=False))

negative = df[df["rating"].fillna(5) <= 2]
negative[["asin", "title", "text", "verified_purchase", "url"]].to_csv(
    "amazon-negative-review-sample.csv", index=False
)

This produces both a quantitative comparison and a readable queue for product teams. Keep the source URL so analysts can check context when a finding appears important.

Sample Amazon review output

Each dataset row represents one written review, not one product or star-only rating.

The record below is an illustrative synthetic example, not a current Amazon observation.

{
  "review_id": "R2X9P4M7K3L8Q1",
  "asin": "B0D1XD1ZV3",
  "country": "us",
  "rating": 5,
  "title": "Comfortable and easy to use",
  "text": "Setup took only a few minutes and it has worked reliably every day.",
  "author": "Morgan",
  "date": "Reviewed in the United States on June 18, 2026",
  "verified_purchase": true,
  "vine_review": false,
  "helpful_votes": 7,
  "image_urls": [],
  "media_urls": [],
  "url": "https://www.amazon.com/dp/B0D1XD1ZV3",
  "source": "woot-amazon-reviews"
}

Use asin as the product join key, rating for quantitative cuts, and title plus text for qualitative analysis. Treat verified_purchase, vine_review, and helpful_votes as context variables. Optional media arrays can be empty because most reviewers do not attach files.

Common pitfalls in Amazon review analysis

The first pitfall is confusing ratings with written reviews. Amazon's headline total includes feedback with no review text, so the dataset count will often be smaller. The second is sampling only the most helpful reviews, which favors older feedback; use recent when measuring current product quality. The third is comparing products with very different launch dates without controlling for time. The fourth is using average rating alone, which hides specific failure modes and polarized feedback.

Privacy also matters. Reviewer display names are public but can still be personal data. Collect only what the research requires, limit retention, and avoid attempting to identify individuals. Finally, storefront availability changes. Amazon US provides the strongest coverage, while other markets are best effort. Thirdwatch normalizes supported records, deduplicates overlaps, and exposes the limitations so the analysis can remain honest.

Related Amazon product research use cases

Frequently asked questions

Can Amazon reviews be scraped by ASIN?

Yes. The Amazon Reviews Scraper accepts a ten-character ASIN or a full Amazon product URL. It normalizes both formats into the same job, returns written review records, and preserves the ASIN on every output row for clean multi-product analysis.

Why is the review count lower than Amazon's rating count?

Amazon's headline count includes star-only ratings as well as written reviews. The Actor returns written review records because those contain text, dates, authors, verification labels, and other fields needed for qualitative product research and sentiment analysis.

Can the scraper identify verified purchases and Vine reviews?

Yes. Results include verified-purchase status and, where publicly available, an Amazon Vine label. These fields let analysts segment feedback by reviewer context instead of treating every review as an equivalent observation.

Can Amazon review collection be scheduled?

Yes. Save the input as an Apify Task and attach a daily, weekly, or monthly schedule. Each run writes a new dataset that can feed a warehouse, spreadsheet, webhook, or sentiment-analysis workflow without maintaining a separate server.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.