Amazon Best Sellers Scraper avatar

Amazon Best Sellers Scraper

Pricing

from $2.99 / 1,000 best sellers

Go to Apify Store
Amazon Best Sellers Scraper

Amazon Best Sellers Scraper

Scrape Amazon Best Sellers rankings by category from Amazon.in (and other marketplaces). Extracts rank, title, ASIN, price, rating, reviews, and optionally full product details.

Pricing

from $2.99 / 1,000 best sellers

Rating

0.0

(0)

Developer

w3crawler

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Share

Amazon Best Sellers Scraper collects rich, publicly visible bestseller observations from Amazon category pages or direct product URLs. It supports India, US, UK, Germany, Japan, Canada, Australia, and Brazil marketplaces.

Pagination follows Amazon's public Next page link in source order and preserves the source URL's marketplace, category path, and non-pagination query parameters. Repeated marketplace/ASIN pairs are deduplicated by default, filters and sorting are applied before maxItems, and optional detail requests run with bounded concurrency. The dataset contains product rows only; run metrics and failures are stored separately in the key-value store.

maxPages is a per-category-source ceiling, not a promise that Amazon exposes that many pages. The crawler stops on the first applicable boundary: maxItems for unfiltered rank order, the configured page ceiling, no observed next link, a repeated URL, no new ASINs, or a blocked/failed response. During the current live inspection of amazon.in/gp/bestsellers/electronics/, Amazon exposed page 1 → page 2; page 2 began at rank 51 and exposed no further next link.

Dataset fields

FieldDescription
rank, rankOnPage, pageNumberBestseller position and page context
asin, title, url, canonicalUrlProduct identity and canonical public product URL
sourceUrl, listingUrl, categoryUrl, productUrlReproducible listing/detail source context
marketplace, country, userLocale, categoryNameMarketplace and category context
price, listPricePublic price objects with value and ISO currency
stars, reviewsCount, reviewsLink, hasReviewsPublic rating and review signals
isPrime, inStock, inStockTextPublic listing and product availability signals
brand, manufacturer, model, modelNumber, description, breadCrumbs, featuresPublic product information from detail pages
sellerName, offerUrl, deliveryText, couponText, badges, dealBadge, discountPercentagePublic offer and promotion signals when exposed
attributes, productOverviewPublic specification rows when technical details are enabled
imageUrl, thumbnailImage, imageAlt, imageUrls, galleryThumbnails, highResolutionImages, imageCountProduct-scoped public media
reviewsBounded public JSON-LD review summaries when enabled
sourceStructuredData, structuredDataTypes, pageText, wordCount, htmlLengthPublic page evidence and bounded text context
scrapedAtISO timestamp for the observation

The Actor does not put source labels, fieldCoverage, dataQuality, recordId, actor metadata, access flags, request counters, proxy metadata, or other debugging wrappers in dataset rows. Failed requests appear in run counts and logs only; they do not add dataset rows.

Input examples

1. Ordered multi-page category scrape

{
"mode": "category",
"country": "in",
"category": "electronics",
"maxItems": 100,
"maxPages": 3,
"deduplicate": true,
"sortBy": "rank_asc"
}

2. Multiple category sources with filters and sorting

{
"mode": "categoryUrl",
"categoryUrl": "https://www.amazon.in/gp/bestsellers/electronics/",
"categoryUrls": [
"https://www.amazon.in/gp/bestsellers/computers/",
"https://www.amazon.in/gp/bestsellers/beauty/"
],
"maxPages": 2,
"filters": {
"minRating": 4.5,
"minReviewsCount": 50,
"minPrice": 200,
"maxPrice": 5000,
"includePrimeOnly": true,
"includeKeywords": ["wireless", "usb"],
"excludeKeywords": ["refurbished"]
},
"sortBy": "rating_desc",
"maxItems": 50
}

3. Product detail enrichment and developer options

{
"mode": "category",
"country": "com",
"category": "electronics",
"maxItems": 20,
"maxPages": 1,
"deepSearch": true,
"extractReviews": true,
"maxReviews": 5,
"includeMedia": true,
"includeTechnicalDetails": true,
"requestDelayMs": 800,
"maxConcurrency": 2,
"maxRequestRetries": 3,
"requestTimeoutSecs": 45,
"maxResponseBytes": 20000000,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyCountry": "US"
}
}

The aliases requestTimeoutMs, timeoutSecs, timeoutMs, navigationTimeoutMs, minDelayMs, pageDelayMs, concurrency, detailConcurrency, maxRetries, maxBytes, and dedupe are accepted for compatibility. Unsupported input keys are rejected.

4. Direct product URLs

{
"mode": "productUrl",
"productUrls": [
"https://www.amazon.com/dp/B0EXAMPLE1",
"https://www.amazon.com/dp/B0EXAMPLE2"
],
"deepSearch": true,
"extractReviews": true,
"maxItems": 2
}

5. Offline pagination and detail QA

{
"mode": "category",
"category": "electronics",
"maxPages": 2,
"maxItems": 4,
"requestDelayMs": 0
}

Local detail tests use checked-in product fixtures directly. Fixture data is not exposed as a public Actor input, and live runs request the public source.

Example output

{
"rank": 1,
"pageNumber": 1,
"asin": "B0TEST1001",
"title": "Aurora Wireless Earbuds",
"url": "https://www.amazon.in/dp/B0TEST1001",
"canonicalUrl": "https://www.amazon.in/dp/B0TEST1001",
"sourceUrl": "https://www.amazon.in/gp/bestsellers/electronics/",
"listingUrl": "https://www.amazon.in/gp/bestsellers/electronics/",
"marketplace": "amazon.in",
"country": "in",
"categoryName": "electronics",
"price": { "value": 1299, "currency": "INR" },
"stars": 4.6,
"reviewsCount": 1204,
"isPrime": true,
"thumbnailImage": "https://images.example.com/aurora-earbuds.jpg",
"scrapedAt": "2026-09-07T00:00:00.000Z"
}

Access boundary

Requests use transparent public HTTP with optional ordinary Apify Proxy or public proxy routing. The Actor does not log in, solve CAPTCHAs, spoof fingerprints, use stealth rotation, bypass access controls, or call private APIs. Amazon challenge pages, explicit HTTP blocks, redirects outside the requested marketplace, timeouts, oversized responses, and pages without public cards fail closed without adding non-product rows to the dataset.

Local development and validation

npm install
apify validate-schema
apify run --purge --input-file .actor/input.json
npm run validate

Local dataset rows are written under storage/datasets/default/. OUTPUT_SUMMARY contains run counts and options, and failure details stay in the run logs. When at least one source-backed row was saved, later request or dataset-write errors leave the Actor run SUCCEEDED and set dataStatus to PARTIAL. A run with errors and no saved rows is marked FAILED.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Use only public pages and comply with Amazon's terms, robots guidance, rate limits, and applicable law.

Run summaries include the required status, runStatus, and dataStatus fields. status and runStatus are SUCCEEDED when source-backed rows were saved or a run completed cleanly with no matches; they are FAILED only when a real failure occurs before any rows are saved. dataStatus is COMPLETE, PARTIAL, NO_RESULTS, or FAILED. Failure details stay in the run logs; key-value summaries retain counts only.