# Amazon Search Scraper Pro (`red.cars/amazon-search-scraper-pro`) Actor

- **URL**: https://apify.com/red.cars/amazon-search-scraper-pro.md
- **Developed by:** [AutomateLab](https://apify.com/red.cars) (community)
- **Categories:** E-commerce, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 Search Scraper Pro: prices, ratings and "bought in past month" sales signals

Turn any Amazon search into a clean product-research table: ASIN, title, price, list price, star rating, review count, the **"bought in past month" sales signal** as a number, Prime, Best Seller / Amazon's Choice badges, and both the **overall and organic rank** with a sponsored flag.

**$2.50 per 1,000 products.** Products removed by your filters (sponsored ads, price, rating, reviews, sales, Prime) are never billed.

### Why this one

| Actor | Price per 1,000 on the free plan |
|---|---|
| **Amazon Search Scraper Pro** | **$2.50**, filters free |
| junglee/amazon-crawler (2.4K monthly users, 4.2 stars) | $5.00, plus extra charges for offers, sellers and delivery location |

What you get on every run:

- **Sales signal as a number**: "10K+ bought in past month" becomes `boughtPastMonth: 10000`, so you can sort and filter on demand
- **Organic rank vs sponsored**: `position` counts every slot, `organicPosition` counts only organic results, `isSponsored` flags ads
- **Filters that run before billing**: skip sponsored, min/max price, min rating, min reviews, min bought in past month, Prime only
- **Discount view**: current `price` next to the struck-through `listPrice`
- Works from keywords or your own amazon.com search URLs (keep your sort and category filters)

### Input

| Field | Type | What it does |
|---|---|---|
| `queries` | list | Search keywords, one search each: `air fryer`, `standing desk` |
| `searchUrls` | list | Full amazon.com search URLs, used as-is |
| `maxItems` | number | Hard cap on saved and billed products (default 10) |
| `maxPagesPerQuery` | number | Pages per keyword, about 20 products each (default 7) |
| `excludeSponsored` | boolean | Keep organic results only |
| `minPrice` / `maxPrice` | number | Price window in USD |
| `minRating` | text | e.g. `4.3` |
| `minReviews` | number | Minimum rating count |
| `minBoughtPastMonth` | number | e.g. `1000` for proven sellers only |
| `primeOnly` | boolean | Prime-eligible only |

```json
{
  "queries": ["air fryer", "protein powder"],
  "excludeSponsored": true,
  "minReviews": 100,
  "minBoughtPastMonth": 1000,
  "maxItems": 500
}
```

### Output

| Field | Example |
|---|---|
| `query`, `page` | `air fryer`, `1` |
| `position` / `organicPosition` | `4` / `2` |
| `asin` | `B0C33CHG99` |
| `title` | `Cosori TurboBlaze Air Fryer, 9-in-1, 6 Qt, PFAS-Free Ceramic Coating` |
| `url` | `https://www.amazon.com/dp/B0C33CHG99` |
| `price` / `listPrice` / `currency` | `89.99` / `119.99` / `USD` |
| `rating` / `reviewsCount` | `4.8` / `22126` |
| `boughtPastMonth` / `boughtPastMonthText` | `20000` / `20K+ bought in past month` |
| `isPrime`, `isSponsored`, `badge` | `false`, `false`, `Best Seller` |
| `image`, `scrapedAt` | thumbnail URL, fetch time |

### Pricing

Pay per event, no subscription:

- **Actor start:** $0.005 per run
- **Product:** $0.0025 per saved product ($2.50 per 1,000)

Rows dropped by your filters cost nothing, and `maxItems` is a hard ceiling on what you pay. Residential proxy is included in the price.

### Use cases

- **Product research and FBA sourcing**: find products with 1,000+ monthly sales, 4.3+ stars and under 500 reviews.
- **Rank tracking**: watch where your ASIN sits organically for a keyword, separate from ads.
- **Ad intelligence**: see which brands buy sponsored slots on your keywords.
- **Price and discount monitoring**: price vs list price across a category, on a schedule.
- **Market sizing**: sum `boughtPastMonth` across the top results for a keyword.

### FAQ

**Is "bought in past month" exact?** It is Amazon's own rounded badge (for example 10K+). We turn it into the lower bound number so you can sort and filter. Products without the badge return null.

**Which Amazon marketplace?** amazon.com (US). Search URLs from amazon.com are accepted with any sort or category filter.

**Does it open each product page?** No, it reads the search results, which keeps it fast and cheap. Use the ASIN with a product-detail scraper if you need full descriptions.

**Do I need a proxy?** No, residential proxy is built in and included in the price.

**Why did a keyword stop early?** When your filters leave fewer than 5 matches on a page after page 1, the actor moves on so you are not waiting on near-empty pages.

# Actor input Schema

## `queries` (type: `array`):

One Amazon search per line, e.g. air fryer, standing desk, creatine.

## `searchUrls` (type: `array`):

Optional. Full amazon.com search URLs (with your own sort or category filters).

## `maxItems` (type: `integer`):

Hard cap on saved (and billed) products for the whole run.

## `maxPagesPerQuery` (type: `integer`):

Amazon shows about 20 products per page. Default 7.

## `excludeSponsored` (type: `boolean`):

Drop sponsored placements and keep organic results only. Skipped rows are free.

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

Drop products cheaper than this. Free when filtered.

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

Drop products more expensive than this. Free when filtered.

## `minRating` (type: `string`):

e.g. 4.3. Free when filtered.

## `minReviews` (type: `integer`):

Drop products with fewer ratings than this. Free when filtered.

## `minBoughtPastMonth` (type: `integer`):

Keep only products Amazon shows as bought at least this many times last month (e.g. 1000). Free when filtered.

## `primeOnly` (type: `boolean`):

Keep only Prime-eligible products. Free when filtered.

## Actor input object example

```json
{
  "queries": [
    "air fryer"
  ],
  "maxItems": 10,
  "maxPagesPerQuery": 7,
  "excludeSponsored": false,
  "primeOnly": false
}
```

# Actor output Schema

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

One row per product in Amazon search results: ASIN, title, price, rating, reviews, bought in past month, Prime, badge, rank and sponsored flag.

# 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 = {
    "queries": [
        "air fryer"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("red.cars/amazon-search-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 = {
    "queries": ["air fryer"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("red.cars/amazon-search-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 '{
  "queries": [
    "air fryer"
  ],
  "maxItems": 10
}' |
apify call red.cars/amazon-search-scraper-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,red.cars/amazon-search-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/UOBWYmdflEEJm7LgE/builds/P8BNyezcDEkJ7PS9h/openapi.json
