Amazon Offer Price History Diff
Pricing
from $2.00 / 1,000 diff rows
Amazon Offer Price History Diff
Compare two dated Amazon product datasets you already have: price, list price, availability and seller changes, same-currency only.
Pricing
from $2.00 / 1,000 diff rows
Rating
0.0
(0)
Developer
Practical AI Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Compare two dated snapshots of Amazon product data that you already have and get a row-per-ASIN report of what changed: price, list price, discount depth, availability and seller.
This Actor never visits Amazon, logs in anywhere or fetches external pages. It only reads the data you give it (inline JSON or an Apify dataset in your own account).
What makes it different from a scraper
- It is an analysis step, not a data collector. Pair it with any export you are entitled to use.
- Comparable currency only. A price delta is computed only when both snapshots carry the same known ISO currency code. A EUR price versus a USD price gets a
currency_mismatchstatus and no number, instead of a misleading difference. No exchange rates are applied. - Ambiguous symbols (
$,¥) are never guessed. Supply acurrencyfield, a code in the text such asUSD 19.99, or setdefaultCurrencyif you are certain. - Range prices such as
$10 - $20are not parsed.
Input
| Field | Purpose |
|---|---|
beforeDate, afterDate | Collection dates (YYYY-MM-DD) of the two snapshots. Required. |
beforeItems, afterItems | Snapshot items as JSON, or use the dataset IDs below. |
beforeDatasetId, afterDatasetId | Datasets in your own Apify account (alternative to JSON). |
targetCurrency | Only compute deltas in this currency. |
defaultCurrency | Assumed currency for records with none. |
minChangePercent | Ignore smaller price moves. |
includeUnchanged | Also output matched ASINs with no change. |
includeAddedRemoved | Output ASINs present in only one snapshot. |
maxRows | Cap on stored rows (default 5000). |
Recognized item fields (first match wins): asin or an Amazon product url containing /dp/<ASIN>; title/name; price/currentPrice (number, text, or {value, currency}); currency; listPrice/originalPrice; availability/inStock; seller/soldBy; marketplace/domain (otherwise derived from the URL host).
The prefilled sample input can be copied as is.
Output
Dataset rows contain asin, marketplace, comparison (matched, added, removed), changes (for example price_drop, price_increase, list_price_up, list_price_down, became_unavailable, back_in_stock, seller_changed), before/after prices with currencies, priceDelta, pricePctChange, priceStatus, the same for list price, discount percentages (only when price and list price share a currency), availability and seller.
A run summary is stored in the key-value store record OUTPUT_SUMMARY, including counts, change counts and caveats.
Pricing model
The code emits one pay-per-event event named diff-row per stored output row, only after rows were stored successfully. Runs that fail validation or crash store and charge nothing. Billing configuration is done separately on the platform and is not part of this repository.
Limitations and caveats
- Only two points in time are compared. Moves in between are invisible; this is not continuous history.
- Output quality equals input quality. The Actor cannot verify that your data is correct, complete or really from the stated dates.
- Matching is by marketplace plus ASIN. If records lack a marketplace and URL, the same ASIN from different marketplaces is treated as one product. The first record per key is kept; duplicates are counted in the summary.
- Seller changes are flagged only when both snapshots name a seller. Availability changes only when both sides are recognizable (
in_stockorout_of_stock). - Number parsing heuristics: a single separator followed by exactly three digits (for example
1,299) is read as a thousands separator. - With small samples (fewer than 30 matched ASINs) the summary says so; do not treat shares or averages from such samples as representative.
- Check that you are permitted to use the data you supply, and that it contains no personal data.
- The earlier snapshot is indexed in memory; very large snapshots (hundreds of thousands of ASINs) need more memory.
Local tests
The unit tests are offline: python -m unittest discover tests.