# Amazon Product Scraper: Search Results & Prices (`luzivanlt/amazon-products-scraper`) Actor

Every product on Amazon's search pages to the last page, sponsored marked, with monthly sales. $0.75 per 1,000 products. List price, delivery, coupons, variants.

- **URL**: https://apify.com/luzivanlt/amazon-products-scraper.md
- **Developed by:** [Luzi](https://apify.com/luzivanlt) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.52 / 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.
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 Product Scraper: Search Results & Prices

Get every product on Amazon's search results for any words, page after page
to Amazon's last results page, in Amazon's order, with sponsored products
marked. Each product comes with its price and list price, rating and ratings,
how many were bought last month, delivery, coupons, badges and variants. No
Amazon account, login or cookies needed.

Tested daily. Latest checks: three searches read to Amazon's last page,
899 products in 2 minutes; and the first page of a search on 18 Amazon
stores, from amazon.com and amazon.de to amazon.co.jp and amazon.com.br.

### What does this Actor do?

You give it search terms (the words you would type in Amazon's search box) or
links to Amazon search results. For each search it reads the results pages one
after another, as you would by clicking "Next", and saves one row per product
until it reaches your limit or Amazon's last results page.

Each row comes with:

- the ASIN, link, title, image, and the brand, subtitle, format or authors
  when the card shows them
- its place in the results (1 = the top product), the page it was on, and
  whether it was a sponsored placement
- rating, the exact number of ratings, the review highlight ("Top Reviewed for
  Battery life") and "bought in past month" as a number and as shown
- price, list or typical price and its label, unit price ("$0.57/ounce"),
  coupon, the currency, and the lowest price of other offers
- badges such as Amazon's Choice, Best Seller (with its category) and Limited
  time deal, plus labels such as "New on Amazon in past month"
- sustainability features and the certifications behind them
- Prime, the delivery message and date, the second delivery option, where it
  ships, and low-stock notes ("Only 5 left in stock")
- colour and pattern variants (each with its own ASIN and colour), the
  variant shown, the options available ("12 sizes, 9 flavors") and Amazon's
  product type
- the seller's id and the quantities a cart allows
- the search it came from, the store, and Amazon's own results count

### Why use it?

- **Search terms or links.** Type words, or paste any Amazon results link
  with the department, filters and sort you picked on Amazon.
- **The whole results list.** It follows Amazon's pages to the last one, and
  saves a product that shows up on several pages once, at its first place.
- **Sponsored products kept and marked**, with their place, so you can see
  what advertisers pay to show for a search.
- **More per row at a lower price.** List price, unit price, monthly sales,
  coupons, delivery, badges, certifications and variants, at no extra cost.
- **18 Amazon stores.** amazon.com by default; pick another store or paste a
  link from it (see *Good to know*).
- **Use the data anywhere.** Download as JSON, CSV or Excel, or send it to
  your own tools through Apify's API and integrations.

### How to use it

1. Type one or more searches into **Search terms** (or paste Amazon search
   results links into **Search links**).
2. Optionally, set **Max products per search**, the **Amazon store** and the
   **Sort by** order.
3. Click **Start**. When the run ends, open the **Output** tab to view the
   products or download them.

Run it with no input to see a sample: up to 50 products for "wireless earbuds",
charged as usual.

### Input

| Field                                                | What it does                                                                                            | Default      |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------ |
| **Search terms** (`searchTerms`)                     | Words to search for, one search each                                                                    | —            |
| **Search links** (`startUrls`)                       | Amazon search results links from the stores listed below; each keeps its own store, filters and sort    | —            |
| **Amazon store** (`marketplace`)                     | The store the search terms are searched on, such as `amazon.com`, `amazon.de` or `amazon.co.jp`         | `amazon.com` |
| **Sort by** (`sortBy`)                               | `featured`, `price_low_to_high`, `price_high_to_low`, `avg_customer_review`, `newest` or `best_sellers` | `featured`   |
| **Max products per search** (`maxProductsPerSearch`) | Stop each search after this many products (1 to 2,000)                                                  | 100          |

Give at least one search term or one link. Example input:

```json
{
  "searchTerms": ["wireless earbuds", "coffee beans"],
  "maxProductsPerSearch": 300,
  "sortBy": "best_sellers"
}
```

### Output

One row per product. An example, with made-up values:

```json
{
  "asin": "B0EXAMPLE1",
  "url": "https://www.amazon.com/dp/B0EXAMPLE1",
  "position": 3,
  "page": 1,
  "position_on_page": 3,
  "is_sponsored": false,
  "title": "Wireless Earbuds, Bluetooth Headphones with Charging Case",
  "brand": null,
  "subtitle": null,
  "authors": [],
  "byline": null,
  "series": null,
  "format": null,
  "other_formats": [],
  "variant_labels": [],
  "options_text": null,
  "image_url": "https://m.media-amazon.com/images/I/example._AC_UY218_.jpg",
  "rating": 4.4,
  "ratings_count": 59213,
  "review_highlight": "Top Reviewed for Battery life",
  "bought_past_month": 4000,
  "bought_past_month_text": "4K+ bought in past month",
  "price": 23.98,
  "price_text": "$23.98",
  "currency": "USD",
  "list_price": 32.99,
  "list_price_text": "$32.99",
  "list_price_label": "List",
  "unit_price": null,
  "unit_price_text": null,
  "coupon_text": "Save 10% with coupon",
  "price_notes": [],
  "more_buying_choices_price": 23.02,
  "more_buying_choices_text": "(4+ used & new offers)",
  "badges": [{ "type": "amazons-choice", "text": "Overall Pick", "context": null }],
  "labels": [],
  "attribute_pills": [],
  "sustainability_features": [],
  "certifications": [],
  "is_prime": true,
  "delivery_text": "FREE delivery Tue, Oct 27",
  "delivery_date_text": "Tue, Oct 27",
  "delivery_secondary_text": "Or fastest delivery Tomorrow, Oct 22",
  "delivery_secondary_date_text": "Tomorrow, Oct 22",
  "delivery_notes": [],
  "stock_text": null,
  "product_details": [],
  "variants": [
    { "asin": "B0EXAMPLE1", "name": "White", "selected": true, "color_hex": "#DEE0E0" },
    { "asin": "B0EXAMPLE2", "name": "Black", "selected": false, "color_hex": "#46474A" }
  ],
  "more_variants_text": "+9 other colors/patterns",
  "product_type": "HEADPHONES",
  "seller_id": "AEXAMPLESELLER",
  "min_order_quantity": 1,
  "max_order_quantity": 30,
  "cart_button": "add_to_cart",
  "search_term": "wireless earbuds",
  "search_url": "https://www.amazon.com/s?k=wireless+earbuds",
  "search_shown_term": null,
  "marketplace": "amazon.com",
  "results_text": "1-16 of over 20,000 results for",
  "results_total": 20000
}
```

A field the card does not show is `null` (or an empty list).

### How much does it cost?

No surcharges and no paid options; an item that fails is not charged.

This Actor is priced per product saved:

- **$0.75 per 1,000 products** ($0.00075 a product). Sponsored and regular
  products cost the same. Each is charged once per run.
- No start fee, and nothing per search.

So 1,000 products cost $0.75. If you set a maximum cost for a run, the Actor
stops when it reaches it and keeps every product saved so far.

### How long does a run take?

About 20 seconds for the first 50 products of a search, and about 2 minutes
for three searches read to Amazon's last page (899 products).

### Good to know

- **A search ends where Amazon ends it.** Amazon shows a limited number of
  results pages for a search (often 7 to 20, a few hundred products), even
  when it says "over 20,000 results". To reach more, split a search into
  narrower ones: more specific words, a department, a price range or a sort
  order in a pasted link.
- **Prices and delivery follow the visitor's location.** Amazon shows prices and
  delivery for the visitor's address, so a product may show no price when it
  does not ship there, and `currency` tells you which currency a price is in.
- **Stores.** Read in our tests: amazon.com, .ca, .com.mx,
  .com.br, .de, .it, .es, .nl, .com.be, .ie, .pl, .com.tr, .ae, .sa, .eg,
  .co.jp, .com.au and .sg. amazon.in and amazon.se are tested less: some of
  their pages were refused. Amazon UK and Amazon France cannot be read yet,
  and a run that names them stops before reading anything.
- **A product found by two searches is saved and charged once**, under the
  search that reached it first.
- **"Bought in past month" is Amazon's rounded figure** ("2K+"), saved as
  its lower bound (2000) and as shown.
- **`results_total` is Amazon's own rounded count** for the search, not the
  number of products you can read.
- **Check your links first.** A link that is not an Amazon search results link
  stops the run before anything is read, and the message names it.
- **One search that cannot be read does not stop the run.** The others carry
  on, and the run's status lists the searches that could not be read.
- **A search with no results is not an error.** It saves nothing.
- **This Actor reads the search results pages only**, not each product's own
  page, so it has no description, bullet points, full image gallery or
  reviews text.

### More Actors from us

- [AliExpress Product Scraper: Search Results & Prices](https://apify.com/luzivanlt/aliexpress-products-scraper): Every product of an AliExpress search to its last page, with exact sold counts and ratings.
- [App Store Reviews Scraper: All Reviews, Not 500](https://apify.com/luzivanlt/app-store-reviews-scraper): Every written App Store review of an app, not just the newest 500.
- [Facebook Ads Library Scraper: Meta Ads by Keyword or Page](https://apify.com/luzivanlt/facebook-ads-library-scraper): Meta Ad Library ads by keyword, Page or Ad Library link, with text, images, videos and dates.
- [Facebook Comments Scraper: With Replies](https://apify.com/luzivanlt/facebook-comments-scraper): Comments and replies from public Facebook posts, reels and videos, with reactions by type.
- [Facebook Pages Scraper: Contacts, Followers & Ratings](https://apify.com/luzivanlt/facebook-pages-scraper): Facebook Page details from links: exact follower count, phone, email, address, websites.
- [Facebook Posts Scraper: Groups, Pages & Profiles](https://apify.com/luzivanlt/facebook-posts-scraper): Posts from public Facebook groups, Pages and profiles with reaction, comment and share counts.

### Use it from an AI agent or the API

One call starts a run and returns its items (Apify waits up to 300 seconds; for a
longer run, start it with `POST /v2/acts/…/runs` and read its dataset):

```text
POST https://api.apify.com/v2/acts/luzivanlt~amazon-products-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>
```

With the sample input as its JSON body:

```json
{
  "searchTerms": ["wireless earbuds"],
  "marketplace": "amazon.com",
  "sortBy": "featured",
  "maxProductsPerSearch": 50
}
```

Its inputs, in the order of the input form:

| Input                                            | What it takes                                                                                                                                                                           | Default        |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
| `searchTerms` (Search terms)                     | Words to search Amazon for, one search per line, as you would type them in Amazon's search box, up to 200 characters each.                                                              | —              |
| `startUrls` (Search links)                       | Amazon search results links (https://www.amazon.com/s?k=…, the https:// optional) from any store listed under Amazon store, with any filters, department or sort you picked on Amazon.  | —              |
| `marketplace` (Amazon store)                     | The Amazon store the search terms above are searched on, amazon.com by default.                                                                                                         | `"amazon.com"` |
| `sortBy` (Sort by)                               | The order Amazon lists the products in, for the search terms above: featured (the default), price low to high or high to low, average customer review, newest arrivals or best sellers. | `"featured"`   |
| `maxProductsPerSearch` (Max products per search) | Stop each search after this many products, in Amazon's order, from 1 to 2,000 (100 by default).                                                                                         | `100`          |

Apify's MCP server, `https://mcp.apify.com`, lists it as `luzivanlt/amazon-products-scraper`. To give an
AI agent this Actor as a tool, add the server to the agent's MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=luzivanlt/amazon-products-scraper"
    }
  }
}
```

The client signs in with OAuth, or add `"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }`.

Charged per product delivered; the sample input above costs at most $0.04.

### FAQ

**Do I need an Amazon account or cookies?**
No. The Actor reads what anyone can see on Amazon's search results.

**Can I get only sponsored or only regular products?**
Every product is kept and marked with `is_sponsored`, so you can filter the
dataset later.

**Can I run it from my own code, on a schedule, or with other apps?**
Yes. Like any Apify Actor, you can start it through the Apify API, run it on a
schedule, and connect it to other apps with Apify's integrations and webhooks.

### Is it legal to scrape Amazon?

This Actor reads only what anyone can see on Amazon's search results without
logging in. Check Amazon's terms and the laws that apply to you before you use
the data. If you are unsure, ask a lawyer.

### Support

Found a problem or missing a feature? Open an issue on the **Issues** tab and
include the run's link.

***

This Actor is not affiliated with, endorsed by or sponsored by Amazon.

# Changelog

This Actor's version history is a separate document: https://apify.com/luzivanlt/amazon-products-scraper/changelog.md

# Actor input Schema

## `searchTerms` (type: `array`):

Words to search Amazon for, one search per line, as you would type them in Amazon's search box, up to 200 characters each. Amazon store and Sort by apply to them. A link here is refused: paste it under Search links. A product found by two searches is saved and charged once. Example: wireless earbuds

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

Amazon search results links (https://www.amazon.com/s?k=…, the https:// optional) from any store listed under Amazon store, with any filters, department or sort you picked on Amazon. A link with a department or category and no words works too. A link keeps its own store, filters and sort, and is read from its first page. Amazon UK and Amazon France links are refused. Example: https://www.amazon.com/s?k=coffee+beans

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

The Amazon store the search terms above are searched on, amazon.com by default. Search links keep their own store. Prices follow the visitor's location, and each product's currency says which currency its price is in. Amazon UK and Amazon France cannot be read yet; amazon.in and amazon.se are tested less. Example: amazon.de

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

The order Amazon lists the products in, for the search terms above: featured (the default), price low to high or high to low, average customer review, newest arrivals or best sellers. Search links keep their own sort. Example: best_sellers

## `maxProductsPerSearch` (type: `integer`):

Stop each search after this many products, in Amazon's order, from 1 to 2,000 (100 by default). A search ends on its own at Amazon's last results page, usually after a few hundred products. You pay per product saved ($0.75 per 1,000), so this also caps what each search costs. Example: 300

## Actor input object example

```json
{
  "searchTerms": [
    "wireless earbuds"
  ],
  "marketplace": "amazon.com",
  "sortBy": "featured",
  "maxProductsPerSearch": 50
}
```

# Actor output Schema

## `products` (type: `string`):

Every product the run saved, one row each.

## `allFields` (type: `string`):

The same rows with every field.

# 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 = {
    "searchTerms": [
        "wireless earbuds"
    ],
    "maxProductsPerSearch": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("luzivanlt/amazon-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 = {
    "searchTerms": ["wireless earbuds"],
    "maxProductsPerSearch": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("luzivanlt/amazon-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 '{
  "searchTerms": [
    "wireless earbuds"
  ],
  "maxProductsPerSearch": 50
}' |
apify call luzivanlt/amazon-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,luzivanlt/amazon-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/OsSougG5cFSxfVxbi/builds/8LZvtiqis72bNA0BN/openapi.json
