Amazon Offers avatar

Amazon Offers

Pricing

from $15.00 / 1,000 amazon-offers

Go to Apify Store
Amazon Offers

Amazon Offers

Give it EAN/GTIN codes or ASINs and get the Amazon marketplace offers for each: seller name, price, shipping, total price, condition and availability, plus offer count and currency. One row per identifier, across 20 marketplaces from Amazon.nl to Amazon.co.jp.

Pricing

from $15.00 / 1,000 amazon-offers

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

10 days ago

Last modified

Share

Amazon Offers Scraper - All Sellers by EAN or ASIN

Give this Actor a list of EAN/GTIN codes or ASINs and it returns the Amazon marketplace offers for each one: seller name, price, shipping, total price, condition and availability. Twenty marketplaces, from Amazon.nl to Amazon.co.jp.

It reads a cache that ShoppingScraper keeps warm, rather than hitting Amazon live on every call. That has one consequence worth understanding before you run it, and it is the difference between this Actor and most of its neighbours.

The first lookup is free

Every identifier comes back in one of three states:

statuswhat it meanscharged
cachedoffers are readyyes
scraped_no_offersthe scrape ran and Amazon genuinely had no offers thereyes
queued_for_scrapenothing known yet, a scrape has just been queuedno

An identifier nobody has asked for before is scraped on demand, which takes about five minutes. The run waits for that (up to wait_for_scrape_seconds, ten minutes by default) and returns the offers in the same run, so a cold cache normally costs you a few minutes, not a second run. A row only stays queued_for_scrape when the scrape had not landed by the time the wait ran out.

A queued_for_scrape row costs you nothing, and that is enforced by where it is written rather than by a promise. Charged rows go to the default dataset, which is what Apify bills per item. Queued rows never touch it: they are listed in a QUEUED_IDENTIFIERS record in the key-value store, together with the list to retry, and the run summary says how many are still open. Run the Actor again for those identifiers a few minutes later.

scraped_no_offers is charged on purpose: "nobody sells this on Amazon.nl" is a real answer about the market, and it took a real scrape to establish.

Input

FieldTypeDefaultNotes
identifiersarrayrequiredEANs, ASINs, or a mix. An EAN is resolved to an ASIN upstream; a 10-character ASIN is scraped directly.
countrystringnlMarketplace. Note the endpoint's codes: the UK is uk, not gb.
max_age_hoursinteger24How old a cached result may be and still count as a hit.
wait_for_scrape_secondsinteger600How long the run polls for identifiers that had to be scraped first. 0 returns immediately.
forcebooleanfalseDemand data newer than the TTL and trigger an immediate re-scrape.
ttl_hoursinteger6Only used with force.
concurrencyinteger10Identifiers looked up at once.

Markets: nl, de, fr, it, es, be, uk, us, ca, mx, br, jp, au, in, sg, ae, tr, sa, se, pl.

Output

One row per identifier, so the output joins straight back onto your input list through requested_identifier, even for rows that are still queued.

{
"channel": "amazon",
"ean": "5702017814674",
"gl": "nl",
"requested_identifier": "5702017814674",
"found": true,
"status": "cached",
"billed": true,
"offers_count": 49,
"currency": "EUR",
"offers": [
{
"sellerName": "Amazon RetourDeals",
"price": "33.02",
"shippingPrice": "0.00",
"totalPrice": "33.02",
"condition": "used",
"availability": "InStock"
}
]
}

What this does not do

It does not return a product description, a rating or a review count. The offers endpoint carries seller and price data, and this Actor passes through what is there rather than inventing the rest.

already_queued on a queued row is global: it is true when anyone at all has a scrape running for that combination, not just you. It is reported as information, never as a billing signal.

FAQ

Why did my run return no offers? Either the identifier had not been scraped on Amazon in that country yet and the scrape did not land inside the wait (the row says queued_for_scrape, it was free, run again in a few minutes), or the lookup itself failed. A failed lookup is never dressed up as "no offers": it is listed in the errors record, and when every lookup fails the run is marked failed with the reason.

Can I mix EANs and ASINs? Yes, in the same list. An ASIN row comes back with the ASIN in both the asin and the ean field, which is how the underlying endpoint caches it.

Why is the UK uk and not gb? Because that is the code the marketplace endpoint accepts. gb returns an error listing the supported markets.