# Amazon Price Tracker (`maximedupre/amazon-price-tracker`) Actor

Collect current public Amazon product snapshots from one search phrase, product IDs, or product URLs. Get prices, discounts, ratings, sellers, availability, and source links in a structured dataset. Compare one reference product with products found by one search.

- **URL**: https://apify.com/maximedupre/amazon-price-tracker.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.85 / 1,000 product snapshots

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🛒 Amazon price snapshots for product research

Amazon Price Tracker is for ecommerce sellers, product researchers, and developers who need current public Amazon data. Give it one search phrase, a list of ASINs, or product URLs, and it saves product snapshots with prices, discounts, ratings, seller details, availability, and source links. Use the structured dataset to check prices, compare a reference product with search matches, or keep snapshots for your own history.

- Save timestamped Amazon product snapshots for a **[Camelcamelcamel](https://apify.com/maximedupre/amazon-price-tracker/examples/camelcamelcamel)** comparison workflow.
- Collect current Amazon prices for a **[Keepa Price Tracker](https://apify.com/maximedupre/amazon-price-tracker/examples/keepa-price-tracker)** workflow.
- Use price and rating filters to narrow a **[Honey Price Tracker](https://apify.com/maximedupre/amazon-price-tracker/examples/honey-price-tracker)** check.
- Check one direct product before comparing saved data with **[Price History Checker](https://apify.com/maximedupre/amazon-price-tracker/examples/price-history-checker)**.
- Save repeat snapshots to build your own **[Amazon Price History Tracker](https://apify.com/maximedupre/amazon-price-tracker/examples/amazon-price-history-tracker)**.

#### 📦 Current Amazon product snapshots

Each saved row is the first eligible match for one Amazon product. The row keeps the first search or submitted target that found it. If the same product appears again, later matches do not rewrite that row.

**What each row includes**

Current price and currency, original price and discount data when shown, product identity, seller and fulfillment details when shown, ratings and review counts, availability, delivery text, the selected storefront, and source context. Search rows can include the phrase, position, and search URL that first found the product. Every row has a snapshot time.

Comparison rows also include the reference product, price difference, difference percent, cheaper-than-reference state, lowest-price state, and reference state.

#### 🚀 Run one focused Amazon check

**Run steps**

1. Choose `Search results`, `Product IDs`, `Product URLs`, or `Compare prices`.
2. Choose one supported Amazon storefront. It sets the source and currency for the run.
3. Add one search phrase for `Search results` or `Compare prices`, or add ASINs or direct product URLs for a direct target.
4. For `Compare prices`, add one reference ASIN or direct product URL.
5. Add optional price, rating, or review filters, then open the default dataset after the run.

The Actor uses public Amazon listings and does not need Amazon account credentials. One storefront is used per run. A search uses one phrase per run, and a comparison uses one reference product with products found by that phrase.

#### ⚙️ Input

The required fields are `target` and `storefront`. Values in unused sections are ignored. Product IDs must be 10-character ASINs. Product URL entries must contain a direct Amazon product URL.

**Input fields**

| Field | Type | What it does |
|---|---|---|
| `target` | string | Chooses `search`, `productIds`, `productUrls`, or `compare`. |
| `productIds` | array of strings | Adds one or more Amazon product IDs for direct tracking. Each value is a 10-character ASIN. |
| `productUrls` | array of objects | Adds direct Amazon product URL objects for direct tracking. |
| `productUrls[].url` | string | Gives the direct Amazon product URL inside a `productUrls` object. |
| `referenceProduct` | string | Gives one Amazon product ID or direct product URL to use as the reference for `compare`. |
| `searchQuery` | string | Gives one Amazon product search phrase for `search` or `compare`. |
| `storefront` | string | Chooses one supported Amazon storefront. It sets the source and currency. |
| `maxItems` | integer | Optional limit for `Search results` or `Compare prices`. Leaving it empty returns all available results until the source is exhausted. |
| `minPrice` | number | Keeps products at or above this price in the selected storefront currency. |
| `maxPrice` | number | Keeps products at or below this price in the selected storefront currency. |
| `minRating` | number | Keeps products with this rating or higher. The allowed range is 0 to 5. |
| `minReviews` | integer | Keeps products with at least this many reviews. |

Supported storefront values are `amazon.com`, `amazon.ca`, `amazon.com.mx`, `amazon.com.br`, `amazon.co.uk`, `amazon.de`, `amazon.fr`, `amazon.it`, `amazon.es`, `amazon.nl`, `amazon.pl`, `amazon.se`, `amazon.com.au`, `amazon.co.jp`, `amazon.in`, `amazon.sg`, and `amazon.com.tr`.

This is the public input from a successful current-beta default-style run:

```json
{
  "target": "search",
  "storefront": "amazon.com",
  "searchQuery": "wireless headphones",
  "maxItems": 1
}
```

#### 🧾 Output

The run output links to the default dataset. Each dataset row is a current public Amazon product snapshot. Optional fields are omitted when Amazon does not show them. The tables below cover the normal snapshot shape and the comparison shape.

**Run output**

| Field | Type | What it does |
|---|---|---|
| `dataset` | string | Links to the product snapshots in the default dataset. |

**Product snapshot rows**

| Field | Type | What it does |
|---|---|---|
| `asin` | string | Amazon Standard Identification Number for the product. |
| `title` | string | Product title shown on Amazon. |
| `url` | string | Product page URL on Amazon. |
| `imageUrl` | string | Primary product image URL when Amazon shows one. |
| `brand` | string | Brand shown for the product when available. |
| `manufacturer` | string | Manufacturer shown for the product when available. |
| `category` | string | Product category shown by Amazon when available. |
| `price` | number | Current product price in the selected storefront currency. |
| `currency` | string | Currency code used for the price values. |
| `originalPrice` | number | Original product price when Amazon shows one. |
| `discountPercentage` | number | Discount percent shown by Amazon when available. |
| `availability` | string | Availability or stock message shown by Amazon when available. |
| `sellerName` | string | Seller or merchant name shown by Amazon when available. |
| `isBuyBoxWinner` | boolean | Says whether Amazon marks this seller as the Buy Box winner. |
| `fulfillment` | string | Fulfillment method shown by Amazon, such as FBA or FBM. |
| `rating` | number | Product rating from 0 to 5 when available. |
| `reviewCount` | integer | Number of product reviews shown by Amazon when available. |
| `delivery` | string | Delivery or shipping message shown by Amazon when available. |
| `storefront` | string | Amazon storefront used for the snapshot. |
| `searchQuery` | string | Search phrase that found this product when a search found it. |
| `searchPosition` | integer | Product position in the search results when available. |
| `sourceUrl` | string | Search page URL that led to this product when available. |
| `snapshotAt` | string | Time when this product snapshot was collected. |

**Example product snapshot**

Genuine row from a successful current-beta search run:

```json
{
  "asin": "B08WM3LMJF",
  "title": "JBL Tune 510BT - Bluetooth headphones with up to 40 hours battery, microphone for call, foldable and comfortable, Android and iOs compatible (Black)",
  "url": "https://www.amazon.com/JBL-Tune-510BT-Ear-Headphones/dp/B08WM3LMJF/ref=sr_1_1?dib=eyJ2IjoiMSJ9.yqH8eOvQmIKDkRf9f0BOUaRKGfzyhXEVTKXABK4aQU_BbKOLs-sRDmAz8-uYQFv9v5bHkKtgUYDEWIhTEY71reg-ubVYI5dX3sIOTG_DPw0Pa2kFGG7RTeFKkyw1s5U83PR7P9ah5yLcXAyUkEv2l67W1ilvIKSMtoLXpHbWcl464lC6Sl7IT0a1Ur53qGcImVONRaZErTQzeJj7xRKhcWp34Iofn0Wpq24Ei_RDYe4.5GJKq8SbyhZ8t63a5Wgg4kldtQ5abPDLNwzsu9Abr0s&dib_tag=se&keywords=wireless+headphones&qid=1785981330&sr=8-1",
  "price": 29.95,
  "currency": "USD",
  "storefront": "amazon.com",
  "snapshotAt": "2026-08-06T01:55:40.423Z",
  "imageUrl": "https://m.media-amazon.com/images/I/61kFL7ywsZS._AC_UY218_.jpg",
  "originalPrice": 49.95,
  "discountPercentage": 40.04,
  "rating": 4.5,
  "reviewCount": 93000,
  "searchQuery": "wireless headphones",
  "searchPosition": 1,
  "sourceUrl": "https://www.amazon.com/s?k=wireless+headphones"
}
```

**Comparison snapshot rows**

Comparison rows contain the same product snapshot fields plus the nested fields below. The `comparison` object is present when the run compares prices.

| Field | Type | What it does |
|---|---|---|
| `asin` | string | Amazon Standard Identification Number for the product. |
| `title` | string | Product title shown on Amazon. |
| `url` | string | Product page URL on Amazon. |
| `imageUrl` | string | Primary product image URL when Amazon shows one. |
| `brand` | string | Brand shown for the product when available. |
| `manufacturer` | string | Manufacturer shown for the product when available. |
| `category` | string | Product category shown by Amazon when available. |
| `price` | number | Current product price in the selected storefront currency. |
| `originalPrice` | number | Original product price when Amazon shows one. |
| `discountPercentage` | number | Discount percent shown by Amazon when available. |
| `currency` | string | Currency code used for the price values. |
| `availability` | string | Availability or stock message shown by Amazon when available. |
| `sellerName` | string | Seller or merchant name shown by Amazon when available. |
| `isBuyBoxWinner` | boolean | Says whether Amazon marks this seller as the Buy Box winner. |
| `fulfillment` | string | Fulfillment method shown by Amazon, such as FBA or FBM. |
| `rating` | number | Product rating from 0 to 5 when available. |
| `reviewCount` | integer | Number of product reviews shown by Amazon when available. |
| `delivery` | string | Delivery or shipping message shown by Amazon when available. |
| `storefront` | string | Amazon storefront used for the snapshot. |
| `searchQuery` | string | Search phrase that found this product when a search found it. |
| `searchPosition` | integer | Product position in the search results when available. |
| `sourceUrl` | string | Search page URL that led to this product when available. |
| `snapshotAt` | string | Time when this product snapshot was collected. |
| `comparison.referenceAsin` | string | ASIN of the reference product used for the comparison. |
| `comparison.referencePrice` | number | Price of the reference product in the comparison. |
| `comparison.priceDifference` | number | Absolute price difference between this product and the reference product. |
| `comparison.priceDifferencePercent` | number | Absolute price difference as a percent of the reference price. |
| `comparison.isCheaperThanReference` | boolean | Says whether this product costs less than the reference product. |
| `comparison.isLowestPrice` | boolean | Says whether this is the lowest-priced product in the comparison set. |
| `comparison.isReference` | boolean | Says whether this row is the reference product. |

**Example comparison snapshot**

Genuine row from a successful current-beta comparison run:

```json
{
  "asin": "B0H69T4WFM",
  "title": "Hybrid Active Noise Cancelling Bluetooth Headphones Wireless Headphones | Over Ear, 120H Playtime, Hi-Res Audio, Deep Bass, Memory Foam Ear Cups for Home Office Travel Black",
  "url": "https://www.amazon.com/dp/B0H69T4WFM",
  "price": 29.99,
  "currency": "USD",
  "storefront": "amazon.com",
  "snapshotAt": "2026-08-06T01:58:28.068Z",
  "imageUrl": "https://m.media-amazon.com/images/I/61Vgm+tFEyL._AC_SL1500_.jpg",
  "brand": "MMWOWARTS",
  "manufacturer": "MMWOWARTS",
  "category": "Electronics > Headphones, Earbuds & Accessories > Headphones & Earbuds > Over-Ear Headphones",
  "originalPrice": 299.99,
  "discountPercentage": 90,
  "availability": "In Stock",
  "sellerName": "MMWOWARTS-US-LDJY",
  "rating": 4.9,
  "reviewCount": 104,
  "delivery": "FREE delivery Monday, August 10 on orders shipped by Amazon over $35",
  "comparison": {
    "referenceAsin": "B0H69T4WFM",
    "referencePrice": 29.99,
    "priceDifference": 0,
    "priceDifferencePercent": 0,
    "isCheaperThanReference": false,
    "isLowestPrice": true,
    "isReference": true
  }
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. The current event price is $0.00185 for each current public Amazon product snapshot saved to the dataset. The event is tied to a successfully saved product snapshot.

#### 🔌 Integrations

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

Use standard Apify Actor access to start runs and read the default dataset. Export the rows from the dataset, or run it again and keep the snapshots you want to compare later.

#### ❓ FAQ

##### Does this build price history or send price-drop alerts?

No. It returns timestamped snapshots. Save datasets from repeat runs and compare them yourself; it does not keep a built-in price history or send alerts.

##### Can I use it as a price history checker for one product?

Yes. Use Product IDs or Product URLs for a direct snapshot, then compare it with data you saved from earlier runs.

##### Can I compare one product with search matches?

Yes. Choose Compare prices, add one reference ASIN or direct product URL, and enter one search phrase. Each comparison row can show the price difference, difference percent, cheaper-than-reference state, lowest-price state, and reference state.

##### Can I use several Amazon storefronts in one run?

No. Choose one storefront per run. Start separate runs when you need different storefronts, because each storefront sets the source and currency.

##### What happens when Amazon does not show a field?

Optional fields are left out when Amazon does not expose them. The Actor does not invent a price, seller, rating, review count, or other missing value.

##### Does a search always return every Amazon product?

No. The Actor returns available rows from the public source, and the source may not expose every result or optional field. Use `maxItems` when you want a limit; leaving it empty returns all available results until the source is exhausted.

##### Is this a free Amazon price tracker?

No. It uses pay-per-event pricing, and the current event is charged for each successfully saved product snapshot.

##### Is this a Keepa extension or a Camelcamelcamel integration?

No. It is an Apify Actor that reads public Amazon listings and saves current snapshots. It is not a browser extension, an official seller API workflow, or a built-in connection to those services.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~amazon-price-tracker/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Amazon Keywords Discovery Tool](https://apify.com/maximedupre/amazon-keywords-discovery-tool) — Find Amazon autocomplete terms before choosing a search phrase.
- [Google Shopping Ads Scraper](https://apify.com/maximedupre/google-shopping-ads-scraper) — Use paid Google product ads alongside Amazon product prices for market research.
- [Trendyol Scraper](https://apify.com/maximedupre/trendyol-scraper) — Research another marketplace's products, prices, sellers, and ratings.
- [Allegro Scraper](https://apify.com/maximedupre/allegro-scraper) — Collect marketplace listings with prices, sellers, delivery, and discounts.
- [John Lewis Product Scraper](https://apify.com/maximedupre/john-lewis-product-scraper) — Check UK retail prices, stock, variants, and source links.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

Choose the work for this run.

## `productIds` (type: `array`):

Enter one or more Amazon product IDs to track directly. Each ID must be a 10-character ASIN. Example: \["B08N5KWB9H"]

## `productUrls` (type: `array`):

Enter one or more Amazon product URL objects to track directly. Each object needs a direct URL. Example: \[{"url":"https://www.amazon.com/dp/B08N5KWB9H"}]

## `referenceProduct` (type: `string`):

Enter one Amazon product ID or direct product URL as the reference. Compare prices uses it with products found by one search phrase.

## `searchQuery` (type: `string`):

Enter one Amazon product search phrase. Search results and Compare prices use it to find products. Use one phrase per run. Product IDs and Product URLs ignore this field.

## `storefront` (type: `string`):

Choose one Amazon storefront for this run. It sets the source and currency. Use a separate run for each storefront.

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

Optional. Stop after this many products for Search results or Compare prices. Leaving it empty returns all available results until the source is exhausted.

## `minPrice` (type: `number`):

Optional. Keep products at or above this price in every target. Use the selected Amazon storefront currency.

## `maxPrice` (type: `number`):

Optional. Keep products at or below this price in every target. Use the selected Amazon storefront currency.

## `minRating` (type: `number`):

Optional. Keep products with this rating or higher in every target. Ratings range from 0 to 5.

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

Optional. Keep products with at least this many reviews in every target.

## Actor input object example

```json
{
  "target": "search",
  "searchQuery": "wireless headphones",
  "storefront": "amazon.com",
  "maxItems": 1
}
```

# Actor output Schema

## `dataset` (type: `string`):

Link to the product snapshots in the 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 = {
    "target": "search",
    "searchQuery": "wireless headphones",
    "storefront": "amazon.com",
    "maxItems": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/amazon-price-tracker").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 = {
    "target": "search",
    "searchQuery": "wireless headphones",
    "storefront": "amazon.com",
    "maxItems": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/amazon-price-tracker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "target": "search",
  "searchQuery": "wireless headphones",
  "storefront": "amazon.com",
  "maxItems": 1
}' |
apify call maximedupre/amazon-price-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maximedupre/amazon-price-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2qKfgLGwTZGf1jdli/builds/eEcBWJkdaQUTEu9Sb/openapi.json
