Amazon Offer Price History Diff avatar

Amazon Offer Price History Diff

Pricing

from $2.00 / 1,000 diff rows

Go to Apify Store
Amazon Offer Price History Diff

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

Practical AI Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Security

Limited permissions

Share

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_mismatch status and no number, instead of a misleading difference. No exchange rates are applied.
  • Ambiguous symbols ($, ¥) are never guessed. Supply a currency field, a code in the text such as USD 19.99, or set defaultCurrency if you are certain.
  • Range prices such as $10 - $20 are not parsed.

Input

FieldPurpose
beforeDate, afterDateCollection dates (YYYY-MM-DD) of the two snapshots. Required.
beforeItems, afterItemsSnapshot items as JSON, or use the dataset IDs below.
beforeDatasetId, afterDatasetIdDatasets in your own Apify account (alternative to JSON).
targetCurrencyOnly compute deltas in this currency.
defaultCurrencyAssumed currency for records with none.
minChangePercentIgnore smaller price moves.
includeUnchangedAlso output matched ASINs with no change.
includeAddedRemovedOutput ASINs present in only one snapshot.
maxRowsCap 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_stock or out_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.