Amazon Competitor Price Tracker
Pricing
from $20.00 / 1,000 asin trackeds
Amazon Competitor Price Tracker
Track Amazon competitor prices vs your reference ASIN: priceDelta, Buy Box winner, FBA/FBM, stock + webhook alerts on undercut. MCP-ready. 18 marketplaces. $0.020/ASIN.
Pricing
from $20.00 / 1,000 asin trackeds
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Track Amazon competitor prices for any reference ASIN — Buy Box winner, FBA/FBM, stock, and price-delta — in one schedule-friendly run. Optional webhook alerts on undercut.
What you get
One row per ASIN per run, with the comparison math already done:
| Field | Meaning |
|---|---|
asin | The product's ASIN |
isReference | true for the row representing your product |
price, currency | Current price in marketplace currency |
priceDelta | competitor.price − reference.price (negative = undercut) |
priceDeltaPercent | Same delta as a percentage of reference price |
isUndercut | true when the competitor is cheaper |
isLowest | true for the cheapest ASIN this run |
buyBoxWinner | The seller currently winning the Buy Box |
seller, isFBA, isPrime | Merchant + fulfillment posture |
inStock, availability | Whether you can buy it right now |
rating, reviewCount | Social proof gap |
scrapedAt | ISO timestamp — pivot on this for time-series tracking |
alertFired | true if a webhook fired for this row this run |
Schedule it hourly or daily and you have a full price/Buy-Box history at $0.005 per ASIN — no separate database, no Keepa subscription, no fragile spreadsheet.
When to use
- Repricing. Feed
priceDeltainto your repricer or a Slack alert. - MAP enforcement. Detect resellers selling below your minimum advertised price.
- Brand monitoring. Watch unauthorized sellers grab your Buy Box.
- Category research. Auto-discover the top N competitors on a search keyword.
- Agentic workflows. Claude/GPT can call this every N minutes — input is one ASIN + a list, output is a clean comparison table.
When NOT to use
- For full Amazon product detail extraction (A+ content, variant grids, deep BSR), use
khadinakbar/amazon-product-intelligence. - For review extraction, use
khadinakbar/amazon-reviews-scraper. - For raw search-result scraping (no reference comparison), use
khadinakbar/amazon-product-scraper.
Pricing
Pay per event + Apify platform usage (compute and proxy at cost). No subscription.
| Event | Price |
|---|---|
| Actor start | $0.001 |
| ASIN tracked (per row pushed) | $0.020 |
| Alert dispatched (per webhook POST) | $0.005 |
Plus standard Apify platform compute and residential proxy fees (paid directly to Apify).
Typical costs. Reference + 5 competitors = ~$0.121 per run + ~$0.02–0.05 platform usage. 100 ASINs daily for a month ≈ $60–80 all-in. Comparable Keepa premium plans start at $19/mo per ASIN tracked — at 100 ASINs that's $1,900+/mo. We give you raw data feed for ~$70.
Input
Required:
referenceAsin— your product's 10-character ASIN (e.g.B0CHWRXH8B).
One of (pick the mode):
competitorAsins— manual list of up to 100 competitor ASINs.searchQuery— Amazon search keyword; the top results become competitors.
Optional:
country— marketplace code (defaults toUS). 18 marketplaces supported: US, UK, DE, FR, CA, ES, IT, JP, AU, IN, MX, BR, NL, SE, PL, TR, AE, SG.maxCompetitors— how many competitors to pull when usingsearchQuery(default 10, max 50).alertWebhookUrl— HTTPS endpoint that receives a POST when a competitor undercuts.alertUndercutPercent— minimum % undercut to fire an alert (default 5).proxyConfiguration— defaults to Apify Residential (required for Amazon).
Example: track 5 named competitors against your product
{"referenceAsin": "B0CHWRXH8B","competitorAsins": ["B09G9HD6PD", "B0BDHWDR12", "B0BTYCRJSS", "B09JQMJHXY", "B0BDJ7RGQR"],"country": "US"}
Example: auto-discover competitors on a keyword
{"referenceAsin": "B0CHWRXH8B","searchQuery": "wireless earbuds noise cancelling","maxCompetitors": 15,"country": "US"}
Example: alert Slack when undercut by 10%
{"referenceAsin": "B0CHWRXH8B","competitorAsins": ["B09G9HD6PD", "B0BDHWDR12"],"alertWebhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX","alertUndercutPercent": 10}
Webhook payload (alerts)
When a competitor crosses the undercut threshold, a POST is sent with:
{"type": "competitor-undercut","referenceAsin": "B0CHWRXH8B","competitorAsin": "B09G9HD6PD","referencePrice": 79.99,"competitorPrice": 69.99,"priceDelta": -10.0,"priceDeltaPercent": -12.5,"currency": "USD","marketplace": "US","competitorTitle": "Sony WF-1000XM4 Wireless Earbuds","competitorSeller": "Sony Direct","competitorUrl": "https://www.amazon.com/dp/B09G9HD6PD","threshold": 5,"triggeredAt": "2026-05-03T19:30:00.000Z"}
Fire-and-forget: 5-second timeout, 1 retry. Webhook errors never fail the run. Charged $0.002 per successful POST.
Scheduling for time-series
Pair with Apify Scheduler to run hourly or daily. Each run's rows are stamped with scrapedAt, so the dataset becomes a price-history database you can query with the Apify dataset API:
# Pull last 24h of comparison rowscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?clean=true&fields=asin,price,priceDelta,scrapedAt&desc=true&limit=1000"
Code examples
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/amazon-competitor-price-tracker').call({referenceAsin: 'B0CHWRXH8B',competitorAsins: ['B09G9HD6PD', 'B0BDHWDR12'],country: 'US',});const { items } = await client.dataset(run.defaultDatasetId).listItems();const reference = items.find((r) => r.isReference);const undercutting = items.filter((r) => r.isUndercut);console.log(`Reference at ${reference.currency} ${reference.price}`);console.log(`${undercutting.length} competitor(s) undercutting`);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/amazon-competitor-price-tracker").call(run_input={"referenceAsin": "B0CHWRXH8B","searchQuery": "wireless earbuds","maxCompetitors": 15,"country": "US",})rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())lowest = min((r for r in rows if r.get("price")), key=lambda r: r["price"])print(f"Lowest price ASIN: {lowest['asin']} @ {lowest['currency']} {lowest['price']}")
MCP / agentic workflow
Once published, the actor is callable via Apify MCP as apify--amazon-competitor-price-tracker. Tool description signals when to use, return shape, and per-call cost — agents can budget-check before calling.
How it works
- Fetches the reference ASIN page (CheerioCrawler + Apify Residential proxy, country-matched to the marketplace).
- Either fetches each named competitor ASIN, or runs an Amazon search and picks the top N organic (non-Sponsored) ASINs.
- Extracts price, list price, currency, Buy Box winner, seller, FBA/Prime, stock, rating, review count.
- Computes
priceDelta,priceDeltaPercent,isUndercut,isLowestagainst the reference price. - If a webhook is configured, dispatches alerts for any competitor that undercuts by ≥ threshold.
- Pushes one row per ASIN to the dataset and charges
$0.005per row.
Built with Crawlee on apify/actor-node:24. Session pool with cookie persistence + per-request retry/backoff handles Amazon's rate limits and CAPTCHA challenges. Sessions are retired automatically on 403/429/503 or robot-check pages.
FAQ
How accurate is the Buy Box winner?
Extracted from #merchant-info / Buy Box DOM. Accurate when the page renders a Buy Box; null when the page only shows "See All Buying Options" (multi-seller without a clear winner).
What about variants?
Each ASIN is tracked independently. If you want to compare variants, pass each variant ASIN explicitly in competitorAsins.
How do I export to BigQuery / Snowflake?
Use Apify's BigQuery integration or call client.dataset(...).downloadItems('csv') and load via your normal ETL.
Can I track 1000 ASINs in one run?
The competitorAsins list is capped at 100 per run for reliability. For larger universes, run multiple actor calls in parallel — Apify charges per row regardless.
What if Amazon blocks? Datacenter proxies are blocked by Amazon — residential is the default and required. The session pool retires on 403/429/503; retries with exponential backoff. If you see persistent failures, check your proxy quota.
Is this Keepa? No. Keepa stores the full price history server-side and gives you a chart UI. This actor gives you the raw deltas + Buy Box state so you can build your own repricing logic, MAP alerts, or dashboards.
Legal disclaimer
This actor scrapes publicly accessible Amazon product pages. You are responsible for ensuring your use case complies with Amazon's Conditions of Use and applicable law in your jurisdiction. Do not use the data to harass sellers, violate antitrust law, or engage in deceptive pricing.
Related actors
khadinakbar/amazon-product-intelligence— full Amazon product detail (A+ content, BSR, variants).khadinakbar/amazon-product-scraper— search/category/keyword scraping.khadinakbar/amazon-reviews-scraper— deep review extraction.khadinakbar/google-shopping-scraper— pair with this to compare prices across Amazon vs Google Shopping.