Amazon Offers Scraper avatar

Amazon Offers Scraper

Pricing

from $2.99 / 1,000 offers

Go to Apify Store
Amazon Offers Scraper

Amazon Offers Scraper

Reads public Amazon all-offers pages for supplied ASINs and emits normalized offer rows with seller, price, condition, fulfillment, delivery, and product context when exposed.

Pricing

from $2.99 / 1,000 offers

Rating

0.0

(0)

Developer

w3crawler

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What does Amazon Offers Scraper do?

Amazon Offers Scraper reads Amazon's public all-offers display fragment for one or more ASINs and emits verified offer rows when the response exposes both a real price and a seller identity. It can retain condition, fulfillment, delivery, seller feedback, product context, and primary media when those values are public.

The Actor uses serialized direct HTTPS requests to the public AOD route referenced by Amazon product pages. It does not log in, use private APIs, solve CAPTCHAs, use stealth or fingerprint spoofing, configure a proxy, retry automatically, or bypass access controls. Denials, redirects outside the selected marketplace, challenge pages, and changed/empty offer markup are recorded in logs and OUTPUT_SUMMARY, never as dataset rows.

Why use Amazon Offers Scraper?

Use it for bounded public offer comparison, seller/condition snapshots, price checks, and source-backed marketplace research.

The Actor:

  • accepts up to 50 ASINs, with a legacy single-ASIN alias;
  • requests the public all-offers fragment once per ASIN;
  • filters by condition, seller name, and inclusive price range;
  • deduplicates by ASIN, seller, price, currency, and condition;
  • applies a parsed page/pageSize window per ASIN before the global maxItems cap; and
  • writes an OUTPUT_SUMMARY key-value record with request counts, candidate/output counts, operational failures, and data availability.

Offer records are not emitted from a page that exposes only a product title, a placeholder price, or no seller identity.

What data can Amazon Offers Scraper extract?

GroupFields
Offer identityasin, offerPosition, position, condition
Pricingprice, currency, listPrice, savingsPercentage
SellersellerName, sellerId, sellerUrl, sellerRating, sellerRatingCount, sellerPositivePercentage
FulfillmentshipsFrom, deliveryEstimate
Product contexttitle, productRating, productRatingCount, productUrl, imageUrl
Source contextsourceUrl, responseUrl, locale, marketplace, offerCount, offerCountMessage, scrapedAt
Missing values are omitted. Seller ratings, delivery, product metadata, and media are included only when the public response exposes them. Prices and availability are observations at request time, not guarantees of checkout price, stock, taxes, shipping, or eligibility.

How to scrape Amazon offers

  1. Open the Actor in Apify Console and open the Input tab.
  2. Enter one or more public Amazon ASINs.
  3. Choose locale, page/pageSize, filters, and whether product details or media should be retained.
  4. Set a conservative request delay for multiple ASINs.
  5. Start the run and inspect both the dataset and OUTPUT_SUMMARY key-value record.

For each ASIN, the runtime requests the public /gp/product/ajax/aodAjaxMain?asin=... fragment on the locale's Amazon marketplace, parses current AOD blocks with a legacy fallback, requires a seller and numeric price, then filters and deduplicates the rows. Requests are serialized. There is no browser navigation, product-page crawl, private API call, cursor pagination, proxy fallback, or automatic retry.

How much will it cost to scrape Amazon offers?

A run makes at most one public request per validated ASIN. page and pageSize select rows locally from each response; they do not add requests. A non-zero requestDelayMs spaces ASIN request starts, while requestTimeoutMs bounds each request. More ASINs increase run time and compute. includeProductDetails and includeMedia retain fields from the same AOD response and do not create extra page requests. Check the run usage and plan pricing in Apify before scheduling batches.

Input

See the Input tab for the complete schema. asins takes precedence over the legacy asin field. The following examples use valid ten-character ASIN shapes.

Single-ASIN bounded run

{
"asins": ["B0EXAMPLE1"],
"maxItems": 10,
"page": 1,
"pageSize": 20,
"includeProductDetails": true,
"includeMedia": true,
"dedupe": true,
"locale": "en-US",
"requestDelayMs": 400,
"requestTimeoutMs": 45000
}

Filtered multi-ASIN run

{
"asins": ["B0EXAMPLE1", "B0EXAMPLE2"],
"maxItems": 30,
"page": 1,
"pageSize": 30,
"conditions": ["NEW"],
"sellerNames": ["Example Seller"],
"minPrice": 10,
"maxPrice": 200,
"includeProductDetails": true,
"includeMedia": false,
"concurrency": 1,
"requestDelayMs": 500,
"maxRetries": 0,
"requestTimeoutMs": 45000
}

Supported fields are asins (up to 50), asin, maxItems (1–100, default 30), page (1–1000, default 1), pageSize (1–100, default 30), conditions, sellerNames, minPrice, maxPrice, includeProductDetails (default true), includeMedia (default true), dedupe (default true), locale, concurrency, requestDelayMs (0–10000, default 400), maxRetries, requestTimeoutMs (5000–120000, default 45000), and proxyUrl. concurrency, maxRetries, and proxyUrl are compatibility fields only: the runtime remains serialized, non-retrying, and direct.

The supported locale list includes en-US, en-IN, en-GB, en-CA, en-AU, de-DE, fr-FR, it-IT, es-ES, ja-JP, nl-NL, pl-PL, sv-SE, and pt-BR. Conditions and sellerNames are case-insensitive exact filters. Numeric filters apply to the parsed public price.

Output

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

Normal dataset rows contain offer and product fields only; actor envelopes, debug flags, access flags, transport flags, and run counters are removed before emission. A typical row is:

{
"asin": "B0EXAMPLE1",
"offerPosition": 1,
"price": 19.99,
"currency": "USD",
"condition": "NEW",
"sellerName": "Example Seller",
"sellerId": "A0000000000000",
"sellerUrl": "https://www.amazon.com/sp?seller=A0000000000000",
"shipsFrom": "Amazon.com",
"deliveryEstimate": "This item can be delivered by Friday.",
"sourceUrl": "https://www.amazon.com/gp/product/ajax/aodAjaxMain?asin=B0EXAMPLE1",
"responseUrl": "https://www.amazon.com/gp/product/ajax/aodAjaxMain?asin=B0EXAMPLE1",
"locale": "en-US",
"marketplace": "amazon.com",
"title": "Example public product",
"productRating": 4.5,
"productRatingCount": 1200,
"productUrl": "https://www.amazon.com/dp/B0EXAMPLE1",
"position": 1,
"scrapedAt": "2026-09-08T00:00:00.000Z"
}

The dataset contains only verified offer records. When there are no matching offers, it remains empty; request and access failures are recorded in logs and the OUTPUT_SUMMARY key-value record. The summary reports status, requestedAsinCount, requestCount, candidateItems, filteredCount, duplicateCount, successfulItems, diagnosticCount, diagnosticItems, blockedCount, requestErrorCount, stoppedOnBlock, page, pageSize, locale, marketplace, dataAvailable, usedProxy, and completedAt. diagnosticCount is an operational failure count; diagnosticItems is always zero. dataAvailable is true only when at least one verified offer row is emitted. A run with usable offer rows plus per-ASIN failures is SUCCEEDED. A blocked or failed run with no offer rows uses status: FAILED and dataStatus: FAILED. A successful run with no matching offers completes with status: SUCCEEDED and dataStatus: NO_RESULTS.

Tips and advanced options

Start with one known public ASIN and pageSize 10–30. Use includeProductDetails false or includeMedia false for a smaller dataset. Keep requestDelayMs conservative for multiple ASINs. AOD responses can contain a pinned offer plus repeated or promotional blocks; dedupe is enabled by default to prevent duplicate seller/price/condition rows.

Amazon may return HTTP 401, 402, 403, 429, redirects outside Amazon, Akamai/bm-verify interstitials, CAPTCHA pages, or changed HTML. The Actor records bounded evidence and stops at the access boundary. It does not solve, bypass, or silently replace the source with another route.

FAQ, support, and responsible use

Why is the dataset empty when the product page exists? The product page and its all-offers fragment can expose different public content. A successful HTTP response without a numeric price and seller is not a verified offer result; the run summary explains failures when a request failed.

Does page select a server-side page? No. page and pageSize select a bounded slice of parsed offers returned for each ASIN; the Actor does not claim unsupported cursor pagination.

Does proxyUrl enable a proxy? No. It remains only for compatibility with older inputs; usedProxy is always false and requests are direct.

Where do I report an issue? Use the Actor's Issues tab and include the run ID, input shape, logs, dataset URL, and OUTPUT_SUMMARY. Use the API tab for dataset and key-value-store endpoints.

The Actor extracts only public offer information for legitimate purposes. Do not collect account or private data, evade authentication or CAPTCHAs, or ignore Amazon terms, robots guidance, rate limits, privacy law, and other applicable rules. This Actor is not affiliated with Amazon.

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.