Amazon Product & Review Scraper
Pricing
Pay per usage
Amazon Product & Review Scraper
Extract product details, prices, BSR rankings, reviews, Q&A, and variation data from Amazon product pages. Includes review sentiment analysis and price history tracking.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Richard P
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
A serverless Apify Actor that extracts detailed product data from Amazon product pages — prices, ratings, Best Sellers Rank (BSR), features, images, reviews, Q&A, and variation data.
Features
- Product Details — Title, brand, ASIN, current/original price, currency
- Ratings & Reviews — Star rating, total review count, individual reviews with author/rating/date/title/body/verified status
- Best Sellers Rank (BSR) — Rank number and category
- Availability — Stock status and availability text
- Features / Bullet Points — Key product features
- Images — High-resolution product image URLs
- Variations — Size, color, style options (optional)
- Q&A — Customer questions and answers (optional)
- Anti-blocking — Rotating user-agents (8+), random delays (1–3s), exponential-backoff retries (max 3), fallback selectors
- Graceful Abort — Handles Apify platform abort signals cleanly
Input Schema
| Field | Type | Default | Description |
|---|---|---|---|
urls | string[] | — | Required. Amazon product URLs to scrape. Supports /dp/ASIN and /gp/product/ formats. |
maxReviews | integer | 50 | Maximum reviews to scrape per product (0 = skip). Max 500. |
includeReviews | boolean | true | Scrape customer reviews. |
includeQA | boolean | true | Scrape questions & answers. |
includeVariations | boolean | false | Scrape variation data (size/color/style). |
proxyConfiguration | object | — | Apify proxy config for cloud runs. |
Example Input
{"urls": ["https://www.amazon.com/dp/B0CNBGX3GZ"],"maxReviews": 20,"includeReviews": true,"includeQA": true,"includeVariations": false}
Output
Each product is pushed as a separate dataset item with the following fields:
| Field | Type | Description |
|---|---|---|
productUrl | string | Original input URL |
asin | string | Amazon Standard Identification Number |
title | string | Product title |
brand | string | Brand name |
currentPrice | string | Current selling price |
originalPrice | string | List / MSRP price (if available) |
currency | string | Currency symbol ($, £, €, etc.) |
rating | string | Star rating (e.g. "4.5") |
reviewCount | integer | Number of ratings |
bsr | string | Best Sellers Rank (e.g. "#1,234") |
bsrCategory | string | BSR category name |
availability | string | Availability text |
inStock | boolean | Whether product is in stock |
features | string[] | Bullet-point feature list |
images | string[] | Product image URLs (high-res) |
variations | object[] | Variation options (if requested) |
reviews | object[] | Customer reviews (if requested) |
qa | object[] | Questions & answers (if requested) |
scrapedAt | string | ISO 8601 timestamp |
Review Object
{"author": "John D.","rating": "5.0","date": "Reviewed in the United States on January 15, 2025","title": "Great product!","body": "Really impressed with the quality...","verified": true}
Q&A Object
{"question": "Does this work with iPhone 15?","answer": "Yes, it works with all MagSafe compatible cases.","date": "Answered on December 10, 2024"}
Local Development
Prerequisites
- Python 3.11+
- Apify CLI (
npm install -g apify-cli) uvor standard venv for dependency management
Setup
# Clone / enter the actor directorycd amazon-product-scraper# Create and activate a virtual environmentpython3 -m venv .venvsource .venv/bin/activate# Install dependenciespip install -r requirements.txt# Run the actor locallyapify run --purge
Test with Sample Input
The actor will prompt for input. Provide:
{"urls": ["https://www.amazon.com/dp/B0CNBGX3GZ"],"maxReviews": 5,"includeReviews": true,"includeQA": true,"includeVariations": false}
Or use the --input flag with a JSON file:
echo '{"urls":["https://www.amazon.com/dp/B0CNBGX3GZ"],"maxReviews":5,"includeReviews":true,"includeQA":true}' > test-input.jsonapify run --purge --input-file test-input.json
Results appear in storage/datasets/default/.
Deployment to Apify Cloud
# Login to Apifyapify login --token "YOUR_API_TOKEN"# Push to cloudapify push
Notes on Amazon Blocking
Amazon actively blocks automated requests. This actor uses several techniques to mitigate this:
- User-agent rotation — 8 different browser/user-agent combinations
- Random delays — 1–3 seconds between requests (configurable)
- Exponential backoff — Retries with 2s, 4s, 8s waits (max 3 attempts)
- Fallback selectors — Multiple CSS selector strategies for each field
- Captcha detection — Detects block pages and retries
For production deployment on Apify, enabling the Apify proxy (residential proxies) significantly improves success rates.
License
MIT