Amazon Offers Scraper (All Offers Display)
Pricing
from $3.00 / 1,000 results
Amazon Offers Scraper (All Offers Display)
Scrape every seller offer for one or more Amazon ASINs from the All-Offers-Display panel: condition, price, seller name/rating, ships-from, delivery estimate, and buy-box winner flag.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Amazon Offers Scraper
Scrape every seller offer for one or more Amazon ASINs from the All-Offers-Display panel (the "Other Sellers on Amazon" / "See All Buying Options" list). Get condition, price, seller name and rating, ships-from, delivery estimate, and which offer currently wins the buy box -- for as many products as you need, across multiple marketplaces and destinations.
What this actor does
- Input by ASIN or by product URL -- mix and match freely
- Every offer, not just the buy box -- new, used, and third-party seller offers on the same listing
- Condition filter -- restrict to New, Used, Collectible, or Renewed only, or All (each matched exactly -- a "Used only" filter never silently includes Collectible/Renewed offers)
- Fulfillment type filter -- restrict to Fulfilled by Amazon (FBA), Fulfilled by Merchant (FBM), or sold-and-shipped-by-Amazon
- Destination-aware -- set a delivery country / postal code, since offer sets and delivery estimates change by destination
- Buy-box detection -- the current buy-box winner is explicitly flagged, never guessed from list position
- Empty fields are omitted
Output per offer
productAsin-- the product ASIN this offer belongs toofferPosition-- 1-based order the offer appeared in on the page (buy box is always position 1)condition,subCondition-- e.g."Used"/"Like New"conditionNote-- extra condition detail text, when Amazon shows oneprice--{ value, currency, display }unitPrice--{ value, currency, display }, when Amazon shows a per-unit pricelistPrice--{ value, currency, display }, the strikethrough "List Price" Amazon shows for this specific offer, only present when Amazon's own DOM carries it (typically the pinned/buy-box offer on a discounted item) -- never derived/computedsavingsPercent-- integer percent-off (e.g.30for "-30%"), only present alongside a reallistPricedeliveryEstimate-- the delivery promise text shown for this offerisFreeDelivery--true/false, only when the delivery text gives explicit evidence either way (e.g. "FREE delivery..." vs. a stated shipping charge); omitted when ambiguousshippingPrice--{ value, currency, display }, only present when Amazon shows an explicit paid-shipping amountshipsFrom-- who ships the itemsoldBy--{ name, sellerId, profileUrl }sellerRating,sellerRatingsCount-- third-party seller reputation, when Amazon shows a rating line for that sellersellerPositivePercent12morsellerPositivePercentLifetime-- the positive-feedback percentage, exactly one of the two depending on which real period Amazon measured it over (sellers with a full 12-month history get "% positive over last 12 months"; newer sellers get "% positive over lifetime" instead) -- never conflated into one field, since they cover different windowsfulfillmentType--"FBA"/"FBM"/"AMAZON", derived from Amazon's own "Ships from"/"Sold by" labels; omitted when the combination is ambiguous (e.g. a named third-party fulfillment center)isBuyBoxWinner--trueonly for the pinned/buy-box offer, never inferred from positionmaxQuantity-- highest quantity selectable for this offer, when a quantity control is showncouponText-- any coupon/promotion text shown on the offer rowmarketplace--{ countryCode, domain, marketplaceId, currency, language }requestContext--{ productAsin, sourceUrl, canonicalUrl, deliveryCountry, postalCode }page--{ classification: "SUCCESS", totalOfferCount, moreOffersAvailable }.totalOfferCountis Amazon's own reported total offer count for the ASIN (when available). The actor automatically expands Amazon's own "See N more options" panel toggle before extracting, which fully recovers every offer on ASINs where Amazon had already rendered them all client-side (just hidden behind that toggle); on ASINs with a substantially larger real offer count, Amazon's client-side reveal itself only carries a further batch (not literally every remaining offer), somoreOffersAvailable: truecan still appear even whenmaxOffersPerProductwas set higher thantotalOfferCount-- this remaining gap would require a genuine server-side page-2 fetch the actor does not perform. Check this field rather than assumingmaxOffersPerProductwas always fully honored.recordType: "offer",scrapedAt
Output: status records
When an ASIN's page can't be classified as a normal offers page (not found, invalid ASIN, sign-in wall, CAPTCHA, rate-limited, or a genuinely empty offers panel), the actor emits one explicit status record instead of silently returning zero rows:
productAsin,marketplace,requestContextpage.classification-- one ofNOT_FOUND,INVALID_ASIN,AUTH_REQUIRED,CAPTCHA,ROBOT_CHECK,DOG_PAGE_503,RATE_LIMITED,NO_OFFERS, etc.recordType: "status",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
asins | array | – | ASINs to fetch, e.g. B0DCH8VDXF |
productUrls | array | – | Full /dp/{ASIN} product URLs (marketplace domain auto-detected) |
conditions | string | ALL | ALL / NEW / USED / COLLECTIBLE / RENEWED |
fulfillmentTypes | array | [] (no filter) | Any of FBA / FBM / AMAZON; leave empty for no filter |
maxOffersPerProduct | int | 20 | Hard cap on offers emitted per ASIN (1-50) |
deliveryCountry | string | – | 2-letter destination country; also picks the default marketplace domain |
postalCode | string | – | Destination ZIP/postal code |
proxyConfiguration | object | AUTO | Apify proxy config |
Example: single ASIN, all conditions
{"asins": ["B0DCH8VDXF"],"conditions": "ALL","maxOffersPerProduct": 10}
Example: multiple ASINs, new only, destination-aware
{"asins": ["B0DXXYS4BJ", "B0DCH8VDXF"],"conditions": "NEW","deliveryCountry": "US","postalCode": "10001","maxOffersPerProduct": 20}
Example: by product URL, UK marketplace
{"productUrls": ["https://www.amazon.co.uk/dp/B0DCH8VDXF"],"conditions": "ALL"}
Use cases
- Price monitoring -- track how many sellers compete on a listing and at what price
- Buy-box tracking -- monitor which seller currently owns the buy box over time
- Repricing intelligence -- see competitor pricing, condition, and shipping terms side by side
- Seller research -- discover which third-party sellers list a given ASIN and their ratings
- Arbitrage / reselling -- compare New vs Used pricing spreads on the same product
FAQ
What is the All-Offers-Display panel? It's the list Amazon shows when you click "See All Buying Options" or "X used & new" on a product page -- every seller currently offering that ASIN, not just the buy-box winner.
Why do offer sets change by destination? Amazon only shows offers a seller can actually ship to your delivery address. Setting deliveryCountry/postalCode makes the results match what a real shopper in that location would see.
Why is sellerRating sometimes missing? Amazon only shows an independent seller-rating line for third-party sellers. Offers fulfilled and sold directly by Amazon (or "Amazon Resale") don't carry a separate rating line, so the field is correctly omitted rather than fabricated.
How is fulfillmentType determined? From Amazon's own "Ships from" and "Sold by" labels on each offer row -- FBA (Fulfilled by Amazon) when Amazon ships it but a third party sold it, AMAZON when Amazon both sold and shipped it, FBM (Fulfilled by Merchant) when the ships-from and sold-by names match (the seller ships it themselves). If the combination is ambiguous (e.g. a named third-party fulfillment center), the field is omitted rather than guessed.
Why is isFreeDelivery/shippingPrice sometimes missing? Only set when Amazon's delivery text gives explicit evidence either way ("FREE delivery..." or a stated shipping charge). An ambiguous delivery estimate with no free/paid wording leaves both fields omitted rather than assuming free.
What's the difference between USED and COLLECTIBLE/RENEWED in the condition filter? Amazon's own AOD panel surfaces up to 4 distinct top-level condition buckets on the same listing -- New, Used, Collectible (rare/specialty copies, common on books/media), and Renewed (Amazon's official refurbishment program). Each conditions filter value matches its own bucket exactly -- selecting USED will never silently include a Collectible or Renewed offer. Use ALL if you want every condition together.
Does the conditions filter work on non-English marketplaces? The output condition field always shows Amazon's own real, localized text (e.g. Polish "Nowe", Dutch "Nieuw", Italian "Nuovo" for New-condition offers) -- it's never translated or altered. The conditions input filter itself recognizes the English bucket names plus a small, evidence-based set of live-verified translations: New-condition words for Polish/Dutch/Italian/German/Japanese/Spanish/French, plus Used/Collectible words for Japanese ("中古商品"/"コレクター商品"), German ("Gebraucht"), Italian ("Usato"/"Da collezione"), Spanish ("De 2ª mano"), and French ("D'occasion"). Filtering by USED/COLLECTIBLE/RENEWED on a marketplace whose offers render those buckets in a language this actor hasn't yet verified a translation for may under-match (real offers in that bucket excluded rather than risking a wrong match) -- use ALL and inspect the real condition text yourself if you need every bucket on an untranslated marketplace.
Why did I get a status record instead of offers? The ASIN's page didn't classify as a normal offers listing -- it may be invalid, geo-restricted, temporarily rate-limited, or genuinely have no additional offers beyond the buy box. The page.classification field tells you exactly why.
I set maxOffersPerProduct to 50 but got fewer offers back -- is that a bug? No -- maxOffersPerProduct is a cap, not a guarantee. The actor automatically expands Amazon's own "See N more options" panel toggle before extracting, which recovers every offer on ASINs where Amazon had already rendered them all client-side behind that toggle. On ASINs with a much larger real offer count (popular used-book listings with dozens of sellers are the most common case), Amazon's client-side reveal itself only carries a further batch rather than literally every remaining offer -- reaching the rest would require a genuine server-side page-2 fetch this actor does not perform. Every returned offer record's page.totalOfferCount/page.moreOffersAvailable fields tell you the real total and whether more exist beyond what was captured, so you can always tell the difference from a genuinely-exhausted result.
Is this affiliated with Amazon? No. This is an independent, third-party actor that reads Amazon's publicly viewable product pages.
How fresh is the data? Every run fetches the live page at request time -- offers, prices, and the buy-box winner can change within minutes on Amazon, so treat each run as a point-in-time snapshot.
Why does sourceUrl / soldBy.profileUrl return a 503 if I curl it directly? Amazon's edge (CloudFront) aggressively blocks plain, cookie-less, non-browser requests -- a bare curl from a clean shell with no session/cookies/JS will get a 503 "Service Unavailable" even though the same URL loads fine for a real shopper's browser. This actor itself reaches these pages successfully using a full browser session (Playwright) with a homepage-priming navigation and proxy rotation; the URLs in the output are the correct, canonical Amazon URLs and will render normally when opened in a browser or fetched with an equivalent session.
More Amazon Actors
Part of a full Amazon scraper suite -- also check out:
- Amazon Category Scraper
- Amazon Product Scraper
- Amazon Best Sellers & Rankings Scraper
- Amazon Reviews Scraper
- Amazon Reviews Scraper Pro
- Amazon Seller & Shop Scraper
- Amazon Deals Scraper
- Amazon Brand Store Scraper
- Amazon Creator Shop Scraper
- Amazon Wishlist & Registry Scraper
- Amazon Keyword Suggestions Scraper