Amazon Product Scraper: Buy Box, Seller & MAP Monitor
Pricing
from $3.99 / 1,000 results
Amazon Product Scraper: Buy Box, Seller & MAP Monitor
Amazon Product Scraper monitors product listings, Buy Box data, seller details, prices, and MAP pricing. Extract ASINs, offers, ratings, availability, seller information, and pricing changes for competitor tracking, price monitoring, and e-commerce intelligence.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Amazon Scraper — Extract Products, Buy Box Offers and Sellers
Amazon Buy Box, Seller & MAP Monitor scrapes full Amazon product detail — title, price, images, rating, breadcrumbs, variants, bestseller ranks — and layers a Buy Box / seller / MAP monitor on top: who currently holds the Featured Offer, their fulfillment channel (Amazon retail, FBA, or FBM), how many sellers are competing, whether an unauthorized seller is hijacking the listing, and whether any offer sits below your Minimum Advertised Price. Feed it /dp/ product URLs or /s?... search and category URLs on any Amazon domain. Every run returns typed JSON — no HTML parsing, no regex on your end. This guide covers every input and output field plus three deployment patterns: real-time MAP enforcement, scheduled Buy Box checks, and bulk catalogue builds.
🧭 What Does Amazon Buy Box, Seller & MAP Monitor Do?
Amazon Buy Box, Seller & MAP Monitor is an Apify Actor that fetches Amazon product and offer-listing pages over residential proxies and turns them into structured records covering three entities: products (full detail-page data), Buy Box offers (the competing seller list per ASIN), and sellers (storefront identity and, optionally, contact details). No Amazon account or login is required — every field comes from publicly rendered product and offer pages.
- Scrapes individual
/dp/product pages or fans out across/s?...search and category pages - Identifies the current Buy Box (Featured Offer) winner and their fulfillment channel —
AMZ,FBA, orFBM - Pulls the full competing-offer list per ASIN (price, condition, shipping, Prime eligibility, seller identity)
- Flags offers from sellers not on your
authorizedSellersallow-list (hijacker detection) - Flags offers priced below your
mapPrice(MAP-violation detection) - Optionally scrapes seller storefront details (business name, address, phone, rating) and per-variant prices
- Works across any Amazon domain (amazon.com, amazon.de, amazon.co.uk, and others) with automatic or manual proxy-country selection
Features & Capabilities
The Actor combines a full Amazon product-detail crawler with a purpose-built Buy Box / seller / MAP layer, so you don't have to pair a separate scraper with your own offer-list parser.
Core features
- Full product detail —
title,price,listPrice,brand,stars,starsBreakdown,reviewsCount,breadCrumbs,description,features,productOverview,bestsellerRanks,variantAsins, gallery and high-resolution images, A+ content, and more - Buy Box resolution —
buyBoxSeller,buyBoxSellerName,buyBoxFulfillment,buyBoxPricederived from the pinned offer in Amazon's All-Offers-Display (AOD) list - Seller-count and full offer list —
sellerCountandsellerOffers[], each offer carrying price, condition, shipping, Prime flag,soldBy,shipsFrom, and an inferredfulfillmentchannel - Hijacker detection — supply
authorizedSellers; every offer from a seller not on the list (Amazon retail is always authorized) lands inunauthorizedSellersand setshasUnauthorizedSeller=true - MAP-violation detection — supply
mapPrice; every offer priced below it lands inoffersBelowMapwith abelowByamount and setsmapViolation=true - Search and category fan-out — one start URL can expand into up to
maxItemsPerStartUrlproduct rows acrossmaxSearchPagesPerStartUrlpages - Captcha handling — optional CapSolver integration to solve Amazon's image captcha automatically
How Amazon Buy Box, Seller & MAP Monitor compares to other Amazon scrapers
| Feature | This Actor | ryanclinton/amazon-product-scraper | clearpath/amazon-buybox-api |
|---|---|---|---|
| Output format | Typed JSON dataset | Typed JSON dataset | Typed JSON dataset |
| Buy Box winner + fulfillment | ✅ | ✅ (claims buybox change detection) | ✅ |
| MAP-violation flag with allow-list-based hijacker detection | ✅ | Not documented | Not documented |
| Cross-run diffing (price/Buy Box change vs previous run) | ❌ — each run is independent | ✅ claimed ("operational memory," multi-run trajectory) | ✅ claimed (named key-value store snapshot) |
| Pricing model | Pay-per-event (row_result) | Pay-per-event ($0.15/product, per their listing) | Flat monthly rental ($29/mo, per their listing) |
| Multi-domain in one run | ✅ (any Amazon domain per URL) | Not documented in excerpt reviewed | ✅ (8 named domains, per their listing) |
| Seller storefront enrichment (business name, phone, address) | ✅ optional (scrapeSellers) | Not documented | Not documented |
Competitor claims above are as observed on their public Apify Store listings on 2026-07-26 and are not independently verified against their source code. If your workflow depends on native run-over-run diffing (e.g. "alert me only when the Buy Box changes hands"), read "Is data fresh, and does it remember previous runs?" in the FAQ below before assuming this Actor does that natively.
If your use case is feeding structured data to an LLM or a repricing pipeline, the output-format row is the decision-maker — parsing raw Amazon HTML inside an agent loop or a cron job is a reliability failure mode, not a feature.
When another tool might suit you better
If you need Amazon's own Selling Partner API-grade data for your own seller account (orders, inventory, settlement reports), this Actor is the wrong tool — it only reads public storefront pages, the same way a shopper does, and cannot access your private seller-account data. If you specifically need built-in run-over-run change tracking without building your own diff step, a competitor that stores a persistent snapshot (as claimed on the clearpath/amazon-buybox-api listing, reviewed 2026-07-26) saves you that integration work; this Actor's Strategy 2 below shows the equivalent pattern built externally.
Amazon Buy Box, Seller & MAP Monitor within the Scrapio data stack
This Actor covers Amazon products, Buy Box offers, and sellers with monitoring fields layered on top. For lightweight, fields-only search results without the detail-page crawl, use Amazon Search Products Scraper. For bulk ASIN-list lookups without URL discovery, use Amazon ASIN Scraper Pay Per Events. For discount and deal discovery rather than Buy Box tracking, use Amazon Today's Deals Scraper By Discount, Price & Category.
Why do developers and data teams scrape Amazon?
🏢 Brand teams and FBA sellers protecting Buy Box and MAP
A brand manager pastes their ASINs into categoryOrProductUrls, sets authorizedSellers to their approved reseller list and mapPrice to their published MAP. Every run returns hasUnauthorizedSeller and mapViolation flags per ASIN, with the offending offers' price, seller name, and belowBy amount already computed — ready to route into a takedown-request or repricing workflow without writing offer-comparison logic by hand.
📊 AI training data and RAG indexing
description, features, productOverview, and aPlusContent are the high-information text fields for RAG indexing — they carry the same specification language a shopper reads before buying. bestsellerRanks, starsBreakdown, and productOverview (a consistent key/value list scraped from Amazon's technical-specification tables) are the most structurally consistent fields for training data, since they follow the same shape across nearly every listing regardless of category.
📱 Competitive and market intelligence
Track buyBoxSellerName and buyBoxFulfillment across a competitor's catalogue to see how often they hold the Featured Offer and whether they're fulfilling through Amazon (FBA) or themselves (FBM). Combined with sellerCount and sellerOffers[].price, this gives a per-listing view of how crowded and how price-competitive a category is, without manually opening the "see all buying options" panel on every listing.
🔬 Research and academic use
price, stars, reviewsCount, bestsellerRanks, and sellerOffers support market-structure research — price dispersion, review-count-to-rank correlation, third-party seller prevalence — using only publicly accessible listing data. No account access or private data is involved.
🎥 Product and SaaS development
The full field set is a ready-made backend for a repricing dashboard, a MAP-compliance tool, or a Buy Box alert product: pair mapViolation / hasUnauthorizedSeller with Apify Schedules and a webhook, and you have the enforcement half of a compliance SaaS without building an Amazon crawler first.
🍚 Input Parameters
All 21 parameters, read directly from .actor/actor.json, in schema order.
| Parameter | Required | Type | Default | Constraints | Description |
|---|---|---|---|---|---|
categoryOrProductUrls | Yes | array | — | stringList | Amazon product URLs (/dp/B0B3BVWJ6Y) to monitor, or category/search URLs (/s?k=keyboard) to fan out across many listings. Any Amazon domain works. Accepts a plain string or {"url": "..."}. |
maxItemsPerStartUrl | no | integer | 10 | min 0 | Cap on how many products to scrape and monitor per start URL. |
maxSellerOffers | no | integer | 20 | min 0 | How many competing offers to pull per product when identifying the Buy Box winner and counting sellers. 0 turns Buy Box monitoring off entirely. |
authorizedSellers | no | array | [] | stringList | Seller names or seller IDs you authorize to sell this product. Any offer from a seller NOT on this list (Amazon retail is always allowed) is reported in unauthorizedSellers and sets hasUnauthorizedSeller=true. Leave empty to skip the check. |
mapPrice | no | string | — | textfield, nullable | Your Minimum Advertised Price as a decimal, e.g. 19.99. Every offer priced below this is reported in offersBelowMap with how far below, and sets mapViolation=true. Leave blank to skip MAP checks. |
language | no | string | — | enum (24 values: cs, da, de, en, es, fr, nl, pl, pt, sv, tr, he, ar, mrta, hi, bn, ta, te, kn, ml, ko, zh_CN, zh_TW, ja) | Language to use on Amazon. Each Amazon domain supports a different language set; an unsupported choice falls back to the domain's default. |
proxyCountry | no | string | AUTO_SELECT_PROXY_COUNTRY | enum (AUTO_SELECT_PROXY_COUNTRY, NO_PROXY, plus every ISO country) | Avoids geo-blocking and shows region-relevant products. By default the country is auto-selected from the Amazon domain used. |
maxSearchPagesPerStartUrl | no | integer | 9999 | min 1 | Maximum number of search pages to scrape per start URL. Works together with maxItemsPerStartUrl — the scraper stops at whichever limit is hit first. |
maxProductVariantsAsSeparateResults | no | integer | — | min 0 | Maximum number of product variants to scrape and output as their own separate result rows. Most variant-detail changes are already in variantDetails; this increases requests and scraping time. |
maxOffers | no | integer | 0 | min 0 | Maximum number of offers to scrape per product into the base offers[] field. Increases requests and scraping time. |
scrapeSellers | no | boolean | false | — | Extract further seller information. Scrapes the featured/main seller; with maxOffers set, scrapes the seller of each offer too. Increases requests and scraping time. |
ensureLoadedProductDescriptionFields | no | boolean | false | — | Always load seller-editable description fields (description, aPlusContent, attributes, etc.) that Amazon sometimes hides as a blocking measure. Increases requests and may extend scraping time. |
useCaptchaSolver | no | boolean | false | — | Automatically solve Amazon captchas via CapSolver, reducing retries. Requires capSolverApiKey or the CAPSOLVER_API_KEY env var; without a key this is a no-op. Works best on amazon.com. After a captcha solve, Amazon hides attributes, manufacturerAttributes, and bestsellerRanks on that fetch. |
capSolverApiKey | no | string (secret) | — | textfield, nullable | Your CapSolver API key, used only when useCaptchaSolver is on. Falls back to the CAPSOLVER_API_KEY environment variable. Leave blank if you don't use captcha solving. |
scrapeProductVariantPrices | no | boolean | false | — | Extract prices for each product variant into priceVariants[]. Increases requests and scraping time. |
scrapeProductDetails | no | boolean | true | — | If enabled (default), extracts each product in full detail. If disabled, only quick product-tile information from the category/search page is returned — faster, lighter searches. |
maxConcurrentRequests | no | integer | 10 | min 1, max 20 | Number of concurrent product-page requests. |
countryCode | no | string | — | enum, nullable | Delivery-location country code used to localize prices, offers, and shipping. |
zipCode | no | string | — | textfield, nullable | Delivery-location zip code, for more precise localization in larger countries. |
locationDeliverableRoutes | no | array | ["PRODUCT", "SEARCH", "OFFERS"] | enum items: PRODUCT, SEARCH, OFFERS | Which page types the delivery-location settings apply to. Restricting this speeds up runs that don't need localized data on every page type. |
proxyConfiguration | no | object | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} | proxy editor | Apify proxy settings. Residential proxy is recommended for best results and fewer blocks. |
capSolverApiKey is marked isSecret in the input schema — the Apify Console masks it in the UI and in logs.
{"categoryOrProductUrls": ["https://www.amazon.com/dp/B0B3BVWJ6Y"],"maxSellerOffers": 20,"authorizedSellers": ["MyBrand Official", "A1B2C3D4E5F6G7"],"mapPrice": "19.99","scrapeSellers": true,"maxConcurrentRequests": 10,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Supported URL types and input formats
- Single product —
https://www.amazon.com/dp/B0B3BVWJ6Yorhttps://www.amazon.com/gp/product/B0B3BVWJ6Y— scraped and monitored directly, one row out. - Search or category page —
https://www.amazon.com/s?k=keyboard— fanned out into up tomaxItemsPerStartUrlproduct rows acrossmaxSearchPagesPerStartUrlpages. - Object form —
{"url": "https://www.amazon.de/dp/B0B3BVWJ6Y"}— accepted alongside plain strings in the samecategoryOrProductUrlsarray; any Amazon domain (amazon.de, amazon.co.uk, etc.) is recognized from the URL itself.
📦 Output Format
Every result is a typed JSON row pushed to the Apify Dataset as it is scraped — no post-processing wait. Two row shapes exist depending on scrapeProductDetails: the full detail row (default) or a lighter search-tile row when detail scraping is turned off.
Output for a product (detail row, scrapeProductDetails: true)
{"title": "Example Wireless Mechanical Keyboard","url": "https://www.amazon.com/dp/B0B3BVWJ6Y","asin": "B0B3BVWJ6Y","originalAsin": "B0B3BVWJ6Y","price": { "value": 79.99, "currency": "$" },"inStock": true,"inStockText": "In Stock","listPrice": { "value": 99.99, "currency": "$" },"brand": "ExampleBrand","author": null,"shippingPrice": null,"stars": 4.5,"starsBreakdown": { "5star": 0.68, "4star": 0.18, "3star": 0.07, "2star": 0.03, "1star": 0.04 },"reviewsCount": 3241,"answeredQuestions": 42,"breadCrumbs": "Electronics > Computers & Accessories > Keyboards","videosCount": 0,"visitStoreLink": { "text": "Visit the ExampleBrand Store", "url": "https://www.amazon.com/stores/..." },"thumbnailImage": "https://m.media-amazon.com/images/I/....jpg","galleryThumbnails": ["https://m.media-amazon.com/images/I/....jpg"],"highResolutionImages": ["https://m.media-amazon.com/images/I/...SL1500_.jpg"],"importantInformation": null,"sustainabilityFeatures": null,"description": "Full product description text...","features": ["Hot-swappable switches", "USB-C connectivity", "RGB backlight"],"attributes": [],"productOverview": [{ "key": "Connectivity Technology", "value": "USB, Bluetooth" }],"variantAsins": ["B0B3BVWJ6Z", "B0B3BVWK01"],"variantDetails": [],"reviewsLink": "/product-reviews/B0B3BVWJ6Y?reviewerType=all_reviews","hasReviews": true,"delivery": "Tuesday, July 28","fastestDelivery": "Monday, July 27","returnPolicy": "Return policy text...","support": "Product support text...","variantAttributes": [],"manufacturerAttributes": [],"seller": { "id": "A1B2C3D4E5F6G7", "url": "https://www.amazon.com/sp?seller=A1B2C3D4E5F6G7", "name": "MyBrand Official", "businessName": null, "phone": null, "address": null },"bestsellerRanks": [{ "rank": 12, "category": "Keyboards" }],"isAmazonChoice": false,"amazonChoiceText": null,"bookDescription": null,"priceRange": null,"aPlusContent": "A+ module text...","brandStory": null,"productComparison": null,"aiReviewsSummary": null,"monthlyPurchaseVolume": "200+ bought in past month","productPageReviews": [],"productPageReviewsFromOtherCountries": [],"locationText": "New York 10001","loadedCountryCode": "US","offers": [],"totalOfferCount": 6,"unNormalizedProductUrl": "https://www.amazon.com/dp/B0B3BVWJ6Y","categoryPageData": { "pageNumber": 1, "saleSummary": null, "isSponsored": false, "bestsellerBadge": null, "productPosition": 1 },"input": "https://www.amazon.com/dp/B0B3BVWJ6Y","sellerOffers": [ { "...": "see Output for a Buy Box offer below" } ],"offerSource": "aod","buyBoxSeller": { "name": "MyBrand Official", "id": "A1B2C3D4E5F6G7", "url": "https://www.amazon.com/sp?seller=A1B2C3D4E5F6G7", "fulfillment": "FBA", "shipsFrom": "Amazon.com", "price": { "value": 79.99, "currency": "$" } },"buyBoxPrice": { "value": 79.99, "currency": "$" },"buyBoxSellerName": "MyBrand Official","buyBoxFulfillment": "FBA","sellerCount": 6,"mapPrice": 19.99,"offersBelowMap": [],"mapViolation": false,"unauthorizedSellers": [],"hasUnauthorizedSeller": false}
Fields from sellerOffers onward are the Buy Box / seller / MAP monitor layer — they are added to every detail row, not just rows with hits. When authorizedSellers is empty, unauthorizedSellers and hasUnauthorizedSeller are null rather than a fabricated []/false; the same is true for offersBelowMap/mapViolation when mapPrice is not set — so a false in the dataset always means "checked, no violation," never "not checked." If scrapeProductVariantPrices is true, a priceVariants array ([{asin, url, price}]) is added as well; it is otherwise absent from the row rather than null.
Output for a Buy Box offer
Each entry in sellerOffers[] (and in the base offers[] array when maxOffers is set):
{"price": { "value": 79.99, "currency": "$" },"shippingPrice": null,"condition": "New","isPrime": true,"soldBy": "MyBrand Official","shipsFrom": "Amazon.com","fulfillment": "FBA","isBuyBoxWinner": true,"seller": { "id": "A1B2C3D4E5F6G7", "name": "MyBrand Official", "url": "https://www.amazon.com/sp?seller=A1B2C3D4E5F6G7" }}
fulfillment is inferred from the offer's Sold-by / Ships-from text: AMZ when Amazon both sells and ships it, FBA when a third party sells it but Amazon ships it, FBM when the seller ships it themselves, and null when neither field is present. isBuyBoxWinner is true on exactly the first (pinned) offer returned by Amazon's All-Offers-Display list.
When scrapeProductDetails is false, rows are the lighter search-tile shape instead — no offer or Buy Box fields:
{"asin": "B0B3BVWJ6Y","title": "Example Wireless Mechanical Keyboard","url": "https://www.amazon.com/dp/B0B3BVWJ6Y","thumbnailImage": "https://m.media-amazon.com/images/I/....jpg","price": { "value": 79.99, "currency": "$" },"stars": 4.5,"reviewsCount": 3241,"isSponsored": false,"categoryPageData": { "productPosition": 1, "isSponsored": false }}
Schema stability and export options
Field names stay stable across runs; when Amazon's front end changes, fields that can no longer be located are returned null (or [] for list fields) rather than dropped from the row, so downstream consumers don't need to defensively check for missing keys. Every dataset row is pushed under the row_result charged event, so what you see in the dataset is exactly what you're billed for — no separate, uncharged accounting rows are mixed in. Results are available from the Apify Console or apify_client in JSON, CSV, Excel, XML, or RSS, the standard Apify Dataset export formats.
💡 Amazon Buy Box, Seller & MAP Monitor Strategy Guide
🎯 Strategy 1: Real-time MAP enforcement pipeline
Trigger a run whenever a new product enters your MAP-monitoring list: pass its URL in categoryOrProductUrls with mapPrice set to your published MAP and authorizedSellers set to your reseller allow-list. Read mapViolation, offersBelowMap, hasUnauthorizedSeller, and unauthorizedSellers off the returned row and write them straight into your compliance system or trigger a takedown-request workflow — no offer-comparison logic to write, the Actor already resolved it against your inputs.
🎯 Strategy 2: Scheduled Buy Box monitoring and alerting
Set up an Apify Schedule to run the Actor daily or hourly against your ASIN list. This Actor does not persist state between runs itself — each run's dataset is independent, so build the diff externally: keep the previous run's dataset (or export it to your own database keyed by asin), and after each new run compare buyBoxSellerName and price.value against the stored values for the same ASIN. Alert only on the delta that matters — a Buy Box seller change or a price move past your threshold — using apify_client to pull the latest dataset via client.dataset(run["defaultDatasetId"]).iterate_items().
🎯 Strategy 3: Bulk catalogue dataset build
Pass a category or search URL with maxItemsPerStartUrl and maxSearchPagesPerStartUrl set to cover the catalogue depth you need, and scrapeProductDetails: true to get full rows rather than search tiles. Run several such start URLs in one call (categoryOrProductUrls accepts a mixed list of product and search/category URLs) and export the resulting dataset to CSV or JSON for a research or BI dataset. maxConcurrentRequests (1–20) is the only documented concurrency control; there is no other published throughput ceiling for this Actor.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time MAP enforcement | Brand teams reacting to a specific listing now | On-demand single-URL run | JSON row with mapViolation / hasUnauthorizedSeller flags |
| Scheduled Buy Box monitoring | Tracking Buy Box or price changes over time | Apify Schedule + external diff against the prior dataset | JSON dataset, compared run-over-run outside the Actor |
| Bulk catalogue build | Research, BI, or training datasets | One or more search/category start URLs in a single run | Dataset exported to CSV/JSON/Excel |
🌴 Related Amazon Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| Amazon Search Products Scraper | Amazon search-result product data by keyword or search URL — no Buy Box/seller layer |
| Amazon ASIN Scraper Pay Per Events | Full product detail from a plain ASIN list, across 20 storefronts |
| Amazon Today's Deals Scraper By Discount, Price & Category | Amazon's Today's Deals feed, filtered by discount, price, and category |
How to integrate Amazon Buy Box, Seller & MAP Monitor with your stack
Amazon Buy Box, Seller & MAP Monitor works with any language or tool that can make an HTTP request through the Apify API — it is run and read exclusively through the Apify platform (Console, API, and official SDKs); there is no separate signup or API key outside your Apify account.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run_input = {"categoryOrProductUrls": ["https://www.amazon.com/dp/B0B3BVWJ6Y","https://www.amazon.com/dp/B0CL61F39H",],"authorizedSellers": ["MyBrand Official"],"mapPrice": "19.99",}run = client.actor("<YOUR_USERNAME>/amazon-product-scraper-buy-box-seller-monitor").call(run_input=run_input)rows = []for item in client.dataset(run["defaultDatasetId"]).iterate_items():rows.append({"asin": item.get("asin"),"buyBoxSellerName": item.get("buyBoxSellerName"),"mapViolation": item.get("mapViolation"),"hasUnauthorizedSeller": item.get("hasUnauthorizedSeller"),})import csvwith open("buybox_report.csv", "w", newline="") as f:writer = csv.DictWriter(f, fieldnames=rows[0].keys())writer.writeheader()writer.writerows(rows)
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<YOUR_USERNAME>/amazon-product-scraper-buy-box-seller-monitor').call({categoryOrProductUrls: ['https://www.amazon.com/dp/B0B3BVWJ6Y'],mapPrice: '19.99',});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => {if (item.mapViolation) {console.log(`MAP violation on ${item.asin}: ${item.offersBelowMap.length} offer(s) below MAP`);}});
Async and scheduled pipelines
For large ASIN lists or recurring checks, don't wait on the run synchronously — start it with client.actor(...).start(run_input=...) and poll or use an Apify webhook on the ACTOR.RUN.SUCCEEDED event to pull the dataset once it finishes. For recurring monitoring, use an Apify Schedule to trigger the run on a cron expression instead of managing your own scheduler.
Who Needs This? (Use Cases & Industries)
🏢 Brand protection and marketplace management agencies
An agency managing MAP compliance for several brands runs one call per client catalogue with each brand's mapPrice and authorizedSellers, then routes every ASIN with mapViolation=true or hasUnauthorizedSeller=true into that client's weekly report — without manually opening the offer-listing page for each of hundreds of ASINs.
📊 Revenue and pricing analysts
Analysts pull buyBoxPrice, sellerCount, and sellerOffers[].price across a competitive set to model price elasticity and Buy Box win rate by fulfillment channel (FBA vs FBM), feeding the numbers straight into a BI tool from the exported CSV/JSON dataset.
📱 Repricing and monitoring SaaS builders
Builders wire mapViolation, hasUnauthorizedSeller, and buyBoxSellerName into their own product as the enforcement signal layer, pairing a scheduled run with their own diff/alert logic (Strategy 2 above) rather than building an Amazon offer-list parser from scratch.
🔬 Researchers
Market-structure researchers use price, stars, reviewsCount, bestsellerRanks, and sellerOffers for price-dispersion and seller-competition studies, using only publicly accessible listing data with no account access involved.
Is it legal to scrape Amazon?
Scraping publicly accessible web pages is generally lawful in the United States — in hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019, reaffirmed on remand 2022), the Ninth Circuit held that scraping data not behind a login wall does not violate the Computer Fraud and Abuse Act. That said, Amazon's Conditions of Use prohibit automated data collection, so running this Actor against Amazon may put you in breach of contract with Amazon — a civil matter between you and Amazon, not a criminal one, and not the same question as whether scraping itself is lawful. This Actor returns product, pricing, and seller-storefront data that Amazon publishes for any visitor; it is business and catalogue data, not the kind of consumer personal data that triggers GDPR/CCPA obligations. Seller businessName, phone, and address fields (when scrapeSellers is on) reflect the disclosures Amazon requires third-party sellers to publish on their storefront, not private consumer data — treat them with ordinary care regardless. Amazon Buy Box, Seller & MAP Monitor returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications.
❓ Frequently asked questions
Does Amazon Buy Box, Seller & MAP Monitor work without an Amazon account?
Yes. No Amazon account, login, or API credentials are required — the Actor fetches the same publicly rendered product, search, and offer-listing pages any visitor sees.
How does it handle Amazon's anti-scraping measures?
It rotates coherent browser TLS-fingerprint/user-agent profiles per session, routes requests through Apify residential proxies with sticky per-session IPs, warms each session against Amazon's homepage before use, and retries blocked or "lite page" responses with exponential backoff and jitter. When a session's block rate crosses an internal threshold it is retired and replaced rather than reused. An optional CapSolver integration (useCaptchaSolver + capSolverApiKey) can solve Amazon's image captcha automatically.
Can I run it at scale without getting blocked?
maxConcurrentRequests caps concurrency at 1–20; no other throughput ceiling is documented for this Actor. Block rates depend on proxy quality and target-domain traffic patterns, which are not values this Actor publishes or guarantees — use residential proxies (the default) for the lowest observed blocking.
Is data fresh, and does it remember previous runs?
Every run fetches live pages — nothing is cached between runs. However, the Actor does not persist state across runs on its own: it writes its final run summary only to that run's own default key-value store (an ephemeral, run-scoped store, not a named/shared one), so there is no built-in "what changed since last time" comparison. If you need run-over-run Buy Box or price change detection, build it externally by keeping each run's dataset (or exporting rows to your own database keyed by asin) and diffing the next run against it — see Strategy 2 in the Strategy Guide above.
Which fields work best for AI training and RAG indexing?
For RAG, index description, features, productOverview, and aPlusContent — the highest-information free-text fields, in the same specification language a shopper reads. For training data, bestsellerRanks, starsBreakdown, and productOverview are the most structurally consistent fields across listings and categories. All fields return as typed primitives (strings, numbers, booleans, or nested objects/arrays) — no string-encoded numbers to parse before use.
Does this Actor handle personal data?
No, not by default. The core output is product, pricing, and seller-storefront data that Amazon publishes to any visitor. The optional scrapeSellers seller-enrichment fields (businessName, phone, address) are business-disclosure data Amazon requires sellers to publish, not consumer personal data — but if you store or reuse it, the lawful basis for that storage and use sits with you, not with this Actor.
Does Amazon Buy Box, Seller & MAP Monitor work with Claude, ChatGPT, and other AI agent tools?
It is callable as a standard Apify Actor run by any agent framework that can hit the Apify API — via apify_client, a direct REST call, or an Apify integration node. There is no dedicated MCP server for this Actor; every response is typed JSON, so no HTML parsing step is needed before passing results into an LLM context window.
How does this compare to other Amazon Buy Box scrapers?
ryanclinton/amazon-product-scraper (reviewed 2026-07-26) advertises a "ranked incident queue" with review-sentiment defect detection and multi-run "operational memory" that deepens over several scheduled runs — capabilities this Actor does not have; this Actor instead returns a flat, fully-documented row per product with the Buy Box/MAP fields resolved on every run. clearpath/amazon-buybox-api (reviewed 2026-07-26) advertises named-key-value-store snapshotting for automatic run-over-run change flags across 8 named Amazon domains at a flat monthly rental; this Actor works on any Amazon domain via URL and prices per result row instead, but leaves change-detection to the pattern in Strategy 2 above rather than doing it internally.
Disclaimer
Amazon Buy Box, Seller & MAP Monitor extracts only publicly available data from Amazon. This tool is intended for lawful use cases only. Users are responsible for complying with Amazon's Conditions of Use and applicable data protection laws in their jurisdiction.