# Amazon Search Products Scraper (`fastdataapi/amazon-search-products-scraper`) Actor

Amazon Search Products Scraper — Extract Amazon search results including product names, prices, ratings, reviews, ASINs, images, availability, and product URLs. Useful for product research, price tracking, competitor analysis, market research, and e-commerce data collection.

- **URL**: https://apify.com/fastdataapi/amazon-search-products-scraper.md
- **Developed by:** [Fast Data API](https://apify.com/fastdataapi) (community)
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Products Scraper — Prices, Ratings, ASINs and Links

Amazon Search Products Scraper extracts the products shown on Amazon search results pages, by keyword or search URL, across 7 marketplaces. Each product includes its ASIN, title, price, list price, star rating, review count, Prime and sponsored flags, brand, delivery text and full product link. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a price monitoring pipeline. **No Amazon account or cookies needed.** Start with one keyword, then track every search term you sell under.

![Amazon Search Products Scraper output: price, rating, sponsored flag and rank as JSON](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/i-amazon-search-hero.webp)

***

### What data can I extract with Amazon Search Products Scraper?

Using this Amazon Product API, you will be able to extract the following Amazon product data:

| 🆔 ASIN | 🏷️ Product title | 💲 Price | 🧾 List price |
|---|---|---|---|
| ⭐ Star rating | 💬 Review count | 🚚 Prime badge | 📣 Sponsored flag |
| 📈 Sales volume ("bought in past month") | 📦 Delivery text | 🏭 Brand | 🧩 Series or model (if available) |
| 🎨 Variations (colours, sizes) | 📝 Product details | ♻️ Other offer price (used, renewed, other sellers) | 🖼️ Image link |
| 🔗 Product link | 🔎 Keyword searched | 🌍 Marketplace | 📄 Results page and position |
| 🗂️ Department and category ID | 🧭 Category path | 📊 Total results for the search | 🗃️ Result categories |
| 💡 Related searches with links | 🔃 Sort order used | | |

***

### How to use Amazon Search Products Scraper

Built for sellers, pricing analysts and researchers who want every product on an Amazon search page as clean rows from one run.

**Copy to your AI assistant:**

```text
Amazon Search Products Scraper (Apify Actor ID: fastdataapi/amazon-search-products-scraper, https://apify.com/fastdataapi/amazon-search-products-scraper) is an Apify Actor that returns the products shown on Amazon search results pages as structured JSON: ASIN, title, price, list price, star rating, review count, Prime and sponsored flags, brand, delivery text and full product link. Use it whenever someone needs Amazon search results without cookies, a login, or a browser - price monitoring, keyword rank tracking, checking which competitors buy sponsored placements. Inputs: startUrls (array, required, one search per item: a keyword or a full Amazon search URL whose filters are kept), amazonDomain (string, marketplace for keywords: "amazon.com" | "amazon.co.uk" | "amazon.de" | "amazon.fr" | "amazon.it" | "amazon.es" | "amazon.ca", default "amazon.com"), proxyCountry (string, proxy country: "AUTO" | "US" | "GB" | "DE" | "FR" | "ES" | "IT" | "CA", default "AUTO"), sortOrder (string, result order: "relevanceblender" | "price-asc-rank" | "price-desc-rank" | "review-rank" | "date-desc-rank", default "relevanceblender"), maxPages (integer, results pages per search, 1-1000, default 1), proxyConfiguration (object, proxy settings, default Apify residential proxy). Every row is one product; a product that appears twice in the same search is returned once. Amazon shows about 20 products per results page, and a search never reads more pages than Amazon has for it.
```

#### Amazon Search Products Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at the Apify MCP server with this Actor already loaded as a tool, and it can run it on its own. No glue code, no scraping logic in your prompts, no separate search-and-add step.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/amazon-search-products-scraper"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open [the Actor's page in the Apify Store](https://apify.com/fastdataapi/amazon-search-products-scraper).
3. Enter the Amazon keyword or search URL.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale Amazon Search Products Scraper to bulk

To scrape Amazon search results for many terms, put every keyword and search URL you track into the search list: each line is its own search, and all of them run at the same time in one run. Raise the maximum pages per search when you need more than the first page of each search. A keyword uses the marketplace you pick, while a pasted URL keeps its own marketplace and filters, so one run can cover several Amazon stores. For recurring tracking, save the input as a task and schedule it daily or weekly, then compare runs by ASIN.

***

### ✨ Features

Amazon Search Products Scraper fetches clean, structured products from Amazon. It's ideal for price monitoring, keyword rank tracking, sponsored-ad research and catalogue enrichment, and it works as an amazon product scraper and amazon product data extractor for any search you can open in a browser.

It extracts, per product:

- **Price and list price** – what the product sells for now and the crossed-out price, when shown
- **Star rating and review count** – the rating text and the number of ratings
- **ASIN and product link** – the Amazon product ID and a full link to the product page
- **Sponsored flag and position** – whether the result is an ad and where it sits on the page
- **Prime badge and delivery text** – the delivery promise shown for the product
- **Brand, series and variations** – filled from the product page when the search result does not show them
- **Sales volume** – the "bought in past month" demand line
- **Search details** – keyword, marketplace, page, total results and related searches

⚡ Missing values on the search result are filled from the product's own page, and a field Amazon does not show stays empty instead of getting a made-up value.

***

### Use cases 💡

- **Amazon seller** — track price and list price for your keyword's top ASINs every morning.
- **Brand manager** — see which competitors buy sponsored spots on your main search terms.
- **Pricing analyst** — run an amazon price scraper sweep sorted by price, low to high.
- **SEO and ads team** — use it as an amazon keyword scraper and amazon asin scraper to log rank.
- **AI agent builder** — feed product rows into a RAG index for shopping-assistant answers.

Building an AI agent? [Connect Amazon Search Products Scraper over MCP](#mcp-integration-for-ai-agents) and let it call the actor on its own.

***

### Why choose this actor?

- **Many products per run, from several searches at once.** A recorded test run returned 77 product rows from 2 searches (2 results pages each) on amazon.co.uk in 23 seconds, every row with price, rating and a full product link.
- **The numbers behind each product.** One recorded product came back at £29.99 with a £129.99 list price, a 4.8-star rating from 134 ratings, "500+ bought in past month" and its full category path.
- **31 fields, 7 marketplaces, 5 sort orders.** Keywords or filtered search URLs on amazon.com, .co.uk, .de, .fr, .it, .es and .ca, sorted by relevance, price, reviews or newest arrivals.

***

### ⬇️ Input

![Amazon Search Products Scraper input form with keywords, domain, sort order and max pages](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/i-amazon-search-input.webp)

The actor takes a list of searches: each item is a keyword or a full Amazon search URL. The search list is the only required field.

| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
| `startUrls` | Yes | array | One search per item: a keyword or a full Amazon search URL. A pasted URL keeps its department, category, price range and sort filters, and its own marketplace. | `["wireless headphones", "https://www.amazon.co.uk/s?k=usb+c+cable&low-price=5&high-price=15"]` |
| `amazonDomain` | No | string | Marketplace for keywords: amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es or amazon.ca. Other values fall back to amazon.com. Default `amazon.com`. | `"amazon.co.uk"` |
| `proxyCountry` | No | string | Proxy country: `AUTO`, `US`, `GB`, `DE`, `FR`, `ES`, `IT`, `CA`. AUTO matches the marketplace field; a pasted URL for another marketplace still uses this country, so pin it when you mix marketplaces. Default `AUTO`. | `"AUTO"` |
| `sortOrder` | No | string | `relevanceblender` (featured), `price-asc-rank`, `price-desc-rank`, `review-rank`, `date-desc-rank`. Default `relevanceblender`. | `"relevanceblender"` |
| `maxPages` | No | integer | Results pages per search, 1–1000. Never more than the search has. Default `1`. | `2` |
| `proxyConfiguration` | No | object | Proxy settings. Default: Apify residential proxy. Your own proxy URLs are tried first; a blocked request switches to a residential proxy. | `{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}` |

Accepted search formats:

- a plain keyword, e.g. `wireless headphones`
- a search URL, e.g. `https://www.amazon.com/s?k=TV`
- a filtered search URL, e.g. `https://www.amazon.co.uk/s?k=usb+c+cable&low-price=5&high-price=15`

#### Free plan limits

Users on the Apify free plan can fetch up to 20 products per run (all searches together) and 200 products per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.

#### Example input

This is the input of a recorded test run (run locally without a proxy; on Apify keep the default residential proxy):

```json
{
  "startUrls": [
    "wireless headphones",
    "https://www.amazon.co.uk/s?k=usb+c+cable&low-price=5&high-price=15"
  ],
  "amazonDomain": "amazon.co.uk",
  "proxyCountry": "AUTO",
  "sortOrder": "relevanceblender",
  "maxPages": 2,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

***

### ⬆️ Output

![Amazon Search Products Scraper output fields: price, retailPrice, salesVolume and searchResultPosition](https://api.apify.com/v2/key-value-stores/Lg9lp51Levfro6SrV/records/i-amazon-search-output.webp)

Every product is one typed, normalized JSON item with the same 31 keys on every run. Export it as JSON (default), CSV or Excel.

#### Example output

A real row from the test run above (tracking parameters in the two links are shortened here):

```json
{
  "asin": "B0H9WZF7TP",
  "productDescription": "Active Noise Cancelling Ear Buds 48H Wireless Earbuds with Touch Screen",
  "imgUrl": "https://m.media-amazon.com/images/I/715Y2eeg1mL._AC_UY218_.jpg",
  "price": 29.99,
  "retailPrice": 129.99,
  "productRating": "4.8 out of 5 stars",
  "countReview": 134,
  "dpUrl": "https://www.amazon.co.uk/Active-Cancelling-Wireless-Earbuds-Screen-Deep-Black/dp/B0H9WZF7TP/ref=sr_1_1_sspa?dib=…",
  "prime": false,
  "sponsored": true,
  "salesVolume": "500+ bought in past month",
  "deliveryMessage": "FREE delivery Sat 10 Oct on your first eligible order to UK or Ireland Or fastest delivery Fri 9 Oct",
  "manufacturer": "Thunelec",
  "series": null,
  "variations": ["+8 other colours/patterns"],
  "productDetails": ["HiFi Stereo Bluetooth Headphones with ENC Noise Cancelling/Transparency Mode, IPX7 Earphones with 5 EQ Modes for iOS Android"],
  "secondaryOffer": null,
  "statusCode": 200,
  "statusMessage": "FOUND",
  "keyword": "wireless headphones",
  "domainCode": "co.uk",
  "page": 1,
  "selectedCategory": "aps",
  "browseNode": 310193011,
  "nodeHierarchy": "560798,17489626031,4085731,310193011",
  "resultCount": 8081,
  "categories": ["Noise Cancelling", "Earbuds", "Over-ear"],
  "similarKeywords": [
    { "keyword": "wireless headphones over ear", "url": "https://www.amazon.co.uk/s?k=wireless+headphones+over+ear&ref=rsl_sug_0_0…" }
  ],
  "currentPage": 1,
  "sortStrategy": "relevanceblender",
  "searchResultPosition": 0
}
```

The status code and status are always 200 and "FOUND" on a product row, and the current page always repeats the page number.

***

### How does it work?

The actor reads the same public search pages any shopper sees on Amazon, without a login, using plain web requests and no browser. Results match what a shopper in the marketplace's country sees, so prices, Prime badges and delivery dates are the local ones. You get every results page you asked for, and values the search result leaves out, such as the brand, series or list price, are filled in from the product's own details. Requests go through Apify's residential proxy by default. When Amazon blocks a request, the actor pauses, retries and switches to a fresh residential connection on its own. Pages that still fail are reported in the log and never turn into empty rows. The output keeps the same field names on every run, even when Amazon changes how its pages look.

***

### How do you integrate Amazon Search Products Scraper into your stack?

It works with what you already use: the Apify REST API from any language (an amazon search results api with no parsing on your side), MCP for AI agents, and no-code tools.

#### MCP integration for AI agents

Add the Apify MCP server to your agent with one command, with this Actor already loaded as a tool:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/amazon-search-products-scraper"
```

This registers Amazon Search Products Scraper as a tool your agent can call directly: the agent runs a search and reads the product rows back as JSON, so you can ask for prices or sponsored results in plain language, with no separate search-and-add step. It works in Claude Code, Cursor and Windsurf.

#### No-code tools (n8n, Make, LangChain)

- **n8n** — add the Apify node, choose "Run an Actor", select this Actor and pass the input JSON. Then read the run's dataset items in the next node and send the rows to a sheet or database.
- **Make** — use the Apify app's "Run an Actor" module with your input, then "Get Dataset Items" to loop over the products. Map the price and product link to your next module.
- **LangChain** — install `langchain-apify`, run the Actor with the Apify client, and load the run's dataset with `ApifyDatasetLoader` to turn each product into a document for your retriever.

To export Amazon products to CSV, open the run's dataset in Apify Console and download CSV, or call the dataset items endpoint with `format=csv`.

***

### Is it legal to scrape Amazon data?

Collecting publicly available Amazon product listings is generally legal, because the data is visible to any visitor without logging in. This actor returns only public search and product data — what any shopper sees without an account — and no customer or seller personal data. Amazon's terms of service restrict automated access, so check how your use fits them. Under GDPR, collecting public data is generally permissible, but storing and using it must still comply with local data-protection law. Consult legal counsel if your use case involves bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Amazon Search Products Scraper return?

It returns the ASIN, product title, price, star rating and review count for every product, plus Prime and sponsored flags, brand, delivery text, a full product link and the search details. See [the data fields section](#what-data-can-i-extract-with-amazon-search-products-scraper) for all 31 fields.

#### Does Amazon Search Products Scraper require an Amazon account or login?

No. Only public Amazon product data is extracted, and no credentials or cookies are needed.

#### How fast does Amazon Search Products Scraper run?

A recorded test run returned 77 products from 2 searches (2 pages each) in 23 seconds, and a 1-page search returned 22 products in 14 seconds. Data is read live from Amazon on every run, never from a cache.

#### What happens if a product is private or doesn't exist?

A search with no results produces no rows and a log line that says so. A product removed after the search loaded keeps the values from the search result. Results pages that stay blocked are logged and skipped, and if no search returns anything because of blocks, the run ends as failed with a clear status message, so check the run status in your code.

#### Can I scrape multiple Amazon products at once?

Yes. This amazon search scraper takes many keywords or search URLs in one list; each is its own search, all run at the same time, and each returns every product on the pages you ask for.

#### Does Amazon Search Products Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Amazon Search Products Scraper is available as an MCP tool. Register the Apify MCP server with `claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/amazon-search-products-scraper"` in Claude Code, Cursor or Windsurf. Any agent that can call an HTTP endpoint can also use the Apify REST API directly.

#### Does Amazon Search Products Scraper return data in a format LLMs can use directly?

Yes. Every product is typed, normalized JSON with consistent field names, with no HTML parsing and no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool, with no transformation step.

#### What happens when Amazon changes its layout or updates its anti-bot system?

The actor is maintained. When Amazon changes, the actor is updated, and your calls keep returning the same JSON schema with no changes on your end.

#### Can I use Amazon Search Products Scraper without managing proxies or browser infrastructure?

Yes. The residential proxy, retries and block handling run on the actor's side, and no browser is involved. You send one request and get structured JSON back. No proxy accounts, no headless browser setup, no maintenance.

#### Which Amazon product fields work best for AI training data and RAG indexing?

For RAG, use the text-rich fields: product title, product details, brand, delivery text and result categories. For training data, use the numeric and true/false fields: price, list price, review count, position, Prime badge and sponsored flag. Values are typed strings, numbers, true/false values and lists, so they need little cleanup.

***

### Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this Actor's page. Every report is read, and fixes ship as updated builds of the actor.

# Actor input Schema

## `startUrls` (type: `array`):

One search per line: a keyword (e.g. "Playstation") or a full Amazon search URL (e.g. https://www.amazon.com/s?k=TV). A pasted URL keeps its department, category, price range and sort filters on every page, and its marketplace overrides the Amazon domain field. Duplicate products within one search are returned once. Free plan: up to 20 products per run (all searches together) and 200 per month; paid plans have no limit.

## `amazonDomain` (type: `string`):

Marketplace used for keywords: amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es or amazon.ca. Any other value falls back to amazon.com (the log says so). Prices come in that marketplace's currency, with a delivery address in that country.

## `proxyCountry` (type: `string`):

Country the proxy connects from. AUTO matches the marketplace in the Amazon domain field (e.g. amazon.co.uk uses GB) for accurate prices, Prime badges and availability. A pasted URL for a different marketplace still connects from this country, so pin the matching country when you scrape another marketplace.

## `sortOrder` (type: `string`):

How Amazon sorts the results. A pasted URL with its own sort keeps that sort.

## `maxPages` (type: `integer`):

How many results pages to read for each search (about 20 products per page). The actor never reads more pages than the search actually has, even if you set this higher.

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

Default: Apify residential proxy, because Amazon often blocks or limits requests without one. You can also use your own proxy URLs; they are tried first. If Amazon still blocks a request, the actor retries and switches to a residential proxy automatically, even when the proxy is turned off.

## Actor input object example

```json
{
  "startUrls": [
    "Playstation",
    "https://www.amazon.com/s?k=TV"
  ],
  "amazonDomain": "amazon.com",
  "proxyCountry": "AUTO",
  "sortOrder": "relevanceblender",
  "maxPages": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All scraped items in the Actor's default dataset.

# 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 = {
    "startUrls": [
        "Playstation",
        "https://www.amazon.com/s?k=TV"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fastdataapi/amazon-search-products-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 = {
    "startUrls": [
        "Playstation",
        "https://www.amazon.com/s?k=TV",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("fastdataapi/amazon-search-products-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 '{
  "startUrls": [
    "Playstation",
    "https://www.amazon.com/s?k=TV"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call fastdataapi/amazon-search-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fastdataapi/amazon-search-products-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/cdCt9ftW1Hafea7Hc/builds/5AO8mHrVSA7gJzZfB/openapi.json
