# Amazon BuyBox & Price Monitor (`nerolabs/amazon-buybox-monitor`) Actor

Watch Amazon ASINs for Buy Box winner changes, price drops, and stock changes, so a seller doesn't have to re-check each one by hand.

- **URL**: https://apify.com/nerolabs/amazon-buybox-monitor.md
- **Developed by:** [Adam Pearce](https://apify.com/nerolabs) (community)
- **Categories:** E-commerce, Automation
- **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/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

### What does Amazon BuyBox & Price Monitor do?

**Amazon BuyBox & Price Monitor** watches a list of [Amazon](https://www.amazon.com) ASINs and tells you the moment something that actually matters changes: the price moves, someone else wins the Buy Box, or a listing goes in or out of stock. Give it one ASIN for a quick check, or a whole portfolio in **Monitor mode** to get flagged only when something real happened, not a wall of "nothing changed" noise.

Runs on Apify's infrastructure, so it's schedulable (hourly, daily, whatever fits), API-accessible, and works as a tool inside AI agents via Apify's MCP server. No account, no login, no browser extension to install.

### Why use Amazon BuyBox & Price Monitor?

If you sell on Amazon, run repricing, or track competitors, you already know why the Buy Box matters more than the listing itself: it's who actually gets the sale. Tools that do this well (Keepa, Helium10) charge monthly subscriptions whether you use them five times or five thousand times a month. This is pay-per-check instead: you pay for the answer, not for the software sitting there.

- **Sellers and repricers**: get flagged the moment you lose the Buy Box, not when you notice sales dried up.
- **Resellers and arbitrage buyers**: catch a real price drop the second it happens.
- **Brand owners**: watch your own ASINs for unauthorized sellers appearing in the Buy Box.
- **Competitor research**: track a rival's pricing and stock without checking by hand.

### How to use Amazon BuyBox & Price Monitor

1. Click **Try for free** and open the Input tab.
2. Enter one ASIN, a list of ASINs, or paste in full Amazon product URLs.
3. Leave **Monitor mode** off for a one-time check, or turn it on and give your list a **Watchlist ID** to only get charged the full rate when something actually changes.
4. Run it. Results land in the dataset, downloadable as JSON, CSV, or Excel, or pulled via the API.
5. Schedule it (Apify's built-in Scheduler) to run daily or hourly and get a running record of what changed, when.

### Input

| Field | Description |
|---|---|
| `asin` | A single ASIN to check, e.g. `B0B7BP6CJN`. |
| `asins` | A list of ASINs to check in one run. |
| `productUrls` | Full Amazon product page URLs, if you don't have the ASIN handy, it's extracted automatically. |
| `monitorMode` | Off: a one-time check. On: remembers your last result per product and only flags real changes. |
| `watchlistId` | A name for this watchlist, so it doesn't get mixed up with any other list you run. |
| `proxyCountryCode` | Which country the request should look like it's coming from. Leave as `US` for correct amazon.com pricing. |

### Output

```json
{
  "asin": "B0B7BP6CJN",
  "url": "https://www.amazon.com/dp/B0B7BP6CJN",
  "title": "Veken 8 Set Packing Cubes for Travel Essentials...",
  "price": 17.99,
  "currency": "USD",
  "buyBoxSeller": "Aborder Products",
  "inStock": true,
  "availabilityText": "In Stock",
  "monitorMode": true,
  "isFirstCheck": false,
  "changeDetected": true,
  "changeSummary": "Price dropped from $24.99 to $17.99. Buy Box changed seller from \"Some Other Seller\" to \"Aborder Products\".",
  "changes": ["Price dropped from $24.99 to $17.99.", "Buy Box changed seller from \"Some Other Seller\" to \"Aborder Products\"."],
  "fetchIssue": null,
  "checkedAt": "2026-08-13T18:53:29.314Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Data table

| Field | Meaning |
|---|---|
| `price` / `currency` | The current Buy Box price, when one is showing. |
| `buyBoxSeller` | Who currently holds the Buy Box. |
| `inStock` | Whether the listing shows as available. |
| `changeDetected` | Monitor mode only: whether anything actually changed since your last check. |
| `changeSummary` | Plain-English description of what changed, if anything. |
| `fetchIssue` | Set (and nothing charged) if a check genuinely couldn't get a real answer this run. |

### Pricing

Pay-per-event, you only pay for real answers:

- **$0.012** per one-time product lookup.
- **$0.05** per Monitor mode check where something actually changed, price, Buy Box, or stock.
- **$0.003** per Monitor mode check that confirms nothing changed (cheap, so daily monitoring stays affordable).

Checking 20 products daily in Monitor mode for a month, with an average product changing a few times a week, runs somewhere around **$3-6/month**. A one-time check of 50 ASINs runs about **$0.60**.

### Tips

- Give a watchlist a stable `watchlistId` and keep reusing it, that's what makes Monitor mode compare against your actual last check instead of starting fresh every time.
- Group your watchlist runs by how often the products actually move, daily is enough for most, hourly if you're actively repricing against fast-moving competitors.

### FAQ

**Is this legal?** Reading a public product page is not illegal. This tool doesn't log in, doesn't bypass any paywall, and only reads what's already publicly visible on the page. Automated access sits outside Amazon's own terms of service, the same way it does for most large marketplaces, which is a real, known tradeoff worth knowing rather than a hidden one, use accordingly.

**Why did a check come back with no data and no charge?** Occasionally a request gets a block page instead of the real one. This actor detects that specifically and retries with a fresh connection automatically; if every retry in a run still comes back blocked, it reports that honestly instead of guessing, and you're not charged for it.

**Does this work outside amazon.com?** Currently amazon.com (US) only. Other Amazon marketplaces may be added if there's real demand, say so in the Issues tab.

Found a bug or have a request? Use the **Issues** tab, it's read personally, not a support bot.

# Actor input Schema

## `asin` (type: `string`):

One Amazon product ASIN to check, e.g. B0B7BP6CJN.

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

A list of ASINs to check in one run.

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

Full Amazon product page URLs, if you don't already know the ASIN. The ASIN is extracted automatically.

## `monitorMode` (type: `boolean`):

Off: a one-time price/Buy Box/stock check. On: remembers the last result per product and only flags what actually changed since your last run (charged less when nothing changed).

## `watchlistId` (type: `string`):

A name for this watchlist so this actor can tell it apart from any others you run. Use a different ID per distinct set of products you track.

## `proxyCountryCode` (type: `string`):

Which country Amazon should think the request is coming from. Keep this as US for amazon.com pricing and stock to resolve correctly.

## Actor input object example

```json
{
  "asin": "B0B7BP6CJN",
  "monitorMode": false,
  "watchlistId": "default",
  "proxyCountryCode": "US"
}
```

# Actor output Schema

## `dataset` (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 = {
    "asin": "B0B7BP6CJN"
};

// Run the Actor and wait for it to finish
const run = await client.actor("nerolabs/amazon-buybox-monitor").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 = { "asin": "B0B7BP6CJN" }

# Run the Actor and wait for it to finish
run = client.actor("nerolabs/amazon-buybox-monitor").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 '{
  "asin": "B0B7BP6CJN"
}' |
apify call nerolabs/amazon-buybox-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/PbTDqoHiPK6h1DwYo/builds/3KqwFR8XHjkGJYQac/openapi.json
