Amazon Product Scraper – Prices, Reviews & BSR (20 Markets) avatar

Amazon Product Scraper – Prices, Reviews & BSR (20 Markets)

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Amazon Product Scraper – Prices, Reviews & BSR (20 Markets)

Amazon Product Scraper – Prices, Reviews & BSR (20 Markets)

Scrape Amazon search results, product URLs and ASINs on 20 marketplaces: price, list price, rating, reviews, Prime, sponsored, badges, brand, features, seller and Best Sellers Rank.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

12 days ago

Last modified

Categories

Share

What does Amazon Product Scraper do?

Collect public Amazon search results and product details from keywords, Amazon URLs or ASINs. Export product identifiers, prices, ratings, review counts and available seller/catalog fields as JSON, CSV or Excel. Marketplace configuration covers 20 country sites; availability and field coverage vary by site and session. No Amazon account or store API key is required.

How to scrape Amazon products

  1. Enter search keywords, product URLs/ASINs or Amazon search/category URLs. Bare ASINs and keywords use your selected marketplace; URLs identify their own country site.
  2. Set per-search and global result limits. Enable Enrich with product page details only when you need the additional fields.
  3. Set Maximum total charge in run options, then start. Inspect Products and Run summary before exporting.

Start with this two-product search:

{"searchTerms":["wireless earbuds"],"marketplace":"com","maxItemsPerSearch":2,"maxItems":2,"maxPages":1,"scrapeDetails":false}

An API object without any target fields uses a wireless-earbuds demo. Explicit empty or unusable target lists do not silently start that demo. Invalid entries alongside usable targets are reported in the summary. Always provide explicit inputs in production.

What data can you extract?

FieldsMeaning
asin, url, marketplace, domainProduct identity and public page.
title, image, price, currency, list_pricePublic search/detail information when supplied.
rating, reviews_count, is_prime, is_sponsoredAvailable rating and listing indicators; missing fields may be null.
search_term, position, page, source_urlFirst retained search attribution and position among collected unique products.
brand, features, images, availabilityAvailable product-page fields when details are requested.
seller, fulfilled_by, bsr, best_sellers_ranks, categoriesAvailable seller/category details; not every page includes them.
details_scraped, scraped_atWhether a detail response was parsed, and the extraction timestamp.

price_eur is an approximate conversion using the run's FX lookup, with static fallback rates if that lookup fails. It is not a guaranteed current exchange rate or settlement price. An absent price is not zero. Prices and availability can depend on delivery location, variant and the visitor session.

Products are deduplicated by marketplace and ASIN across the run. A product appearing under several keywords retains its first attribution. This is a bounded product sample, not a complete organic/sponsored share-of-shelf measurement.

Selected fields from an earlier test capture (historical, not a current quote):

{"asin":"B0HCTKSSQK","marketplace":"com","price":19.99,"currency":"USD","rating":4.7,"reviews_count":941,"scraped_at":"2026-10-15T18:15:45.382211+00:00","details_scraped":true}

How much does Amazon Product Scraper cost?

Current base pricing is $1.50 per 1,000 saved product rows, plus $0.00005 per start at the default 512 MB. Two products plus one start cost $0.00305; 1,000 products plus one start cost $1.50005. These are event-charge calculations, not guaranteed volumes or subscription prices. Detail enrichment has no separate result event. A start can be charged even when no products are returned.

The start event counts allocated GB with a minimum of one. Standard platform usage is included in the event price; your Apify subscription and other services are separate. Check the live Pricing tab.

maxItemsPerSearch caps each search; maxItems caps all saved rows, with zero meaning no additional global row cap. maxPages caps pages per search. Result capacity and event budget are checked before further page/product jobs and before delivery. Only SDK-confirmed writes count as delivered. A result limit is not a limit on the number of HTTP retries.

Coverage, failures and resuming

RUN_SUMMARY includes status, partial, items, newItems, resumedItems, job details, unprocessedJobs, errors and HTTP statistics.

  • complete: requested jobs reached their per-search limit, a confirmed source boundary, or saved the requested product. This does not mean every matching Amazon product was collected.
  • partial: useful rows may exist, but a global/budget/time/page limit, source error or requested detail failure left incomplete work. Inspect individual job stop reasons.
  • incomplete: a storage/billing failure prevented reliable delivery. The run fails; inspect actual dataset contents before relying on them.

Previously stored rows remain the delivery journal when resuming the same run with unchanged input. They count toward the global cap and are not deliberately written again. Searches may refetch pages, because the Actor does not persist page-level crawl checkpoints. Changed input or legacy storage without its input signature requires a fresh run. Starting a new run creates a new snapshot and bills its saved rows again; deduplicate snapshots downstream.

Standalone product inputs run sequentially to avoid unnecessary fetches after a small budget. Search-result enrichment uses bounded concurrency. Blocks, missing products, timeouts and source changes can prevent results. Retry handling does not guarantee CAPTCHA or WAF access. The existing proxy fallback can try direct connections even when a user proxy was supplied; do not use this Actor where strict proxy-only routing is required.

Bounded Python API example

Install apify-client==3.2.0 and supply your own APIFY_TOKEN through the environment. This example starts one paid run with up to two products and a $0.01 event ceiling. The ceiling is not the expected price.

import os
from datetime import timedelta
from decimal import Decimal
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("ninhothedev/amazon-product-scraper").call(
run_input={"searchTerms":["wireless earbuds"],"marketplace":"com",
"maxItemsPerSearch":2,"maxItems":2,"maxPages":1,"scrapeDetails":False},
memory_mbytes=512, run_timeout=timedelta(seconds=180),
max_total_charge_usd=Decimal("0.01"),
)
if run is None or run.status != "SUCCEEDED":
raise RuntimeError("Run failed; inspect the log and RUN_SUMMARY.")
record = client.key_value_store(run.default_key_value_store_id).get_record("RUN_SUMMARY")
rows = list(client.dataset(run.default_dataset_id).iterate_items())
if not record or record["value"].get("status") != "complete":
raise RuntimeError("Incomplete coverage; inspect RUN_SUMMARY before using this snapshot.")
if len(rows) != record["value"]["items"]:
raise RuntimeError("Dataset count and summary differ.")
for item in rows:
print(item["asin"], item["price"], item["title"])

Repeat product research and integrations

Use bounded snapshots for catalog enrichment, competitor product comparisons or price research. Choose the same marketplace and inputs for comparisons, retain timestamps and compare marketplace/ASIN pairs downstream. A missing product is not proof of delisting. The Actor does not retain cross-run price history or send alerts.

Apify API, saved tasks, schedules and dataset exports can feed your own Make, n8n, Google Sheets or database workflow. Set up those integrations separately. See the Input tab for configuration and the API tab for endpoints. For a reproducible issue, share the run ID and minimal input through the Issues tab; keep credentials out of public reports.