Amazon Offers
Pricing
from $15.00 / 1,000 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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
10 days ago
Last modified
Categories
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:
| status | what it means | charged |
|---|---|---|
cached | offers are ready | yes |
scraped_no_offers | the scrape ran and Amazon genuinely had no offers there | yes |
queued_for_scrape | nothing known yet, a scrape has just been queued | no |
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
| Field | Type | Default | Notes |
|---|---|---|---|
identifiers | array | required | EANs, ASINs, or a mix. An EAN is resolved to an ASIN upstream; a 10-character ASIN is scraped directly. |
country | string | nl | Marketplace. Note the endpoint's codes: the UK is uk, not gb. |
max_age_hours | integer | 24 | How old a cached result may be and still count as a hit. |
wait_for_scrape_seconds | integer | 600 | How long the run polls for identifiers that had to be scraped first. 0 returns immediately. |
force | boolean | false | Demand data newer than the TTL and trigger an immediate re-scrape. |
ttl_hours | integer | 6 | Only used with force. |
concurrency | integer | 10 | Identifiers 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.