Aurelix

Guides

Track Amazon New Releases daily and catch new products as they enter the list

Save Amazon's Hot New Releases top 100 for any category every day, flag the products that just entered, and spot new launches with few reviews, with a short Python script.

Amazon New Releases & Best Sellers: price and examples

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"
}
  • categories takes the slug from a list URL (amazon.com/gp/new-releases/kitchen gives kitchen) 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: 2 returns the full top 100 (50 ranks per page, Amazon's maximum).
  • stateKey names 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 different stateKey to see which new releases later break into the main list.
  • Per-client tracking. Use one stateKey per client or project so each keeps its own comparison.
  • Alerts. Add slackWebhookUrl to 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.

Links

Tools used