Amazon's Hot New Releases list ranks the best-selling recent and upcoming products in each category, and Amazon updates it frequently. For product researchers, private-label sellers and brand teams, it is one of the earliest public signals of a launch that is working: a product with 30 reviews sitting in the top 10 of its category's new releases is selling, and nobody has written about it yet.
Checking it by hand does not scale past one category. This guide saves the list every day and flags what just entered.
Disclosure: I'm Aurelix, and I built the Amazon Best Sellers Scraper used below. It reads both Best Sellers and New Releases. It is a paid tool, priced per product returned; the current price is on its tool page.
The input
{
"categories": ["kitchen", "pet-supplies", "https://www.amazon.co.uk/gp/new-releases/kitchen"],
"listType": "new-releases",
"amazonDomain": "com",
"maxPages": 2,
"stateKey": "new-releases-daily"
}
categoriestakes the slug from a list URL (amazon.com/gp/new-releases/kitchengiveskitchen) or a full list URL; full URLs keep their own marketplace, so you can mix amazon.com and amazon.co.uk in one run. Ten marketplaces work: .com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .in and .co.jp.listType: "new-releases"makes bare slugs mean the New Releases list instead of Best Sellers.maxPages: 2returns the full top 100 (50 ranks per page, Amazon's maximum).stateKeynames the memory used to compare with your previous run.
Every row from the second run on carries previous_rank, rank_change (positive means it climbed) and new_entry (it was not on the list last time). Set onlyNewEntries to true to get, and pay for, only the products that just entered.
A daily report in Python
pip install apify-client
import csv
import os
from datetime import date
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("aurelix/amazon-best-sellers").call(run_input={
"categories": ["kitchen", "pet-supplies"],
"listType": "new-releases",
"maxPages": 2,
"stateKey": "new-releases-daily",
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
with open(f"new-releases-{date.today()}.csv", "w", newline="", encoding="utf-8") as f:
w = csv.DictWriter(f, fieldnames=["category_name", "rank", "asin", "title", "price", "rating",
"reviews_count", "new_entry", "rank_change", "product_url"],
extrasaction="ignore")
w.writeheader()
w.writerows(rows)
entered = [r for r in rows if r.get("new_entry")]
early = [r for r in rows if r["rank"] <= 20 and (r.get("reviews_count") or 0) < 50]
print(f"{len(rows)} ranks saved, {len(entered)} new on the list since the last run")
for r in early:
print(f"#{r['rank']:>3} {r['category_name']}: {r['title'][:70]} ({r.get('reviews_count') or 0} reviews)")
Schedule it daily (cron, GitHub Actions or an Apify schedule). The script prints two short lists: products that entered since yesterday, and top-20 products that still have fewer than 50 reviews, which are often the newest launches.
Real output
The first ranks of amazon.com's Kitchen & Dining New Releases from a run of this tool:
| rank | title (shortened) | price | rating | reviews |
|---|---|---|---|---|
| 1 | Simple Modern Travel Coffee Mug with Lid, 16oz | 22.99 | 4.7 | 12,683 |
| 2 | Leakproof Silicone Baking Mat with Snap Lock Edges | 15.88 | 4.0 | 59 |
| 3 | Frost Buddy Togo Buddy 30oz Iced Coffee Tumbler | 39.99 | 4.6 | 3,650 |
| 4 | Large Portable Printed Tote Bag for Women | 3.97 | 4.7 | 4 |
| 5 | 3D Highland Cow Silicone Ice Mold | 2.74 | 4.4 | 31 |
In that run, 23 of the top 50 had fewer than 50 reviews. Each row also has the ASIN, product URL, image URL, currency and price_max for products listed with a price range. On a first run previous_rank and rank_change are empty and new_entry is false, because there is nothing to compare with yet.
Tips
- Best Sellers too. Run the same categories with
"listType": "bestsellers"under a differentstateKeyto see which new releases later break into the main list. - Per-client tracking. Use one
stateKeyper client or project so each keeps its own comparison. - Alerts. Add
slackWebhookUrlto the input for a Slack digest after each run.
Limits
- Up to 100 ranks per list, Amazon's own maximum.
- Movers & Shakers and Most Wished For are not supported: Amazon serves them empty to logged-out visitors.
- Some products show no price on the list (for example when only sold through other offers); the price is left empty rather than guessed.
For rank history on the Best Sellers list itself, see Track Amazon best seller rank changes over time.