Amazon Product Scraper - Prices, BSR, Reviews & Alerts
Pricing
from $5.00 / 1,000 product scrapeds
Amazon Product Scraper - Prices, BSR, Reviews & Alerts
Scrape Amazon products across 11 markets: prices, BSR, ratings, reviews, availability, seller data, and rank-change alerts. Built for seller research, price tracking, competitor monitoring, and optional AI analysis.
Pricing
from $5.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Nick
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
11
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape Amazon product search results and product pages across supported markets, including prices, BSR, ratings, reviews, availability, seller data, and rank-change alerts.
Best first run
{"searchQuery": "wireless earbuds","amazonDomain": "amazon.com","maxProducts": 10,"fetchDetails": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Use this actor for seller research, competitor monitoring, price tracking, keyword checks, and product intelligence. Start small because Amazon is anti-bot-sensitive; increase detail fetching after a basic search works.
No cookies, no OAuth, no API keys (for the scraping) - runs on public data only. AI keys are optional and only needed when
enableAiAnalysis: true.
Track Amazon prices and Best Sellers Rank across 11 marketplaces at $0.005/product - the only scraper on Apify Store with cross-run BSR time-series + real-time webhook alerts. Replaces $19-39/mo Keepa/AMZScout/RankBlaze SaaS at ~$11/mo for a 25-ASIN daily watchlist (3-5x cheaper than equivalent Apify scrapers). 5-provider AI competitive analysis. No subscription, no upfront cost - pay only for results you receive.
Why this beats the 50+ other Amazon scrapers
- BSR rank tracking that actually persists - every other scraper ships a single-run snapshot. This one stores per-ASIN rank history in Apify's key-value store and emits
rank_change,rank_peak, andrank_movementdeltas on every run. Schedule it once and you have a free Keepa-style rank monitor. - Real-time webhook alerts - POST to Slack, Zapier, n8n, Make, Discord, or any HTTP endpoint the moment a competitor crosses your rank threshold. Replaces $19-39/month rank-alert SaaS (RankBlaze, AMZScout Stock Stats) at ~$11/month for a 25-ASIN daily watchlist.
- Browser-grade anti-bot - curl_cffi Chrome 131 TLS fingerprint + per-request residential proxy rotation + WAF-retry logic. Survives Amazon's 2026 WAF rules that broke half the scrapers in the store.
- 5-provider AI competitive intelligence - switch between OpenRouter (300+ models), Anthropic Claude, Google Gemini, OpenAI GPT, or self-hosted Ollama. AI auto-switches to a rank-movement narrator when BSR tracking is on.
- 11 Amazon marketplaces - US, UK, DE, FR, IT, ES, NL, CA, JP, AU, IN. Each domain returns native currency. European decimal-comma prices (
1.299,50 €) parse correctly. - Transparent pricing - $0.005/product (3-5x cheaper than equivalent competitor scrapers). $0.05 flat for AI analysis. $0.002 per webhook delivered. Failed scrapes and failed webhooks cost nothing.
Multi-marketplace arbitrage suite
Amazon Scraper is the anchor of harvestlab's 4-actor multi-marketplace cluster. Buyers tracking Amazon catalog usually want adjacent-marketplace coverage too - same SKU, different channel, different price. Pair them on a daily schedule with watchMode: true and you get unified cross-channel price-history datasets without writing any glue code.
| Pair with | Coverage | Price | Why pair |
|---|---|---|---|
| eBay Scraper | 13 country domains, auctions + Buy-It-Now + sold-comps | $0.003/product | Spot multi-marketplace arbitrage between Amazon catalog prices and eBay sold-comps |
| Bol.com Scraper | NL + BE retail | $0.005/product | Extend Amazon EU intel into Dutch/Belgian markets where Amazon is weak |
| Shopify Scraper | Any DTC Shopify store | $0.004/product | Round out marketplace research with direct-to-consumer Shopify storefront prices |
All four share the same MCP-server tag, watchMode pattern, webhook event-log, and Apify key-value-store snapshot format - copy a working schedule from one to the others in minutes.
What it does
Scrapes Amazon product listings from search results or direct product URLs and extracts prices, ratings, reviews, images, seller info, Prime eligibility, Best Sellers Rank, and more - across 11 Amazon marketplace domains worldwide.
The actor goes beyond a point-in-time snapshot. Enable trackBestsellerRank and it persists each ASIN's rank across runs, emitting rank_now, rank_previous, rank_change, rank_peak, and rank_movement ("rising" / "falling" / "steady" / "new") on every item. Pair with Apify's built-in scheduler to build a persistent BSR history per ASIN with no external database required - cross-run state lives in a named Apify key-value store, one snapshot slot per Amazon domain.
Set alertWebhookUrl and the actor becomes a real-time rank-alert service: it POSTs a compact JSON payload to your URL (Slack, Discord, Zapier, Make, n8n, or any HTTP endpoint) whenever a tracked ASIN's absolute rank change crosses your threshold - no polling, fire-and-forget, billed only on successful delivery at $0.002/webhook.
Optionally generate AI-powered competitive pricing analysis via 5 LLM providers (OpenRouter, Anthropic, Google AI, OpenAI, Ollama) with market positioning, price sweet spots, brand comparisons, and actionable insights. When BSR tracking is also enabled, the AI report switches to a rank-movement narrator that explains why products are climbing or falling.
Supported Amazon domains:
| Domain | Country | Currency |
|---|---|---|
amazon.com | United States | USD |
amazon.co.uk | United Kingdom | GBP |
amazon.de | Germany | EUR |
amazon.fr | France | EUR |
amazon.it | Italy | EUR |
amazon.es | Spain | EUR |
amazon.co.jp | Japan | JPY |
amazon.ca | Canada | CAD |
amazon.com.au | Australia | AUD |
amazon.in | India | INR |
amazon.nl | Netherlands | EUR |
Each domain returns results in local currency. The currency field in each output item reflects the currency actually rendered on the page - if your proxy's geo doesn't match the domain, Amazon may localize prices to the proxy's currency.
Features
- Search scraping: Enter any keyword and scrape product results with automatic pagination across multiple pages
- Direct URL scraping: Provide specific Amazon product URLs for detailed extraction including description, features, and seller info
- 11 Amazon domains: Scrape any marketplace with localized pricing, availability, and language
- Rich product data: Title, price, original price, discount %, rating, review count, brand, Prime status, images, badges, delivery info
- Detail page extraction: Full product descriptions, bullet-point features, availability status, seller info, and category breadcrumbs
- Multi-language support: Rating and review count parsing works across English, German, French, Spanish, Italian, Dutch, and Japanese pages
- European decimal-comma parsing: Prices like
19,99 €or1.299,50 €are correctly normalized to floats (19.99, 1299.50) - Dynamic currency detection: The
currencyfield reflects the currency actually displayed on the page - Best Sellers Rank extraction: Each product emits
bestseller_rank(integer) andbestseller_category - BSR time-series tracking (unique):
trackBestsellerRank: truepersists each ASIN's rank across runs and emitsrank_now,rank_previous,rank_change,rank_peak,rank_movementdeltas, plus a per-runrank_movement_summaryitem with top-5 climbers and top-5 fallers. Cross-run state is scoped per Amazon domain - BSR alert webhooks (unique):
alertWebhookUrl+alertRankThreshold(default 50) fires an HTTP POST per ASIN whose|rank_change| >= threshold. Payload includes ASIN, title, URL, marketplace, rank_previous/now/change/pct, movement, peak, category, price, and scraped_at. Fire-and-forget with 5s timeout, 1 retry, andX-Actor-Run-Idheader for traceability - Hi-res gallery images: Detail pages emit an
imageslist of up to 12 alt-view images, upscaled to master asset by stripping CDN size specifiers - Anti-bot resilience: Browser TLS fingerprint impersonation via curl_cffi (Chrome 131) with residential proxy rotation per request, plus WAF-retry logic on search result pages
- AI competitive analysis: 5 LLM providers - OpenRouter (300+ models), Anthropic (Claude), Google AI (Gemini), OpenAI (GPT), Ollama (self-hosted). Market overview, pricing sweet spots, brand rankings, and opportunity identification
- Pay-per-result pricing: $0.005/product - no upfront costs, no monthly subscription
Comparison with alternatives:
| Scraper | $/1,000 products | AI analysis | BSR snapshot | BSR time-series | BSR webhooks | Multi-LLM |
|---|---|---|---|---|---|---|
| This actor | $5.00 | YES (5 providers) | YES | YES (unique) | YES (unique) | YES |
junglee/amazon-crawler | $3.00 | no | yes | no | no | n/a |
junglee/free-amazon-product-scraper | $6.20 | no | yes | no | no | n/a |
automation-lab/amazon-scraper | $2-4 tiered | no | yes | no | no | n/a |
Every other Amazon scraper on the Apify Store ships a point-in-time BSR snapshot at best. This actor is the only one with cross-run BSR time-series tracking AND real-time BSR alert webhooks - schedule it daily and every ASIN emits rank_change, rank_peak, and rank_movement vs. the previous run, with optional HTTP POST alerts on threshold crossings.
Use Cases
- E-commerce sellers - Monitor competitor pricing across 11 markets and identify MAP violations. Typical setup: 100 ASINs scraped daily across 3 domains = ~$1.50/day, vs. $99-299/month for Prisync / Pricetrue.
- Brand & rank monitoring - Get a Slack alert the moment a competitor's BSR climbs past your threshold. Replaces: RankBlaze ($19/mo), AMZScout Stock Stats ($29/mo), Keepa Premium ($24/mo) - 25-ASIN daily watchlist runs ~$11.43/month here, with the full raw catalog as a bonus.
- Dropshippers & arbitrage - Find profitable products by cross-domain price-arbitrage scans (e.g. amazon.com vs amazon.de). The
discount_percentageandbestseller_rankfields surface high-margin candidates fast. - Market & category research - Pull 500-product samples per category and analyze brand share, price distribution, sponsored-vs-organic ratio, and review momentum. AI competitive report turns the raw rows into a 1-page market brief.
- Affiliate marketers - Discover top-rated, high-review-count products by category for "best of 2026" listicles. Sort by
avg_reviewornewestto surface fresh-but-validated picks. - MAP & price-policy enforcement - Daily BSR + price scans across resellers; flag any price below your floor and route the alert to a procurement Slack channel via the webhook.
- Procurement teams - Benchmark supplier quotes against live Amazon list prices at scale; the
currency+availabilityfields make cross-border procurement decisions defensible. - AI / ML training data - Pull thousands of product titles, bullet features, and descriptions for embedding fine-tunes or product-categorization models - no API quotas, just pay-per-row.
- BI / dashboard pipelines - Push CSV / JSON straight into Google Sheets, Snowflake, or BigQuery via Apify's 2,000+ integrations. The
scraped_atISO timestamp makes time-series joins trivial.
Input
Search Parameters
- Search Query (
searchQuery): Keywords to search for (e.g., "wireless headphones", "laptop stand", "organic coffee") - Product URLs (
productUrls): Direct Amazon product URLs - provide specific ASINs or product pages for detailed extraction. Overrides search query when provided - Amazon Domain (
amazonDomain): Which Amazon marketplace to scrape. Options: amazon.com (default), amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.ca, amazon.co.jp, amazon.com.au, amazon.nl, amazon.in - Max Products (
maxProducts): Maximum number of products to scrape (1-100, default: 10). Higher values paginate through multiple search result pages - Sort By (
sortBy): Sort order for search results - relevance (default), price-asc, price-desc, avg-rating, newest - Fetch Product Details (
fetchDetails): Visit individual product detail pages to enrich results with brand, availability, description, features, and seller info (default: false for faster first runs)
BSR Time-Series & Alerts
- Track Best Sellers Rank (
trackBestsellerRank): Persist each product's BSR across runs and emit rank delta fields (rank_now,rank_previous,rank_change,rank_peak,rank_movement). ForcesfetchDetails: true. Default: false - BSR Alert Webhook URL (
alertWebhookUrl): POST a JSON payload to this URL whenever a tracked ASIN's absoluterank_changecrosses the threshold. Works with Slack, Zapier, Make, n8n, Discord, or any HTTP endpoint. Auto-enablestrackBestsellerRank - BSR Alert Threshold (
alertRankThreshold): Minimum absolute rank_change required to fire a webhook (default: 50). Lower = more alerts
AI Analysis Settings
- Enable AI Analysis (
enableAiAnalysis): Toggle AI-powered competitive analysis on or off (default: off). Requires an LLM API key when enabled - LLM Provider (
llmProvider): Choose between OpenRouter (recommended - 300+ models), Anthropic (Claude), Google AI (Gemini), OpenAI (GPT), or Ollama (self-hosted) - OpenRouter API Key (
openrouterApiKey): Your API key from openrouter.ai - Anthropic API Key (
anthropicApiKey): Your API key from console.anthropic.com - Google AI API Key (
googleApiKey): Your API key from aistudio.google.com - OpenAI API Key (
openaiApiKey): Your API key from platform.openai.com - Model Override (
llmModel): Optional custom model selection. Leave empty for defaults (Gemini 2.0 Flash for OpenRouter, Claude Sonnet for Anthropic, Gemini 2.0 Flash for Google AI, GPT-4o Mini for OpenAI, Llama 3.1 for Ollama)
Proxy Settings
Residential proxy is strongly recommended - Amazon's AWS WAF frequently blocks datacenter IPs, especially on non-US marketplaces.
The actor uses browser TLS fingerprint impersonation (curl_cffi Chrome 131) combined with per-request proxy rotation and automatic WAF-retry on search result pages, but residential IPs substantially improve success rates across all domains.
Key proxy tip: Set apifyProxyCountry to match your target domain. Amazon localizes prices and content based on the requesting IP's geography - a US proxy on amazon.co.jp will return USD prices instead of JPY.
| Target domain | Recommended apifyProxyCountry |
|---|---|
| amazon.com | US |
| amazon.co.uk | GB |
| amazon.de | DE |
| amazon.fr | FR |
| amazon.it | IT |
| amazon.es | ES |
| amazon.co.jp | JP |
| amazon.ca | CA |
| amazon.com.au | AU |
| amazon.nl | NL |
| amazon.in | IN |
amazon.fr WAF limitation: amazon.fr enforces a stricter AWS WAF than other EU domains. Prefer direct product URL scraping (/dp/ASIN) over keyword search on this domain. If search fails, fall back to amazon.de or amazon.co.uk - they share most of the EU catalog.
Output
Search Results
Each product from search results includes:
| Field | Description |
|---|---|
asin | Amazon Standard Identification Number |
title | Product title |
price | Current selling price |
original_price | Original/list price (if discounted) |
discount_percentage | Computed discount percent when both prices are present |
currency | Currency code as displayed on the page (USD, EUR, GBP, JPY, etc.) |
rating | Average customer rating (out of 5) |
reviews_count | Number of customer reviews |
is_prime | Whether the product is Prime eligible |
is_sponsored | Whether the listing is a sponsored ad |
in_stock | Boolean - whether the item is currently purchasable |
image_url | Main product image URL |
url | Direct link to the product page |
brand | Brand or manufacturer name |
badge | Special badges (Best Seller, Amazon's Choice) |
delivery_info | Delivery date information |
page_number | Which search result page the product appeared on |
amazon_domain | The marketplace domain scraped |
search_query | The search term used |
scraped_at | ISO 8601 timestamp |
Product Detail Pages
When scraping direct product URLs or enabling fetchDetails: true on search, additional fields are extracted:
| Field | Description |
|---|---|
description | Full product description text |
features | Bullet-point feature list |
availability | Stock availability status |
seller | Third-party seller name (if not Amazon) |
category | Product category breadcrumb path |
images | List of hi-res gallery image URLs (up to 12) |
bestseller_rank | Amazon's "Best Sellers Rank" position in its category |
bestseller_category | Category label associated with bestseller_rank |
BSR Time-Series Fields
When trackBestsellerRank: true, these fields are added to every product:
| Field | Description |
|---|---|
rank_now | Current BSR (same as bestseller_rank) |
rank_previous | BSR from the previous run (null on first run) |
rank_change | rank_previous - rank_now. Positive = climbed, negative = fell |
rank_peak | Best (lowest-number) rank ever observed for this ASIN |
rank_movement | "new" / "rising" / "falling" / "steady" |
rank_previous_scraped_at | ISO timestamp of the previous snapshot |
hours_since_last_snapshot | Hours between previous snapshot and this run |
Sample Output
{"asin": "B0CHX3QBCH","title": "Apple iPhone 15 Pro, 128GB, Natural Titanium","price": 999.00,"original_price": 1099.00,"discount_percentage": 9.1,"currency": "USD","rating": 4.6,"reviews_count": 2431,"is_prime": true,"is_sponsored": false,"in_stock": true,"image_url": "https://m.media-amazon.com/images/I/81Os1SBkFpL._AC_SL1500_.jpg","url": "https://www.amazon.com/dp/B0CHX3QBCH","brand": "Apple","badge": "Amazon's Choice","delivery_info": "FREE delivery Tomorrow","availability": "In Stock","seller": "Amazon.com","features": ["6.1-inch Super Retina XDR display", "A17 Pro chip", "48MP Main camera", "Titanium design"],"category": "Electronics > Cell Phones & Accessories > Unlocked Cell Phones","bestseller_rank": 4,"bestseller_category": "Unlocked Cell Phones","description": "The iPhone 15 Pro features a titanium design with the A17 Pro chip...","amazon_domain": "amazon.com","search_query": "iphone 15 pro","scraped_at": "2026-04-18T10:15:00Z"}
BSR Rank Movement Summary
A rank_movement_summary rollup item is pushed at the end of each run when a prior snapshot exists:
{"type": "rank_movement_summary","amazon_domain": "amazon.com","search_query": "air fryer","snapshot_at": "2026-04-23T12:00:00+00:00","previous_snapshot_at": "2026-04-22T12:00:00+00:00","climbers_count": 3,"fallers_count": 2,"top_climbers": [{"asin": "B0C...", "rank_previous": 812, "rank_now": 417, "rank_change": 395, "title": "...", "bestseller_category": "..."}],"top_fallers": [{"asin": "B0D...", "rank_previous": 42, "rank_now": 210, "rank_change": -168, "title": "...", "bestseller_category": "..."}]}
Screenshots / Sample Output
What you'll see in Apify Console -> Storage -> Default dataset -> JSON after a daily-scheduled run:
Sample BSR rank-movement output (one row per tracked ASIN):
{"asin": "B0CHX3QBCH","title": "Keychron Q1 Pro QMK/VIA Wireless Mechanical Keyboard","rank_now": 417,"rank_previous": 812,"rank_change": 395,"rank_change_pct": 48.65,"rank_movement": "rising","rank_peak": 390,"bestseller_category": "Electronics > Computer Keyboards","scraped_at": "2026-04-23T12:00:00+00:00"}
Sample Slack alert payload (POSTed to alertWebhookUrl when |rank_change| >= alertRankThreshold):
{"asin": "B0CHX3QBCH","title": "Keychron Q1 Pro QMK/VIA Wireless Mechanical Keyboard","url": "https://www.amazon.com/dp/B0CHX3QBCH","marketplace": "amazon.com","rank_previous": 812,"rank_now": 417,"rank_change": 395,"rank_change_pct": 48.65,"rank_movement": "rising","price": 199.00,"currency": "USD","scraped_at": "2026-04-23T12:00:00+00:00"}
Run a single ASIN to see this output live.
Pricing
This actor uses pay-per-event pricing:
| Event | Price | Description |
|---|---|---|
product-scraped | $0.005 | Each product successfully scraped with data |
rank-tracked | $0.01 | Each ASIN annotated with BSR time-series deltas (only when trackBestsellerRank: true) |
alert-dispatched | $0.002 | Each BSR-alert webhook successfully POSTed (2xx response). Failed webhooks are NOT charged |
ai-analysis-completed | $0.05 | One-time charge when AI competitive analysis is generated |
Skyfire bulk bundle (AI-agent payment rail)
A skyfire-bundle-1000-products event ships at $5.00 per 1,000 products for AI agents paying via the Skyfire JWT rail. Effective rate: $0.005/product - at parity with the raw product-scraped baseline. This is intentional: Skyfire requires a $5 minimum charge per actor invocation, and the bundle aligns with that floor. There is NO per-unit discount - Skyfire-route is purely a payment-rail convenience for AI agents that need single-prepaid-call billing semantics. Pay-as-you-go users via Apify's standard PPE rail get identical per-product pricing. Skyfire is opt-in, not preferred.
Cost examples:
- 100 products = $0.50
- 100 products + AI analysis = $0.55
- 100 products + BSR tracking (60 have BSR) + AI rank report = $0.005 x 100 + $0.01 x 60 + $0.05 = $1.15
- 25-product daily watchlist with 3 webhook alerts/day = $0.005 x 25 + $0.01 x 25 + $0.002 x 3 = $0.381/day ~ $11.43/month - vs. $19-39/month flat for RankBlaze / Keepa rank alerts, with you keeping the full raw catalog data
Export formats: JSON, CSV, Excel - plus 2,000+ app integrations via Apify (Google Sheets, Slack, Zapier, Make, Amazon S3).
vs. commercial alternatives: Rainforest API charges $49+/mo and DataForSEO $50+/mo for Amazon product data APIs with monthly minimums. This actor uses pay-per-event with no subscription: $0.005/product and zero monthly fees.
Quick Start
Minimum working input - scrape 10 products from amazon.com with residential proxy:
{"searchQuery": "wireless headphones","amazonDomain": "amazon.com","maxProducts": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Cost estimate: 10 products x $0.005 = $0.05. Add enableAiAnalysis: true for a one-time +$0.05 competitive report.
Scrape specific products by ASIN
{"productUrls": ["https://www.amazon.com/dp/B0C8S5Y3KV","https://www.amazon.com/dp/B09XS7JWHH"],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Search with AI competitive analysis
{"searchQuery": "standing desk","amazonDomain": "amazon.com","maxProducts": 50,"enableAiAnalysis": true,"llmProvider": "openrouter","openrouterApiKey": "sk-or-...","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
AI analysis examines all scraped products and generates a structured report including: market overview, price sweet spot ranges, top-5 best-value picks, brand share distribution, and opportunity identification. Output is returned as structured JSON alongside the product data.
Track Best Sellers Rank over time
Run once per day on a schedule - each ASIN will emit its rank delta vs. the previous run:
{"searchQuery": "air fryer","amazonDomain": "amazon.com","maxProducts": 50,"trackBestsellerRank": true,"enableAiAnalysis": true,"llmProvider": "openrouter","openrouterApiKey": "sk-or-...","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
First run: every ASIN emits rank_movement: "new" and null deltas (baseline established). Second run onward: every ASIN emits rank_change, rank_movement, and a historical rank_peak. The AI report switches to a rank-movement narrator listing top climbers and fallers with plausible drivers.
Real-time BSR alerts via webhook
{"searchQuery": "mechanical keyboard","amazonDomain": "amazon.com","maxProducts": 25,"trackBestsellerRank": true,"alertWebhookUrl": "https://hooks.zapier.com/hooks/catch/12345/abcde","alertRankThreshold": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Webhook payload shape (one POST per qualifying ASIN):
{"asin": "B0CHX3QBCH","title": "Keychron Q1 Pro QMK/VIA Wireless Mechanical Keyboard","url": "https://www.amazon.com/dp/B0CHX3QBCH","marketplace": "amazon.com","rank_previous": 812,"rank_now": 417,"rank_change": 395,"rank_change_pct": 48.65,"rank_movement": "rising","rank_peak": 390,"bestseller_category": "Electronics > Computer Keyboards","price": 199.00,"currency": "USD","hours_since_last_snapshot": 24.03,"scraped_at": "2026-04-23T12:00:00+00:00"}
Each webhook includes an X-Actor-Run-Id header for correlating alerts with the run in the Apify Console. Only ASINs whose absolute rank_change is >= alertRankThreshold fire (both climbers and fallers). A per-run cap of 250 webhooks prevents runaway misconfigurations.
MCP Quickstart - call this actor from Claude / Cursor / ChatGPT
Install the Apify MCP server in your AI agent of choice:
# Claude Codeclaude mcp add apify -- npx -y @apify/actors-mcp-server --token YOUR_APIFY_TOKEN# Claude Desktop / Cursor (add to mcp.json):{"mcpServers":{"apify":{"command":"npx","args":["-y","@apify/actors-mcp-server","--token","YOUR_APIFY_TOKEN"]}}}
Then prompt the agent:
"Use the harvestlab/amazon-scraper actor on Apify to find the top 10 wireless earbuds under $100 on amazon.com sorted by review count, with rating and ASIN. Push the results back as JSON."
The agent will discover the actor's dataset_schema.json, generate the right input, run it, and pipe the typed output back into your conversation.
Use with AI agents
amazon-scraper output is agent-ready: typed product dicts with BSR rank, time-series deltas, currency, and AI sentiment across 11 marketplaces - wrap it as a single tool and your product-research, arbitrage, or competitive-intel agent gets cross-marketplace BSR + price intelligence that commodity Amazon scrapers don't expose. See Apify's actor-templates - specifically js-langchain and js-langgraph-agent - for end-to-end skeletons.
LangChain tool wrapper
from langchain_core.tools import Toolfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")def _track_amazon_products(args: dict) -> list:run = client.actor("harvestlab/amazon-scraper").call(run_input={"productUrls": args["productUrls"],"amazonDomain": f"amazon.{args.get('marketplace', 'com').lower()}","trackBestsellerRank": True,"fetchDetails": True,})return list(client.dataset(run["defaultDatasetId"]).iterate_items())track_amazon_products = Tool(name="track_amazon_products",description="Scrape Amazon products with BSR rank + price across 11 marketplaces (US/UK/DE/FR/IT/ES/NL/CA/JP/AU/IN). Input: {productUrls: [str], marketplace: str}.",func=_track_amazon_products,)# track_amazon_products.invoke({"productUrls": ["https://www.amazon.com/dp/B0CHX3QBCH"], "marketplace": "US"})
LangGraph price-tracking node
from langgraph.graph import StateGraph, ENDfrom typing import TypedDictfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")class PriceState(TypedDict):asins: list[str]threshold: intproducts: list[dict]alert: booldef track_node(state: PriceState) -> PriceState:urls = [f"https://www.amazon.com/dp/{a}" for a in state["asins"]]run = client.actor("harvestlab/amazon-scraper").call(run_input={"productUrls": urls, "trackBestsellerRank": True, "fetchDetails": True,})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())breached = any(abs(i.get("rank_change") or 0) >= state["threshold"] for i in items)return {**state, "products": items, "alert": breached}graph = StateGraph(PriceState)graph.add_node("track", track_node)graph.set_entry_point("track")graph.add_edge("track", END)# graph.compile().invoke({"asins": ["B0CHX3QBCH"], "threshold": 50, "products": [], "alert": False})
Troubleshooting
Getting 403 / 429 / CAPTCHA errors
Amazon's WAF is blocking the request. Steps to resolve:
- Switch to RESIDENTIAL proxy (
apifyProxyGroups: ["RESIDENTIAL"]) if you're using datacenter IPs. - Set
apifyProxyCountryto match the target domain (e.g.USfor amazon.com,DEfor amazon.de). Mismatched geo triggers harsher WAF treatment. - Retry the run - WAF posture varies by hour and IP batch. A fresh residential IP from the same country often succeeds.
- If scraping
amazon.fr, prefer direct product URLs (productUrls) over keyword search - search endpoints on that domain are blocked far more aggressively.
Prices appearing in the wrong currency
The proxy IP's geographic location determines which currency Amazon renders, not the domain. Set apifyProxyCountry to the matching country code (see the table in the Input section above).
No products returned (empty dataset)
- Verify the
amazonDomainmatches the locale of yoursearchQuery(e.g. German keyword withamazon.de). - Test with a simple English keyword like "laptop" on
amazon.comwithmaxProducts: 5to isolate the issue. - Retry with fresh proxy IPs - if the first IP batch is flagged, a new run often succeeds.
- Check the actor log for WAF / CAPTCHA detection messages. If present, follow the 403/429 steps above.
Webhooks not firing
- Webhooks only fire on the second run onward - first run establishes the baseline, so there is no prior
rank_changeto evaluate. - Ensure
trackBestsellerRank: trueis set (or providealertWebhookUrl- it auto-enables BSR tracking). - Confirm the URL is reachable and returns a 2xx response. Only successful dispatches are billed.
- Check the
bsr_alert_dispatch_summaryitem pushed to the dataset for per-webhook results.
BSR fields are null / rank_movement is "new"
This is expected on the first run - no prior snapshot exists yet. Schedule the actor daily and deltas appear from the second run onward. Note: not all products carry a BSR - Amazon only assigns rank to products with at least one sale.
amazon.fr returning no results
amazon.fr runs the strictest AWS WAF of all supported EU domains. Workarounds: (1) retry the run, (2) use direct product URLs (/dp/ASIN) which succeed more reliably than keyword search, or (3) fall back to amazon.de / amazon.co.uk / amazon.it which share much of the EU catalog.
amazon.co.jp prices showing in USD/EUR
Amazon localizes pages based on requesting IP. Set apifyProxyCountry: "JP" to get a Japanese exit IP and genuine JPY results.
Legal and Compliance
This actor is provided as a technical tool. Users are responsible for ensuring their use complies with:
- Amazon's Terms of Service and Conditions of Use
- Applicable data protection laws (GDPR, CCPA, etc.)
- Local laws regarding web scraping and data collection
Amazon's Terms of Service restrict automated access to their platform. Use this tool responsibly and at your own risk. This actor does not store or process personal data - it only extracts publicly visible product catalog information.
The developer of this actor is not responsible for any misuse or legal consequences arising from its use.
Related Actors
- eBay Scraper - pair with Amazon to spot multi-marketplace arbitrage between Amazon catalog prices and eBay sold-comp data across 13 country domains.
- Bol.com Scraper - extend Amazon EU price intel into the Netherlands and Belgium retail market with NL/BE price-tier history.
- Shopify Scraper - round out marketplace research with DTC store pricing pulled from any Shopify storefront's
/products.jsonAPI.