Piotr VassevPiotr Vassev•

How to Scrape Amazon Best Sellers and Track Category Ranks

Amazon's Electronics chart can place a subscription alongside hardware. Collecting the ranking is straightforward; interpreting it requires keeping the category and chart type attached to every product.

The Amazon Best Sellers Scraper collects ranked rows with ASIN, title, price, ratings, category, and marketplace. I maintain the Actor. You can run it through Apify's input form without writing code, then compare dated snapshots to identify products worth investigating. It does not return unit sales or revenue.

Amazon category ranking research

Choose one chart and marketplace

Use an Amazon chart URL in categoryUrls, not a general product search or a seller storefront. Supported chart families are Best Sellers, New Releases, Most Wished For, and Most Gifted. They measure different things, so keep them in separate comparisons.

Copy the category URL from the marketplace you want to study. Country sites can use different category slugs; replacing .com with .de is not enough to establish a valid German category. Local currency is included in the returned records.

For a first run, open the Actor, select Input, switch to JSON, and enter:

{
  "categoryUrls": [
    "https://www.amazon.com/gp/bestsellers/electronics"
  ],
  "maxItems": 20,
  "subcategoryDepth": 0,
  "proxyConfiguration": {"useApifyProxy": true}
}

This requests at most twenty ranked product rows across the run and stays on the supplied category. Click Start, then inspect the dataset when the run finishes. Check that listType, categoryUrl, and marketplace match the chart you intended.

maxItems is global, with a minimum of one. A chart can contain up to 100 products. To request a full chart, use 100 and depth zero; that is a scope setting, not a guarantee of 100 successful records.

Keep subcategory expansion deliberate

subcategoryDepth: 1 adds direct subcategories, while higher depths continue down the tree, up to three levels. The documented estimate is commonly ten to thirty-five direct children per category. Even one extra level can therefore multiply the number of charts involved.

When the item cap is smaller than the combined charts, the result is a partial collection. For fair comparisons between selected categories, list those URLs explicitly at depth zero and allow enough rows for them, or run them separately. Save the exact input with the output so a later refresh covers the same scope.

What a ranked row tells you

The published sample contains the following row, abbreviated here. It is historical documentation data, not a current rank or price:

{
  "rank": 1,
  "asin": "B08JHCVHTY",
  "title": "blink plus plan with monthly auto-renewal",
  "price": 11.99,
  "currency": "USD",
  "rating": 4.4,
  "ratingCount": 279820,
  "listType": "bestsellers",
  "category": "Electronics",
  "marketplace": "amazon.com"
}

The title reveals a recurring plan. Its $11.99 listing price should not be averaged with one-time hardware purchases as though they were equivalent products. Other output fields include url, imageUrl, priceText, categoryUrl, and scrapedAt.

Retain both price and priceText when auditing price parsing. A missing price is not a free product. Ratings describe the available rating signal; they do not identify how many purchases occurred during your tracking interval.

Historical Amazon ranked-product output

Build a rank-change worksheet

Export CSV. Keep marketplace, chart type, category URL, ASIN, rank, title, price, currency, and collection time. Create a comparison key from marketplace, listType, categoryUrl, and asin. An ASIN can appear in multiple categories, and those are separate rank observations.

Save this first dataset as the baseline. On the next run with the same scope, join by that comparison key. Subtract the new rank from the old rank: moving from 18 to 11 gives a positive seven-position movement. Use a separate label for a newly observed product because it has no baseline rank in your dataset.

A product absent from the new twenty-row sample should be labeled “not observed,” not assigned rank 21 or marked discontinued. It might have moved below the cutoff, changed category, or failed to load. Open the chart before drawing a conclusion about a large change.

Add a manual product-type column so subscriptions, accessories, and primary devices can be reviewed separately. The deliverable is a shortlist of rank movements to investigate, with source links and sample boundaries. It is not a sales forecast.

Pricing and repeat runs

Pricing as of September 6, 2026 is $0.005 per ranked product row. Twenty rows cost $0.10 in product events; 100 rows cost $0.50. The start event is $0.00005 per GB of allocated memory, minimum one event. The README also identifies platform usage as separate, so review the live pricing and Console charges before scheduling many categories.

If the log shows blocked requests, the input documentation suggests residential proxies as an alternative to the default proxy configuration. Check the resulting proxy costs and retry a single category first. Raising category depth will not solve blocked requests.

Once the first comparison is useful, save an Apify task for the same URLs and interval. The Amazon Best Sellers Node.js example supports a later code-based workflow. If you need a seller's assortment rather than category charts, use the separate Amazon storefront guide. The e-commerce scraping guide covers broader comparison planning.

Frequently asked questions

Is maxItems a limit per category?

No. maxItems is the total number of ranked product rows saved across the run. Each category chart can list up to 100 products.

Does rank reveal how many units a product sold?

No. The Actor returns chart positions, not unit sales or revenue. Compare ranks within the same marketplace, chart type, and category.

Can I scrape New Releases and Most Wished For too?

Yes. The documented inputs support Best Sellers, New Releases, Most Wished For, and Most Gifted category URLs.

Piotr Vassev

Piotr Vassev

Founder of FalconScrape. Building production-grade web scraping systems and data automation pipelines for businesses worldwide.

Connect on LinkedIn