Amazon Buy Box Monitor Agent avatar

Amazon Buy Box Monitor Agent

Pricing

from $20.00 / 1,000 asin changeds

Go to Apify Store
Amazon Buy Box Monitor Agent

Amazon Buy Box Monitor Agent

Watch ASINs on a schedule. Snapshot Buy Box winner, price, and stock, then emit changed, unchanged, or new verdicts.

Pricing

from $20.00 / 1,000 asin changeds

Rating

0.0

(0)

Developer

Buzzi Data

Buzzi Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Share

Watch Amazon ASINs on a schedule. Each run snapshots the live Buy Box winner, price, and stock for a deliver-to ZIP, then compares that snapshot to the last one and emits changed, unchanged, or new.

This is the scheduled sister of the one-shot Amazon Buy Box + Offers Agent. Use the offers Actor for a single ASIN check with competing landed-cost rows. Use this monitor when you need Apify Schedules, a named watchlist, and a change verdict on every ASIN.

  • Unblocker by default. Amazon.com production runs use Apify Unblocker, not datacenter IPs.
  • Deliver-to ZIP. Buy Box, shipping eligibility, and stock follow a real location. Default 92618 (Irvine, CA).
  • Change verdicts. Each row includes previous, current, and changeType, so you can see whether Amazon or another seller took the box.
  • Honest pay-per-event. Successful moved or first-seen ASINs charge asin_changed at $0.02. Successful stable ASINs charge asin_unchanged at $0.01. Errors and BLOCKED checks are written. They are not billed as those events.

Why use Amazon Buy Box Monitor Agent

Buy Box ownership, price, and stock change by location and over time. A one-off scrape does not tell you who held the box on the last check.

  • MAP and retail compliance. Track the live Buy Box owner across scheduled runs, not a catalog list price.
  • Third-party sellers. See whether Amazon or another seller took the box since yesterday.
  • Agents and automation. Each ASIN is one structured record with previous, current, and changeType, so workflows can branch.

Apify Schedules, webhooks, the REST API, and proxy rotation are built in. Save an Actor task once, then run it on a cron.

What data can Amazon Buy Box Monitor Agent extract

FieldDescription
asin, marketplace, watchlistId, postalCode, productUrlIdentity of the check
titleProduct title when parsed
fetchedAtISO-8601 timestamp
statusok, blocked, error, or failed
changeTypechanged, unchanged, or new on success. null on failure
changedFieldsbuyBoxSellerId, buyBoxPrice, and/or inStock
previousLast persisted Buy Box summary, or null if this ASIN is new
currentThis run's Buy Box summary (buyBoxSellerId, buyBoxSellerName, buyBoxPrice, currency, inStock, and related fields)
errorCode, errorMessageTyped failure. null on success

How to run the first Buy Box snapshot

Give the Actor ASINs or /dp/ URLs. For each marketplace × ASIN it applies deliver-to cookies for the postal code, fetches the product page, parses Buy Box seller, price, and stock, compares against the named watchlist snapshot, then writes a dataset row with previous, current, and changeType. Failed checks are written with a typed error (BLOCKED, RATE_LIMIT, PARSE, NETWORK) and are never billed as asin_changed or asin_unchanged.

  1. Open the Actor in Apify Console.
  2. Paste ASINs or product URLs. Keep marketplace com, postal code 92618, and monitorMode on.
  3. Set a stable watchlistId (default default). You will reuse this ID on the schedule.
  4. Leave proxyGroup on UNBLOCKER unless you need sticky residential IPs for ZIP cookies.
  5. Start the run. The first successful check for each ASIN is changeType: new and writes the baseline snapshot.

How to schedule Amazon Buy Box watches

State lives in the named key-value store (buybox-monitor-{watchlistId}), not in the run dataset. Deleting that store resets every ASIN to changeType: new.

  1. Run the Actor once in Console with your ASINs, marketplace, ZIP 92618, monitorMode on, and a stable watchlistId. Confirm the first run wrote baselines (changeType: new).
  2. Open Schedules and click Create new. Name it, for example buybox-watch-daily.
  3. Set the timezone (DST is supported). Example cron: 0 8 * * * for every day at 08:00.
  4. Click Add and select this Actor. Reuse the same input JSON, especially the same watchlistId. Different catalogs need different IDs so stores do not collide.
  5. Optional: save an Actor task with that input, then schedule the task instead of pasting JSON on the schedule.
  6. Enable the schedule. The minimum interval is 10 seconds. Hourly or daily is enough for Buy Box watches.
  7. Optional: add a webhook on the task for SUCCEEDED so agents pull dataset items only when the run finished.

How much does Amazon Buy Box monitoring cost

Pay-per-event charges apply on successful checks only:

EventWhen it firesPriceWhen it does not fire
asin_changedSuccessful check and Buy Box seller, price, or stock moved, or first snapshot (new)$0.02Errors. BLOCKED. dryRun: true
asin_unchangedSuccessful check and seller, price, and stock are stable$0.01Errors. BLOCKED. dryRun: true

See the Store pricing tab for current list prices and platform start events.

onlyChanges only filters dataset output. A stable successful check still charges asin_unchanged and still overwrites the snapshot.

dryRun: true parses, writes items, and persists snapshots without charging asin_changed or asin_unchanged.

Input

See the input tab for full configuration options.

FieldTypeDefaultNotes
asinsstring[]10-character ASINs
productUrlsstring[]Amazon URLs. ASIN extracted from /dp/ and related paths
marketplacecom | co.uk | decomStorefront TLD
postalCodestring92618Deliver-to ZIP or postal code. Alias: zipCode
monitorModebooleantrueCompare to the last snapshot and emit verdicts
watchlistIdstringdefaultNamed snapshot store suffix
onlyChangesbooleanfalseSkip pushing unchanged rows (still persist and charge)
proxyGroupUNBLOCKER | RESIDENTIALUNBLOCKERProduction default. Select RESIDENTIAL as a sticky-IP fallback
dryRunbooleanfalseWrite items and snapshots, do not charge
proxyConfigurationproxywidget RESIDENTIAL + USConsole widget. The real default is proxyGroup=UNBLOCKER, which overrides this

At least one parseable ASIN (from asins or productUrls) is required.

{
"asins": ["B014I8SSD0", "B004U3Y8OM"],
"marketplace": "com",
"postalCode": "92618",
"monitorMode": true,
"watchlistId": "default",
"onlyChanges": false,
"proxyGroup": "UNBLOCKER"
}

Why postalCode defaults to 92618

Amazon Buy Box, shipping eligibility, and stock copy are location-specific. If deliver-to is unset, the page often still has a title but the Buy Box is missing and availability becomes "cannot be shipped to your selected delivery location". The Actor sets location cookies before /dp/. Default 92618 is Irvine, CA, a US deliver-to example. Use a local postcode for co.uk or de.

Proxy

Amazon.com blocks datacenter and AUTO Apify Proxy groups. Unblocker is the recommended Amazon.com production default. Residential US is a fallback when you need sticky IPs so deliver-to ZIP cookies hold across hops.

Set proxyGroup to UNBLOCKER or RESIDENTIAL. Do not put UNBLOCKER on proxyConfiguration.apifyProxyGroups. That widget field is overridden by proxyGroup.

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One dataset item per marketplace × ASIN (unless onlyChanges drops a stable row).

{
"asin": "B014I8SSD0",
"marketplace": "com",
"watchlistId": "default",
"postalCode": "92618",
"productUrl": "https://www.amazon.com/dp/B014I8SSD0",
"title": "Example product",
"fetchedAt": "2026-09-09T11:00:00.000Z",
"status": "ok",
"changeType": "changed",
"changedFields": ["buyBoxSellerId", "buyBoxPrice"],
"previous": {
"buyBoxSellerId": "A1F83G8C2ARO7P",
"buyBoxSellerName": "Amazon.com",
"buyBoxPrice": 12.99,
"currency": "USD",
"inStock": true
},
"current": {
"buyBoxSellerId": "A3P5ROKL5A1OLE",
"buyBoxSellerName": "Example 3P Seller",
"buyBoxPrice": 11.49,
"currency": "USD",
"inStock": true
},
"errorCode": null,
"errorMessage": null
}

Each item is JSON with status, typed errorCode, nested previous / current, and changeType. Point a client at the default dataset ({{links.apiDefaultDatasetUrl}}/items) or run the Actor from the API tab. Failed checks remain in the dataset so you can retry only BLOCKED or RATE_LIMIT without being billed for those attempts.

Error codes

CodeMeaning
BLOCKEDCAPTCHA, robot check, or automated-access interstitial
RATE_LIMITHTTP 429/503 or throttle copy
PARSEHTML loaded but title or Buy Box could not be extracted
NETWORKTimeouts, DNS, connection errors, other 4xx/5xx

Risks and limitations

  • Amazon ToS. Scraping Amazon storefronts may violate Amazon's terms. Use this Actor only where you have a lawful basis. This is not an official Amazon API.
  • Blocking. Datacenter IPs are frequently CAPTCHA'd. This Actor defaults to Apify Unblocker and retries CAPTCHA or throttle pages with a new session before writing BLOCKED or RATE_LIMIT. The Actor does not execute JavaScript. Some A/B Buy Box layouts hydrate late and will surface as PARSE.
  • Selector drift. Amazon A/B-tests Buy Box markup. Selectors are centralized in the Actor.
  • Stock is heuristic. inStock is derived from availability copy, not warehouse quantity.
  • Unblocker is not sticky. If deliver-to ZIP does not hold, switch proxyGroup to RESIDENTIAL.

FAQ

How is this different from Amazon Buy Box + Offers Agent?

The Amazon Buy Box + Offers Agent is one-shot: Buy Box plus All Offers Display landed-cost rows. This Actor persists snapshots and emits change verdicts for Schedules.

Does onlyChanges skip billing?

No. onlyChanges only filters dataset output. A stable successful check still charges asin_unchanged and still overwrites the snapshot.

What happens on the first scheduled run?

If the watchlist is empty, every successful ASIN is changeType: new and is billed as asin_changed. Later runs compare against that baseline.

How do I test without charges?

Set dryRun: true. The Actor still parses, writes dataset items, and persists snapshots.

Support

Questions, blocks, or feature requests: use the Issues tab. Programmatic runs: see the API tab.

License

Apache-2.0