deal object, or null when no eligible confirmed deal exists.
Find deals
Either discount bound or either deal sort implies deals-only, even when
deals_only is omitted or false. A minimum greater than the maximum returns
HTTP 400; invalid bounds or sort values return HTTP 422. Equal bounds are valid.
The existing marketplace, search, brand, ASIN, and pagination filters still apply.
product_available=no combined with deal filtering returns no matches.
The list response keeps total_count, fetched_count, skip, limit, and
product_catalog. The single-product endpoint returns the product object directly;
it does not accept the list’s deal filters or sorting options.
Deal response
Illustrative product excerpt (prices use the product’spricing.currency):
For list price 17.97, average price 8.62 and current price 2.99, the reference
was_price is 8.62 and the discount is approximately 65%. Coupon savings are
not automatically subtracted from current_price or included in savings sorting.
Catalog price / pricing.price and top-level list_price may differ from deal
snapshot prices. Use deal.was_price and deal.current_price together for deal
savings. Savings sorting compares amounts in their local currencies without
currency conversion, so select one marketplace for meaningful comparisons.
Freshness and availability
deal is null for missing or invalid snapshots, unavailable products, snapshots
older than 24 hours, or expired deals. Lightning deals require a known future end
time. A null end time for a non-lightning deal does not guarantee indefinite
availability. Deal filters and counts use the same validity rules.
The public field names are deal, avg_last_30_day_price, and last_updated.
Internal storage field names are not returned in the response.