Amazon shows you a handful of "Top Reviews" and buries the rest behind pagination, lazy-loading, and inconsistent markup. If you're trying to understand what customers actually think at scale, reading reviews by hand doesn't work past a dozen ASINs, and generic scrapers weren't built for review data specifically. They miss verified purchase status, variant info, helpful-vote counts, and choke on deep pagination.
This tool was built to solve exactly that.
git clone https://github.com/yourusername/amazon-review-scraper.git
cd amazon-review-scraper
npm install # or: pip install -r requirements.txt
# Add ASINs to config/targets.json, then:
npm start # or: python main.py --mode=reviews --max-pages=50Full setup details are in Installation below.
| Field | Example |
|---|---|
| Reviewer name & badge | J. Miller · Verified Purchase |
| Star rating | 4 / 5 |
| Title & full body text | Cleaned, HTML-stripped, emoji-normalized |
| Date | 2026-07-14 (ISO 8601) |
| Variant purchased | Size: Medium, Color: Navy |
| Helpful votes | 23 |
| Overall rating distribution | % breakdown across 1–5 stars |
Sample record:
{
"asin": "B0EXAMPLE123",
"review_id": "R2EXAMPLE9Z8Q",
"reviewer_name": "J. Miller",
"verified_purchase": true,
"rating": 4,
"title": "Solid quality, runs slightly small",
"body": "Fabric feels durable and the stitching held up after multiple washes. Would size up if you're between sizes.",
"variant": "Size: Medium, Color: Navy",
"date": "2026-07-14",
"helpful_votes": 23
}Most scrapers treat reviews as a side feature bolted onto product scraping. This one is built around them:
Deep pagination by default. It walks the full review history instead of stopping at Amazon's default preview, so you're not just seeing the "Top Reviews" Amazon chose to show first.
Reviewer metadata, not just text. Verified purchase status, purchased variant, and helpful-vote counts come attached to every review, so you can filter signal from noise immediately.
Text that's actually clean. HTML artifacts, stray whitespace, and encoding issues are stripped before export, no post-processing required before feeding into an NLP pipeline.
Built to survive Amazon's changes. Selectors are anchored to structural layout and persistent attributes instead of brittle class names, so a UI tweak on Amazon's end doesn't break your pipeline overnight.
Resilient under load. Adaptive rate limiting, proxy and session rotation, and automatic retry with backoff mean a handful of blocked requests never take down a full batch job.
| Metric | Result |
|---|---|
| Throughput | 500+ reviews/minute |
| Field accuracy | 96%+ |
| Block/error rate | Under 0.4% with proxy rotation |
| Uptime | 99% |
| Pagination coverage | Full visible review history per listing |
| Memory per worker | ~350–550 MB |
- Sentiment & NLP teams feeding review text straight into models without cleanup overhead.
- Brand and competitor analysts comparing star distributions and recurring complaints across ASINs.
- Product teams surfacing the most common complaints to prioritize fixes.
- Trust & safety researchers cross-referencing verified purchase ratios and review timing to flag manipulation.
- Agencies and consultants running recurring "voice of customer" reports for clients.
| Manual reading | Amazon Review Scraper | |
|---|---|---|
| Time per 1,000 reviews | Hours | Minutes |
| Field consistency | Human error prone | Fully structured |
| Review history coverage | Top reviews only | Full paginated history |
| NLP-ready output | Requires manual tagging | Export-ready |
| Scales past a handful of ASINs | No | Yes |
- Node.js v16+ or Python 3.8+
- Git
- Chrome / Chromium headless runtime
git clone https://github.com/yourusername/amazon-review-scraper.git
cd amazon-review-scraper
npm install
# or
pip install -r requirements.txtAdd target ASINs to config/targets.json, then run:
npm start
# or
python main.py --mode=reviews --output=json --max-pages=50[ Target ASIN Queue ] --> [ Rate Limiter & Proxy Rotator ] --> [ Deep Pagination Walker ] --> [ Review Parsing & Text Normalization ] --> [ Structured JSON / CSV ]
Tech stack: Node.js + Python dual support, Puppeteer/Playwright for headless Chrome, an in-memory job queue with exponential backoff, a pluggable rotating proxy layer, and configurable CSV/JSON/database output adapters.
Does it get all reviews, or just the first page? Full paginated history, up to a configurable page limit, not just Amazon's default preview.
Can it flag verified purchases?
Yes, every record includes a verified_purchase boolean pulled directly from the badge on the review.
How does it avoid getting blocked? Randomized delays, realistic header spoofing, and optional proxy rotation to mimic normal browsing behavior.
Does it work on international marketplaces?
Yes. Swap the base domain and locale parameters in config to target .co.uk, .de, .ca, etc.
Is it free? Basic extraction is free. Deep pagination limits, proxy support, and bulk automation are part of the paid tier.
⚡ Cut review analysis time by 90% across 200+ SKUs 🎯 96% field accuracy on multi-locale listings 📊 Automated weekly sentiment reports for 5,000+ products
---
- Built-in sentiment scoring module
- Review image/video attachment extraction
- Fake review detection heuristics
- Scheduled/cron-based monitoring jobs
- Web dashboard for sentiment trends
- Docker deployment support
Intended for publicly available review data, used for research, product development, and competitive analysis. You're responsible for complying with Amazon's Terms of Service and applicable data protection laws in your jurisdiction. Don't use this to harvest personal data beyond what's publicly shown, or to bypass access controls.
Issues and pull requests welcome. Check the issues tab before opening a new one.
hello@scrapecrew.com
┃
pilot
┃
zee#2655
┃
whatsapp
For discussion, queries, and freelance work, reach out anytime.
MIT. See LICENSE.
