# Amazon Scraper – Products, Prices, Reviews & Search Results (`nourishing_courier/amazon-scraper-pro`) Actor

Scrape Amazon products, reviews, prices, and search at scale. Extract titles, ASINs, prices, ratings, review text, images, sellers, and Best Seller ranks. Monitor competitors and track prices. No API key. Proxy rotation built in. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/nourishing_courier/amazon-scraper-pro.md
- **Developed by:** [Ani Björkström](https://apify.com/nourishing_courier) (community)
- **Categories:** E-commerce, Lead generation, AI
- **Features:** Limited permissions
- **Stats:** 31 total users, 7 monthly users, 92.1% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon Scraper - Products, Reviews, Prices & Search Data

Scrape **Amazon product data, customer reviews, prices, ratings, and search results** from 20+ Amazon marketplaces with no Amazon login, API key, or rate limits required. Feed it product URLs, ASINs, search keywords, best-seller pages, or category links and get clean structured data back. Export every result to **JSON, CSV, Excel, XML, or HTML** for price monitoring, competitor research, and product analysis.

This Amazon scraper works as an unofficial Amazon API alternative: residential proxy rotation and stealth anti-bot handling are built in, so you get reliable Amazon data extraction without managing CAPTCHAs, proxies, or browser fingerprints yourself.

### What you can extract

This Amazon data extractor scrapes the following from any Amazon product page, search page, best-seller list, or ASIN:

- **Product details** - `title`, `asin`, `brand`, `seller`, `availability`, `description`, `features`, `url`
- **Pricing data** - `price`, `priceNumeric`, `originalPrice`, `originalPriceNumeric`, `discountPercent`, `currency`, `coupon`, `deal`
- **Ratings & reviews** - `rating`, `reviewCount`, `ratingBreakdown` (5-star to 1-star percentages)
- **Images** - `mainImage` plus a deduplicated, high-resolution `images` gallery
- **Catalog data** - `categories` (breadcrumbs), `bestSellerRank`, `variants`, `specifications`, `dimensions`, `weight`, `manufacturer`, `firstAvailable`, `countryOfOrigin`
- **Badges & flags** - `isPrime`, `isBestSeller`, `isAmazonChoice`
- **Customer reviews** - `reviewId`, review `title`, `text`, `rating`, `date`, `authorName`, `verified` purchase badge, `helpfulCount`, and review `images`
- **Search & best-seller results** - `asin`, `title`, `price`, `rating`, `reviewCount`, `image`, `url`, `rank`, `isSponsored`, and Prime / Best Seller / Amazon's Choice flags

Every record also includes a `type` field (`product` or `review`) and a `scrapedAt` timestamp.

### Features

- **Multiple input modes** - Scrape by direct URL, ASIN, or search keyword in a single run
- **Multi-marketplace support** - Target any of 20+ Amazon country domains via the `country` setting
- **Customer review extraction** - Optionally pull reviews per product, sorted by most helpful or most recent
- **Automatic pagination** - Search and best-seller pages are paged automatically until your result limit is reached
- **Best sellers & categories** - Scrape Amazon best-seller and category/browse-node pages, not just products
- **Anti-blocking built in** - Stealth browser fingerprinting, rotating user agents, CAPTCHA and robot-check detection, and automatic context rotation with a fresh proxy IP on every block
- **Residential proxy rotation** - Uses residential proxies by default for reliable, geo-accurate Amazon data
- **Price intelligence** - Numeric price fields plus auto-calculated `discountPercent` from list vs. sale price
- **Deduplication** - Products are deduplicated by ASIN within a run, so you never pay for the same item twice
- **Resilient runs** - A single failing URL or query is skipped, never aborting the whole job
- **Flexible export** - Download as JSON, CSV, Excel, XML, or HTML, or pull via the Apify API

### Input

Provide any combination of `directUrls`, `searchQueries`, and `asins`. At least one is required.

| Parameter | Description | Default |
|-----------|-------------|---------|
| `directUrls` | Amazon URLs to scrape - product, search, best-seller, or category pages | `[]` |
| `searchQueries` | Keywords to search on Amazon (resolves to the selected country domain) | `[]` |
| `asins` | Amazon ASINs (10-character product IDs) to scrape directly | `[]` |
| `resultsLimit` | Maximum number of results to scrape and charge for | `100` |
| `includeReviews` | Also scrape customer reviews for each product | `false` |
| `reviewsPerProduct` | Maximum reviews to extract per product when reviews are enabled | `10` |
| `reviewSortBy` | Review sort order: `helpful` or `recent` | `helpful` |
| `includeDescription` | Include the full product `description` field in the output | `true` |
| `country` | Amazon marketplace country code (e.g. `US`, `UK`, `DE`, `JP`) | `US` |
| `proxyConfiguration` | Apify proxy settings (residential recommended and used by default) | Residential |

#### Example: scrape products by ASIN with reviews

```json
{
    "asins": ["B07CMS5Q6P", "B09V3KXJPB"],
    "includeReviews": true,
    "reviewsPerProduct": 20,
    "reviewSortBy": "recent",
    "country": "US",
    "resultsLimit": 100,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

#### Example: search Amazon by keyword

```json
{
    "searchQueries": ["wireless earbuds", "laptop stand"],
    "country": "UK",
    "resultsLimit": 50,
    "includeDescription": true
}
```

#### Example: scrape a specific product page

```json
{
    "directUrls": [
        { "url": "https://www.amazon.com/dp/B07CMS5Q6P" }
    ],
    "includeReviews": true,
    "reviewsPerProduct": 50,
    "reviewSortBy": "helpful"
}
```

#### Supported input URL types

| Type | Example |
|------|---------|
| Product | `https://www.amazon.com/dp/B07CMS5Q6P` |
| Search | `https://www.amazon.com/s?k=laptop+stand` |
| Best Sellers | `https://www.amazon.com/gp/bestsellers/electronics` |
| Category / browse node | `https://www.amazon.com/b?node=172282` |
| ASIN | Enter `B07CMS5Q6P` in the `asins` field |

### Output

Each result is pushed as a separate dataset item. Product items and review items share the same dataset and are distinguished by the `type` field.

#### Product output

```json
{
    "type": "product",
    "asin": "B07CMS5Q6P",
    "title": "Apple AirPods Pro 2",
    "price": "189.99",
    "priceNumeric": 189.99,
    "originalPrice": "$249.99",
    "originalPriceNumeric": 249.99,
    "discountPercent": 24.0,
    "currency": "$",
    "rating": 4.7,
    "reviewCount": 15230,
    "ratingBreakdown": { "5 star": "78%", "4 star": "12%", "3 star": "5%", "2 star": "3%", "1 star": "2%" },
    "mainImage": "https://m.media-amazon.com/images/I/61abcDEFgh.jpg",
    "images": ["https://m.media-amazon.com/images/I/61abcDEFgh.jpg"],
    "description": "AirPods Pro feature up to 2x more Active Noise Cancellation...",
    "features": ["Active Noise Cancellation", "Adaptive Audio", "Personalized Spatial Audio"],
    "brand": "Apple",
    "seller": "Amazon.com",
    "availability": "In Stock",
    "isPrime": true,
    "isBestSeller": true,
    "isAmazonChoice": false,
    "bestSellerRank": [{ "rank": 1, "category": "Headphones" }],
    "categories": ["Electronics", "Headphones", "Earbud Headphones"],
    "specifications": { "Item Weight": "0.19 ounces", "Connectivity Technology": "Bluetooth 5.3" },
    "dimensions": "1.22 x 0.86 x 0.94 inches",
    "weight": "0.19 ounces",
    "manufacturer": "Apple",
    "countryOfOrigin": "China",
    "coupon": "Save 5% with coupon",
    "deal": null,
    "variants": ["White"],
    "url": "https://www.amazon.com/dp/B07CMS5Q6P",
    "scrapedAt": "2026-06-21T14:20:00Z"
}
```

#### Review output

```json
{
    "type": "review",
    "asin": "B07CMS5Q6P",
    "reviewId": "R3ABCDEF12345",
    "title": "Best earbuds I have ever owned",
    "text": "The noise cancellation is incredible and the fit is perfect...",
    "rating": 5,
    "date": "Reviewed in the United States on January 15, 2026",
    "authorName": "John D.",
    "verified": true,
    "helpfulCount": 42,
    "images": [],
    "scrapedAt": "2026-06-21T14:20:00Z"
}
```

> Fields that cannot be found on a given page are returned as `null` (or empty arrays/objects). Numeric price helpers (`priceNumeric`, `originalPriceNumeric`, `discountPercent`) are added automatically when the corresponding raw price is present.

### Use cases

- **Price monitoring** - Track Amazon prices, discounts, and coupons over time using `priceNumeric`, `originalPriceNumeric`, and `discountPercent` to spot drops and react fast.
- **Competitor research** - Pull entire search results or best-seller lists for a category to benchmark competing products, pricing, ratings, and Prime/Best Seller positioning.
- **Review analysis** - Collect customer reviews at scale for sentiment analysis, feature requests, and quality issues, with `verified` purchase and `helpfulCount` signals.
- **Product research** - Validate product ideas and demand using `rating`, `reviewCount`, `bestSellerRank`, and `ratingBreakdown` before sourcing or launching.
- **Catalog & MAP enrichment** - Enrich your own catalog with Amazon `images`, `features`, `specifications`, `brand`, and category data, or monitor minimum advertised price compliance.
- **Market & trend tracking** - Scrape best-seller pages across marketplaces to see what is selling in each country.

### Pricing

This Amazon scraper is **pay-per-result**. You are charged once per successfully scraped item via the `result-scraped` event - each product, search result, best-seller entry, and review counts as one result. There is no monthly subscription and no charge for items that fail to scrape. Use `resultsLimit` to cap your spend on every run, and start with a small limit on a **free trial** run to preview the data before scaling up.

### FAQ

**Is scraping Amazon legal?**
This actor only collects publicly available data from Amazon product, search, review, and best-seller pages - no login or private data is accessed. You are responsible for ensuring your use of the scraped data complies with applicable laws and Amazon's terms of service.

**Do I need an Amazon account or API key?**
No. This Amazon data extractor requires no Amazon login, account, password, or API key. It accesses the same public pages a normal visitor sees.

**Which Amazon marketplaces are supported?**
20+ country domains including US, UK, DE, FR, IT, ES, CA, JP, IN, AU, BR, MX, NL, SE, PL, BE, SG, SA, AE, and TR. Set the `country` parameter, or paste a direct URL from any of these domains.

**How do I scrape Amazon reviews?**
Set `includeReviews` to `true` and choose how many reviews per product with `reviewsPerProduct`. Use `reviewSortBy` to sort by `helpful` (default) or `recent`. Each review is returned as its own item with `type: "review"` and the parent product's `asin`.

**Can I scrape by ASIN instead of URL?**
Yes. Add 10-character ASINs to the `asins` field and the scraper builds the product URLs for the selected `country` automatically. You can mix `asins`, `directUrls`, and `searchQueries` in one run.

**Do I need to configure proxies?**
No. Residential proxies are used by default for reliable, geo-accurate results, and the scraper automatically rotates IPs and browser contexts when it hits a CAPTCHA or robot check. You can override this with the `proxyConfiguration` input if you prefer specific proxy groups or your own proxy URLs.

**What export formats are available?**
Results can be downloaded as JSON, CSV, Excel (XLSX), XML, or HTML from the Apify platform, or retrieved programmatically via the Apify API and SDKs.

***

⭐ **Did this save you time?** A short review on the Actor's Store page helps other people find it, and tells me what to improve next. Bug reports and feature requests are welcome on the **Issues** tab.

# Actor input Schema

## `directUrls` (type: `array`):

Amazon product, search, category, or best seller URLs from any marketplace (US, UK, DE, etc.)

## `searchQueries` (type: `array`):

Keywords to search on Amazon. Each query scrapes up to 10 pages of results.

## `asins` (type: `array`):

Amazon product ASINs (10-character codes like B07CMS5Q6P). Directly scrapes each product page.

## `country` (type: `string`):

Which Amazon marketplace to use for search queries and ASINs.

## `resultsLimit` (type: `integer`):

Maximum total results to extract across all sources. Each result costs $0.002.

## `includeReviews` (type: `boolean`):

Extract customer reviews for each product. Included FREE — no extra charge!

## `reviewsPerProduct` (type: `integer`):

Maximum reviews to extract per product.

## `reviewSortBy` (type: `string`):

How to sort reviews.

## `includeDescription` (type: `boolean`):

Include the full product description text in output.

## `proxyConfiguration` (type: `object`):

Proxy settings. Residential proxies recommended for best results with Amazon.

## Actor input object example

```json
{
  "directUrls": [
    {
      "url": "https://www.amazon.com/dp/B07CMS5Q6P"
    }
  ],
  "searchQueries": [],
  "asins": [],
  "country": "US",
  "resultsLimit": 5,
  "includeReviews": false,
  "reviewsPerProduct": 10,
  "reviewSortBy": "helpful",
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "directUrls": [
        {
            "url": "https://www.amazon.com/dp/B07CMS5Q6P"
        }
    ],
    "searchQueries": [],
    "asins": [],
    "resultsLimit": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nourishing_courier/amazon-scraper-pro").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "directUrls": [{ "url": "https://www.amazon.com/dp/B07CMS5Q6P" }],
    "searchQueries": [],
    "asins": [],
    "resultsLimit": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("nourishing_courier/amazon-scraper-pro").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "directUrls": [
    {
      "url": "https://www.amazon.com/dp/B07CMS5Q6P"
    }
  ],
  "searchQueries": [],
  "asins": [],
  "resultsLimit": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call nourishing_courier/amazon-scraper-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nourishing_courier/amazon-scraper-pro"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WCQObQDFIpIfnEAWJ/builds/kBi5oZB0TidCFudnJ/openapi.json
