Amazon Price History Scraper - ASIN Price Alerts
Pricing
from $12.00 / 1,000 product trackeds
Amazon Price History Scraper - ASIN Price Alerts
Track Amazon product prices over time from ASINs or product URLs. Stores observed history in a named KV store and returns deltas, lows, highs, stock, seller, and optional drop alerts. MCP/API-ready.
Pricing
from $12.00 / 1,000 product trackeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Amazon Price History Scraper tracks Amazon product prices over time from ASINs or product URLs. It accepts a list of exact products, one marketplace code, and optional tracking settings. Each run returns one dataset record per tracked product, and each record represents the latest observation for that ASIN in the selected marketplace plus retained history in the named key-value store.
The output includes fields such as currentPrice, previousPrice, priceChange, priceChangePercent, lowestPrice, highestPrice, averagePrice, availability, inStock, seller, buyBoxWinner, rating, reviewCount, recentHistory, historyStoreName, and historyKey. The outcome is a durable product price timeline that you can query from Apify datasets and reuse across scheduled runs.
Best fit and connected workflows
Use this Actor when you already know the Amazon products you want to monitor and you want repeatable observations over time.
It fits well into workflows such as:
- product monitoring for exact ASIN lists
- price-drop alerts sent to a webhook endpoint
- scheduled repricing checks that compare current and previous prices
- catalog QA where stock, seller, or buy-box visibility matters
- agent workflows that need a structured Amazon product record
- Use downstream review analysis with Amazon Reviews Scraper - Ratings & Sentiment after price tracking identifies a product of interest
Because the Actor works from ASINs or product URLs, it is a good routing choice when the starting point is a known product record rather than a search query or category crawl.
Practical scenario
Maya manages a small ecommerce catalog and has a spreadsheet with three ASINs and their marketplace set to US. She starts a run with those ASINs, a named history store, and a webhook URL for price-drop alerts.
The Actor returns one row per product with the currentPrice, previousPrice, priceChange, priceChangePercent, seller, availability, inStock, lowestPrice, highestPrice, and recentHistory. Maya sees that one product is now cheaper than the previous observation, so she updates her internal repricing sheet and uses the same historyStoreName for the next scheduled run to keep the timeline continuous.
Input
| Field | Type | Purpose |
|---|---|---|
products | array of strings | Required list of Amazon ASINs or product URLs to monitor. |
country | string | Marketplace code such as US, UK, DE, FR, CA, JP, IN, AU, and others listed in the schema. |
maxProducts | integer | Caps how many unique products are processed from the input list. |
historyStoreName | string | Named key-value store used to retain observations across runs. |
outputHistoryPoints | integer | Controls how many recent observations are embedded in each output row. |
historyRetentionPoints | integer | Caps retained observations per ASIN in the history store. |
resetHistory | boolean | Resets stored observations for the submitted ASINs before writing the current run. |
alertWebhookUrl | string | HTTPS endpoint for optional price-drop webhook alerts. |
alertDropPercent | integer | Percentage drop threshold used together with alertWebhookUrl. |
maxConcurrency | integer | Tunes request parallelism for Amazon product pages. |
proxyConfiguration | object | Optional proxy settings. Uses the managed mobile proxy when left blank. |
Input example
{"products": ["B0CHWRXH8B","https://www.amazon.com/dp/B0CHWRXH8B"],"country": "US","maxProducts": 2,"historyStoreName": "amazon-price-history","outputHistoryPoints": 5,"historyRetentionPoints": 50,"resetHistory": false,"alertWebhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX","alertDropPercent": 5,"maxConcurrency": 3,"proxyConfiguration": {"useApifyProxy": false}}
Output
| Field | Type | Meaning |
|---|---|---|
asin | string | Amazon Standard Identification Number for the tracked product. |
url | string | Amazon product URL used for the scrape. |
marketplace | string | Marketplace code used for the run. |
brand | string or null | Brand or manufacturer text when extracted. |
title | string or null | Product title when extracted. |
currentPrice | number or null | Current visible product price. |
previousPrice | number or null | Most recent earlier stored price. |
priceChange | number or null | Difference between current and previous price. |
priceChangePercent | number or null | Percent change from previous to current price. |
priceDropped | boolean or null | Whether the current price is lower than the previous stored price. |
priceIncreased | boolean or null | Whether the current price is higher than the previous stored price. |
lowestPrice | number or null | Lowest retained non-null price. |
highestPrice | number or null | Highest retained non-null price. |
averagePrice | number or null | Average retained non-null price. |
firstSeenAt | string or null | Timestamp of the first retained observation. |
lastSeenAt | string or null | Timestamp of the newest retained observation. |
historyPoints | integer | Number of retained observations currently stored. |
recentHistory | array | Recent retained observations embedded in the row. |
listPrice | number or null | Original or struck-through list price when visible. |
currency | string or null | ISO currency code inferred from the page or marketplace. |
discountPercent | number or null | Discount against listPrice when both prices are available. |
buyBoxWinner | string or null | Seller currently winning the buy box, when visible. |
rating | number or null | Average star rating from the product page. |
reviewCount | integer or null | Total review count from the product page. |
availability | string or null | Availability or stock status text. |
inStock | boolean or null | Whether the product appears purchasable right now. |
isPrime | boolean or null | Whether Prime eligibility is visible. |
seller | string or null | Visible merchant or seller name. |
isFBA | boolean or null | Whether fulfillment appears to be handled by Amazon. |
thumbnail | string or null | Main product image URL when extractable. |
alertFired | boolean or null | Whether a configured webhook alert was sent. |
scrapedAt | string | Timestamp when the product page was scraped. |
historyStoreName | string | Named history store used by the run. |
historyKey | string | Key inside the history store for this ASIN and marketplace. |
_warnings | array or null | Per-row warnings returned by the scraper. |
Output example
{"asin": "B0CHWRXH8B","url": "https://www.amazon.com/dp/B0CHWRXH8B","marketplace": "US","brand": "Amazon","title": "Kindle Paperwhite","currentPrice": 139.99,"previousPrice": 149.99,"priceChange": -10,"priceChangePercent": -6.67,"priceDropped": true,"priceIncreased": false,"lowestPrice": 119.99,"highestPrice": 159.99,"averagePrice": 137.42,"firstSeenAt": "2026-07-01T10:00:00.000Z","lastSeenAt": "2026-07-08T10:00:00.000Z","historyPoints": 8,"recentHistory": [{"observedAt": "2026-07-08T10:00:00.000Z","asin": "B0CHWRXH8B","marketplace": "US","url": "https://www.amazon.com/dp/B0CHWRXH8B","title": "Kindle Paperwhite","price": 139.99,"listPrice": 159.99,"currency": "USD","availability": "In Stock","inStock": true,"seller": "Amazon.com"}],"listPrice": 159.99,"currency": "USD","discountPercent": 13,"buyBoxWinner": "Amazon.com","rating": 4.6,"reviewCount": 12450,"availability": "In Stock","inStock": true,"isPrime": true,"seller": "Amazon.com","isFBA": true,"thumbnail": "https://m.media-amazon.com/images/I/example.jpg","alertFired": false,"scrapedAt": "2026-07-08T10:00:00.000Z","historyStoreName": "amazon-price-history","historyKey": "HISTORY_US_B0CHWRXH8B"}
How it works
The Actor accepts exact Amazon products as ASINs or product URLs and checks them on the selected marketplace. It stores observed history in the named key-value store so repeated runs with the same historyStoreName build a durable timeline. The output dataset keeps the latest row for each tracked product, while recentHistory embeds a capped set of recent observations. Optional HTTPS webhook alerts send a JSON payload when the current price drops below the previous observed price by the configured threshold.
Pricing
This Actor uses Pay per event pricing on the Apify platform, plus standard Apify platform usage charges. Event billing includes the actor start event, product-tracked events, and alert-dispatched events when webhook alerts are sent. For the live pricing tab, open the Actor in Apify and check the Pricing section.
As an example written in words: if you track ten products in one run and no alerts are dispatched, you pay for one actor start event and ten product-tracked events, plus any platform usage costs shown in the live Pricing tab.
Use with AI agents (MCP)
This Actor is usable through Apify MCP and is a structured tool for checking Amazon product price history from ASINs or product URLs. The exact Actor identity is khadinakbar/amazon-price-history-scraper.
Tool description: retrieve one dataset row per tracked Amazon product with current price, previous price, price deltas, retained lows and highs, seller and stock signals, and recent price-history observations.
Track these Amazon products by ASIN and return the latest price, previous price, change, stock, seller, and recent history for each one. Use the same historyStoreName across runs so I can compare today against the previous observation.
Output interpretation:
priceChangeandpriceChangePercentshow how the current observation compares with the previous stored one.lowestPrice,highestPrice, andaveragePricesummarize retained observations in the named history store.recentHistoryshows recent retained observations, while the full retained timeline remains in the key-value store named byhistoryStoreName.alertFiredindicates whether a configured webhook alert was sent for that row.
Provenance and scope:
- Each row is based on the current Amazon product page for the selected marketplace.
- The Actor records its own observed history across runs using the same named key-value store.
- Use
countryto choose the marketplace explicitly.
Pagination and cost guidance:
- The Actor processes the submitted product list and stops at
maxProducts. maxConcurrencytunes request parallelism.- Product-tracked and alert-dispatched events affect cost, so set the input list and alerting rules to match the workflow you need.
API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor("khadinakbar/amazon-price-history-scraper").call({products: ["B0CHWRXH8B"],country: "US",historyStoreName: "amazon-price-history",outputHistoryPoints: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
Use exact ASINs or product URLs, and keep the same historyStoreName for recurring tracking. Choose the correct marketplace with country so the price, currency, and availability are evaluated on the intended Amazon site. If your workflow needs compact output, lower outputHistoryPoints; if it needs more retained observations in each row, raise it within the schema bounds. When you want a fresh timeline for a specific ASIN set, set resetHistory for that run and then continue with the same store name on the next schedule.
Design note
I found that historyStoreName points to a named key-value store and is explicitly separate from the output dataset name, which makes the output row easier to interpret in scheduled workflows.
FAQ
Is this Actor a good fit for keyword-based Amazon research?
It fits exact product tracking. If your workflow starts from search terms or category discovery, begin with an Amazon search or product-discovery Actor, then pass the returned ASINs into this Actor.
Can I use the output with reviews analysis?
Use Yes. The price-tracking row is a useful handoff into Amazon Reviews Scraper - Ratings & Sentiment when you want review-focused analysis for the same product record.
How do I keep a continuous price timeline?
Run the Actor on a schedule with the same historyStoreName. The retained history stays in the named key-value store, and each new run appends the latest observation for the submitted ASINs.
What should I use when I need only a small alerting workflow?
Use products with a short ASIN list, keep maxProducts aligned with that list, and set alertWebhookUrl plus alertDropPercent to match the threshold you want to watch.
Does the Actor work in more than one marketplace?
Yes. Set country to the target Amazon marketplace code, such as US, UK, DE, FR, CA, JP, IN, AU, and the other values listed in the input schema.
Responsible use
This Actor extracts publicly visible Amazon product-page information and stores observed price history across runs. Use the data in line with Amazon's terms, marketplace rules, privacy laws, and your own contractual obligations. When you send alerts or retain timelines, keep the scope focused on the exact products you intended to monitor and review the output rows before using them in automated decision-making.