Amazon Product & Review Scraper avatar

Amazon Product & Review Scraper

Pricing

Pay per usage

Go to Apify Store
Amazon Product & Review Scraper

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

Richard P

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Apify Actor

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

FieldTypeDefaultDescription
urlsstring[]Required. Amazon product URLs to scrape. Supports /dp/ASIN and /gp/product/ formats.
maxReviewsinteger50Maximum reviews to scrape per product (0 = skip). Max 500.
includeReviewsbooleantrueScrape customer reviews.
includeQAbooleantrueScrape questions & answers.
includeVariationsbooleanfalseScrape variation data (size/color/style).
proxyConfigurationobjectApify 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:

FieldTypeDescription
productUrlstringOriginal input URL
asinstringAmazon Standard Identification Number
titlestringProduct title
brandstringBrand name
currentPricestringCurrent selling price
originalPricestringList / MSRP price (if available)
currencystringCurrency symbol ($, £, €, etc.)
ratingstringStar rating (e.g. "4.5")
reviewCountintegerNumber of ratings
bsrstringBest Sellers Rank (e.g. "#1,234")
bsrCategorystringBSR category name
availabilitystringAvailability text
inStockbooleanWhether product is in stock
featuresstring[]Bullet-point feature list
imagesstring[]Product image URLs (high-res)
variationsobject[]Variation options (if requested)
reviewsobject[]Customer reviews (if requested)
qaobject[]Questions & answers (if requested)
scrapedAtstringISO 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)
  • uv or standard venv for dependency management

Setup

# Clone / enter the actor directory
cd amazon-product-scraper
# Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the actor locally
apify 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.json
apify run --purge --input-file test-input.json

Results appear in storage/datasets/default/.

Deployment to Apify Cloud

# Login to Apify
apify login --token "YOUR_API_TOKEN"
# Push to cloud
apify push

Notes on Amazon Blocking

Amazon actively blocks automated requests. This actor uses several techniques to mitigate this:

  1. User-agent rotation — 8 different browser/user-agent combinations
  2. Random delays — 1–3 seconds between requests (configurable)
  3. Exponential backoff — Retries with 2s, 4s, 8s waits (max 3 attempts)
  4. Fallback selectors — Multiple CSS selector strategies for each field
  5. Captcha detection — Detects block pages and retries

For production deployment on Apify, enabling the Apify proxy (residential proxies) significantly improves success rates.

License

MIT