# Amazon Product Scraper — Prices, Ratings & Best Sellers (`jesting_grass/amazon-product-scraper`) Actor

Scrape Amazon search results and product pages: price, rating, reviews count, bought past month, Best Seller & Amazon's Choice badges, specs, images and variants. 18 marketplaces, reliable API data, pay per product.

- **URL**: https://apify.com/jesting\_grass/amazon-product-scraper.md
- **Developed by:** [A J](https://apify.com/jesting_grass) (community)
- **Categories:** E-commerce, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 products

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 Product Scraper — Prices, Ratings & Best Sellers

**Scrape Amazon search results and product pages on 18 marketplaces.** For every product you get the **price**, **rating**, **number of reviews**, **"bought in past month"** sales signal, **Best Seller** and **Amazon's Choice** badges, sponsored flag, delivery info and image. Add **full product details** (brand, description, specs, all images, variant ASINs, discount and top reviews) with one switch.

Built for **price monitoring, product research, competitor tracking and ecommerce analytics**. Data comes through a commercial Amazon data API, not a fragile browser scraper, so there are no captchas, blocked runs or proxy costs for you.

### Why this Actor

- 🛒 **Search any keyword**: up to 700 products per search, in Amazon's own order
- 📈 **Sales signals**: `boughtPastMonth` ("5K+ bought in past month"), Best Seller and Amazon's Choice badges, review counts
- 🔎 **Full product pages by ASIN or URL**: brand, description, specs table, images, variants, discount %, top reviews (when Amazon shows them)
- 🌍 **18 marketplaces**: US, UK, Germany, France, Italy, Spain, Netherlands, Sweden, Poland, Turkey, Canada, Mexico, Brazil, Japan, India, Australia, UAE, Saudi Arabia
- 🎛 **Filters**: min/max price, sort (price, reviews, newest), include or skip sponsored listings
- 💸 **$1.50 per 1,000 products**, and empty searches are free
- ⏰ **Price tracking**: schedule it daily or weekly and compare prices over time

### Input examples

Search results:

```json
{
  "searchQueries": ["standing desk", "wireless earbuds"],
  "marketplace": "us",
  "maxResultsPerQuery": 100,
  "sortBy": "avg_customer_review",
  "maxPrice": 300
}
```

Full product pages:

```json
{
  "asins": ["B0B41YH9B6", "https://www.amazon.com/dp/B0BLCW7MBR"],
  "marketplace": "us"
}
```

### Output examples (real, September 2026)

Search results for "standing desk" on amazon.com:

| # | Title | Price | Rating | Reviews | Bought past month | Amazon's Choice |
|---|---|---|---|---|---|---|
| 1 | Cubiker Standing Desk, 48x24 Inches Sit Stand Home Office Desk… | $75.99 | 4.6 | 4,400 | — | — |
| 2 | FEZIBO Standing Desk 48 × 24 Inch Electric Height Adjustable, Maple | $99.98 | 4.5 | 4,800 | 5,000 | ✅ |
| 3 | White Oak Rolling Laptop Desk with Live Edge, 27.5 x 19 in | $224.99 | 5 | 2 | 360 | — |

One search result:

```json
{
  "type": "search",
  "searchQuery": "standing desk",
  "marketplace": "amazon.com",
  "position": 2,
  "asin": "B0F8MHPVPH",
  "title": "FEZIBO Standing Desk 48 × 24 Inch Electric Height Adjustable, Maple",
  "url": "https://www.amazon.com/dp/B0F8MHPVPH",
  "price": 99.98,
  "currency": "USD",
  "rating": 4.5,
  "reviewsCount": 4800,
  "boughtPastMonth": 5000,
  "isBestSeller": false,
  "isAmazonChoice": true,
  "isSponsored": false,
  "delivery": "FREE delivery Thu, Oct 1 Or fastest delivery Wed, Sep 30",
  "imageUrl": "https://m.media-amazon.com/images/I/71smFjr2QgL._AC_UL320_.jpg"
}
```

Product details (trimmed):

```json
{
  "type": "details",
  "asin": "B0B41YH9B6",
  "title": "ErGear 48 X 24 Inch Height Adjustable Electric Standing Desk, Black",
  "brand": "ErGear",
  "price": 99.99,
  "listPrice": 119.99,
  "currency": "USD",
  "discountPercent": 17,
  "isAvailable": true,
  "rating": 4.5,
  "reviewsCount": 12034,
  "categories": ["Home & Kitchen", "Furniture", "Home Office Furniture", "Home Office Desks"],
  "specs": {"Color": "Black", "Item Weight": "43.8 pounds", "Lifting Mechanism": "Electric"},
  "parentAsin": "B0B41YND63",
  "variantAsins": ["B0B421WC7Q", "B0B422BBHT", "..."],
  "images": ["https://m.media-amazon.com/images/I/718KkXOCktL._AC_SL1500_.jpg", "..."],
  "topReviews": [{"title": "A teleworker’s requirement", "rating": 5, "verifiedPurchase": true, "helpfulVotes": 39, "text": "..."}]
}
```

### Output fields

| Row type | Fields |
|---|---|
| `search` | `searchQuery`, `marketplace`, `position`, `asin`, `title`, `url`, `price`, `priceTo`, `currency`, `rating`, `reviewsCount`, `boughtPastMonth`, `isBestSeller`, `isAmazonChoice`, `isSponsored`, `specialOffers`, `delivery`, `imageUrl` |
| `details` | `asin`, `marketplace`, `title`, `url`, `brand`, `price`, `listPrice`, `currency`, `discountPercent`, `isAvailable`, `rating`, `reviewsCount`, `isAmazonChoice`, `categories`, `description`, `specs`, `images`, `parentAsin`, `variantAsins`, `topReviews` |

### Use it from code

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("jesting_grass/amazon-product-scraper").call(run_input={
    "searchQueries": ["standing desk"],
    "marketplace": "us",
    "maxResultsPerQuery": 100,
})
for p in client.dataset(run.default_dataset_id).iterate_items():
    if (p.get("boughtPastMonth") or 0) >= 1000:
        print(p["price"], p["boughtPastMonth"], p["title"][:60])   # products that actually sell
```

More examples (best sellers, niche research, daily price tracker, ASIN details, Node.js, cURL): **[github.com/emiohr/amazon-product-scraper-api](https://github.com/emiohr/amazon-product-scraper-api)** · Tutorial: [Scrape Amazon in Python without proxies](https://dev.to/jesting_grass/scrape-amazon-in-python-without-proxies-best-sellers-niche-research-and-a-price-tracker-j69)

### Pricing

Pay per event (see the **Pricing** tab):

- **Product**: per search-result product returned
- **Product details**: per full product page (ASIN input, or search results with "Add full details")

Empty searches and unknown ASINs are free. The Actor respects your maximum-charge limit.

### Use cases

- **Price monitoring & price tracking**: schedule runs and watch competitors' prices and discounts
- **Product research**: find products with high `boughtPastMonth` and few reviews, a gap you can enter
- **Brand and seller analytics**: track your products' rank, rating and badges per keyword
- **Market research**: compare categories across 18 Amazon marketplaces
- **Catalog enrichment**: fill in titles, specs and images by ASIN

### More tools from the same developer

- [Google Trends Scraper & API](https://apify.com/jesting_grass/google-trends-api) — Google Shopping and YouTube trends, rising searches and seasonality
- [Keyword Research Tool](https://apify.com/jesting_grass/keyword-research-tool) — Google search volume, difficulty, CPC and keyword ideas
- [Tech Stack Detector](https://apify.com/jesting_grass/tech-stack-detector) — ecommerce platform, payments and analytics behind any online store
- [Backlink Checker](https://apify.com/jesting_grass/backlink-checker) — every backlink, referring domains and competitor link gap
- [Bulk Domain Authority & Backlink Checker](https://apify.com/jesting_grass/bulk-domain-authority-checker) — domain rank and backlinks for thousands of domains

### FAQ

**Is scraping Amazon legal?** This Actor returns publicly visible product listing data. It does not collect personal data; reviews are returned without reviewer profiles. Check your own use case against Amazon's terms and your local law.

**Why is `boughtPastMonth` empty for some products?** Amazon only shows the "bought in past month" label on some listings, and only for some marketplaces.

**Can I get all reviews of a product?** Product details include the top reviews shown on the product page, when Amazon includes them (for roughly half of products; `rating` and `reviewsCount` are always there). Amazon requires a login for the full review list.

*Not affiliated with Amazon. Amazon is a trademark of Amazon.com, Inc.*

# Actor input Schema

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

Amazon searches to scrape, e.g. "standing desk" or "wireless earbuds". Each returns the products on the results pages with price, rating, reviews and badges.

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

Optional. Get full product pages: description, specs, all images, variants and top reviews (when shown). Paste ASINs (B0B41YH9B6) or Amazon product URLs.

## `marketplace` (type: `string`):

Which Amazon store to search.

## `maxResultsPerQuery` (type: `integer`):

1–700. Products are returned in Amazon's order. You pay only for products returned.

## `sortBy` (type: `string`):

Amazon's sort order for search results.

## `minPrice` (type: `integer`):

Optional, in the marketplace currency (whole number).

## `maxPrice` (type: `integer`):

Optional, in the marketplace currency (whole number).

## `includeSponsored` (type: `boolean`):

Also return sponsored (ad) listings, flagged with isSponsored.

## `includeDetails` (type: `boolean`):

Also fetch the full product page (description, specs, images, variants, top reviews) for each product found. Billed per product page.

## Actor input object example

```json
{
  "searchQueries": [
    "standing desk"
  ],
  "marketplace": "us",
  "maxResultsPerQuery": 20,
  "includeSponsored": false,
  "includeDetails": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "searchQueries": [
        "standing desk"
    ],
    "maxResultsPerQuery": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("jesting_grass/amazon-product-scraper").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 = {
    "searchQueries": ["standing desk"],
    "maxResultsPerQuery": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("jesting_grass/amazon-product-scraper").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 '{
  "searchQueries": [
    "standing desk"
  ],
  "maxResultsPerQuery": 20
}' |
apify call jesting_grass/amazon-product-scraper --silent --output-dataset

```

## MCP server setup

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

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/aHL9qQhUmiw5pHFDM/builds/G81BJFFkHgJssNJTQ/openapi.json
