Use Amazon Deals Grid Tracker by Category & Discount with Python
Pull Amazon's Today's Deals grid across 23 marketplaces, with deal price, list price, savings amount/percent, deal type, brand, and department for each product. Filter by category, brand, price range, and discount range.
1. Choose the data you need
Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.
2. Prepare a source-based input
This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.
{
"brand": "",
"categories": [],
"collection": "",
"marketplace": "amazon.com",
"maxItems": 3,
"primeExclusiveOnly": false,
"sortBy": "featured"
}
Download input.example.json and save your reviewed copy as input.json.
| Field | Type | Required | Description |
|---|---|---|---|
marketplace | string | required | Which Amazon domain's Today's Deals page to scrape. |
categories | array | optional | Amazon departments to scan. Common names: Electronics, Home & Kitchen, Kitchen, Beauty & Personal Care, Clothing Shoes & Jewelry, Toys & Games, Sports & Outdoors, Books, Pet Supplies, Automotive, Health & Household, Computers & Accessories, Cell Phones & Accessories, Video Games, Tools & Home Improvement, Patio Lawn & Garden, Baby Products, Office Products, Musical Instruments, Camera & Photo, Grocery & Gourmet Food, Amazon Devices & Accessories. Add several categories to scan past Amazon's 500-deal window. |
collection | string | optional | Restrict to one of Amazon's curated deal collections. The collection names differ by marketplace; unsupported collections return a clear status record instead of unfiltered data. |
brand | string | optional | Case-insensitive brand name substring (e.g. Anker, Samsung). Leave empty for all brands. |
minRating | integer | optional | Keep only deals whose product rating is at least this value. Deals without a rating are excluded when this is set. |
priceMin | integer | optional | Keep deals at or above this price in the marketplace's local currency. |
priceMax | integer | optional | Keep deals at or below this price in the marketplace's local currency. |
discountMin | integer | optional | Keep deals with at least this percentage off, filtered by Amazon itself. |
discountMax | integer | optional | Keep deals with at most this percentage off, filtered by Amazon itself. |
primeExclusiveOnly | boolean | optional | Only return deals in Amazon's Prime Exclusive collection. |
sortBy | string | optional | Featured keeps Amazon's order. Other sorts read the fetched deal window before returning, so they may take longer. |
maxItems | integer | optional | Hard cap on emitted deal records. Amazon exposes up to 500 deals per category/collection query; add categories to partition the window. |
3. Start an Actor run
Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.
Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.
import json
import os
import urllib.request
# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
actor_input = json.load(stream)
token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
"https://api.apify.com/v2/acts/yZ5tcZFmAAXi1egIo/runs?timeout=120&maxTotalChargeUsd=0.50",
data=json.dumps(actor_input).encode("utf-8"),
headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.
4. Inspect the actual results
Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.
One record per discounted product on Amazon's Today's Deals grid: ASIN, title, images, local-currency deal/list price, savings, rating and review histogram, deal window, collection, brand and category.
Questions before you run
Which inputs are required?
The published required fields are marketplace
What does this guide verify?
The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.
What if the run request times out?
Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.
Generated from source build jBUJUe5UwT4agcDX0 and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.