Amazon Stock Checker: Availability, Delivery & Scarcity avatar

Amazon Stock Checker: Availability, Delivery & Scarcity

Pricing

from $4.00 / 1,000 products with a stock answers

Go to Apify Store
Amazon Stock Checker: Availability, Delivery & Scarcity

Amazon Stock Checker: Availability, Delivery & Scarcity

Check whether Amazon products are buyable right now. In stock or not, Amazon's own availability wording, only-N-left warnings, promised delivery date and how many other sellers are on the listing. 19 marketplaces. You only pay for rows with a stock answer.

Pricing

from $4.00 / 1,000 products with a stock answers

Rating

0.0

(0)

Developer

Amazon Scrapers

Amazon Scrapers

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Amazon stock checker: availability, delivery date and scarcity, by ASIN

Give it a list of products. Get back whether each one can be bought right now, what Amazon promises for delivery, how close it is to running out, and how many other sellers are on the listing.

This is the smallest question you can ask about a product and the one that goes stale fastest. A price you read yesterday is probably still roughly right. A stock status you read yesterday is a guess.

Fifteen fields per product, nineteen marketplaces, and a timestamp on every row so repeated runs become an availability history rather than a snapshot you have to remember to keep.

Read this before your first run

One thing decides whether this Actor is useful to you, and it takes five minutes to find out: whether Amazon shows a buy box to visitors of your marketplace.

The availability block sits inside the buy box. Where Amazon leaves the buy box out, the stock answer usually goes with it, and this Actor will honestly return nothing rather than guess. Measured 2026-08-24, share of products where the buy box arrived:

MarketplaceProducts priced
amazon.com57 of 60
amazon.ca5 of 5
amazon.co.uk5 of 6
amazon.fr4 of 5
amazon.it1 of 5
amazon.es1 of 5
amazon.de0 of 8
amazon.com.au0 of 5

Rows without an answer arrive anyway and cost you nothing, so running twenty products on your own marketplace before you commit is free. Do that first.

What it answers

Can it be bought. inStock is true, false, or empty when Amazon does not say. That third state matters more here than anywhere else: some page variants carry no availability line at all, and reporting those as out of stock would be a confident lie about a product that is probably fine.

In Amazon's own words. availability is the sentence Amazon prints, in the shop's own language. "In Stock", "Auf Lager", "Derzeit nicht verfügbar". Useful when you want to know why, not just whether.

How nearly gone. stockLeft catches "Only 3 left in stock", which Amazon prints when a listing is running down. Empty on most products, which is itself the answer: there is no scarcity signal on that page.

When it would arrive. deliveryInfo is the date Amazon promises, and isPrime whether it comes through Prime. A product in stock with a three week delivery is a different fact from one arriving Saturday, and for anyone reselling it is the more important of the two.

Who else has it. otherSellersCount and hasUsedOffer. If the main listing is out but four other sellers are on it, the product is not gone, it has moved.

What it costs while you are looking. price and currency, from Amazon's own buy box data. Not the point of this Actor, but you get it anyway, and stock without price is half an answer.

Every field it returns

Fifteen per product. No field is here to pad the count: each one either answers the availability question or identifies the row.

Price and offer

FieldWhat it holds
priceCurrent price from Amazon's own buy box data
currencyThree-letter code, from the page itself
hasUsedOfferWhether a used copy is offered
otherSellersCountHow many other sellers offer it

Stock and delivery

FieldWhat it holds
inStockTrue, false, or null when Amazon does not say (this is what you are charged for)
availabilityAmazon's own availability sentence
stockLeftOnly three left in stock, when shown
deliveryInfoThe delivery date Amazon promises
isPrimePrime delivery on this offer

Identity and catalogue

FieldWhat it holds
asinThe product id
titleFull product title, shortened only past 1000 characters
brandBrand name
marketplaceWhich shop this row came from
urlThe page this was read from
scrapedAtTimestamp of the read

A real row

asin B0DXXYS4BJ
title Roku Streaming Stick HD with Voice Remote
brand Roku
inStock true
availability In Stock
stockLeft null
deliveryInfo Saturday, August 29
isPrime true
otherSellersCount 2
hasUsedOffer false
price 29.99
currency USD
marketplace com
scrapedAt 2026-08-26T09:14:22.031Z

No scarcity warning on that product today, two other sellers on the listing, and Prime delivery on Saturday. The empty stockLeft is an answer, not a gap.

What it charges for

This Actor charges on the stock answer, not on the price.

That is deliberate and it is unusual. A definite "no, this is out of stock" is exactly what you came for and it is worth the same as a yes. Most scrapers on this Store bill per row delivered, so a run against fifty discontinued products costs the same as a run against fifty available ones while telling you less.

Here, if the page carries no availability information at all, the row still arrives with everything else and you are not charged for it. On a mixed list, or on a marketplace where the buy box is scarce, that is the difference between a bill and a surprise.

Reading the empty values honestly

inStock empty is not the same as false. Empty means Amazon sent a page with no availability block. False means Amazon said so, in whatever language.

This distinction cost a real defect to learn, and it is worth telling because it shows what this Actor refuses to do. An earlier version of the engine read Amazon's mobile page as a second source, because that page seemed to solve a price problem. It reported five popular products as unavailable when it simply could not work out where to deliver them, and it dropped the specification count from twenty to eight while it was at it. Those five rows counted as delivered and would have been billed.

The mobile page was removed and the rule became: one address per product, always the canonical one, and a confident wrong answer the customer pays for is worse than an empty field they do not.

What to put in

ASINs or product URLs. Paste them in any shape. A bare B08N5WRWNW, a full URL with tracking parameters, a spreadsheet cell that still says ASIN: B08N5WRWNW, something with quotes or a trailing full stop around it. Duplicates are removed across everything you give it, so a product listed twice is fetched once and billed once.

A search term. standing desk converter becomes an Amazon search, and every result gets checked.

A category or bestseller link. Paste https://www.amazon.com/gp/bestsellers/electronics and it walks the list.

A filtered search URL. Build the search in your own browser with the filters you want, paste the address, and this Actor continues from there. Reproducing Amazon's filter syntax by hand is not worth anyone's afternoon.

You can mix all four in one run.

Settings worth knowing about

SettingWhat it does
marketplaceOne of nineteen, from com to co.jp. The currency and the language follow it.
proxyCountryLeave empty and it follows the marketplace. Setting it by hand is only useful when you want availability as it appears to a shopper in a specific country.
maxItemsHard ceiling on delivered products. Zero means no ceiling.
maxItemsPerListHow many products to take from each search term or category link.
maxListPagesHow deep to walk each list. Amazon stops earlier on most searches anyway.
lanesHow many products are read at once, each on its own exit address. Eight by default. Sixteen roughly halves the run time and costs a few answers, because Amazon strips the buy box sooner when you push.
maxAttemptsAttempts per product, each from a different address. Twelve by default. Lowering it makes runs cheaper and loses products.
residentialFallbackOff by default. Retries through residential addresses after half the attempts have failed. Measured 2026-08-26: turning it on cost roughly six times as much and returned two more products out of sixty. Leave it off unless a marketplace is refusing everything.
economicalHangs up on each page once the availability block has arrived. Off by default; measured across three pairs of runs it saves nothing.

How it works, in plain terms

Amazon refuses roughly six requests in ten to an address it has not seen before. Any scraper that asks once and gives up returns a third of what you asked for and calls it a day.

This one keeps a squad of exit addresses and learns which ones Amazon is currently tolerating. Every product gets up to twelve attempts, each from a different address, and the same address is never used twice in a row. Addresses that work get remembered for the rest of the run and reused first. Addresses that get refused repeatedly are dropped.

Between attempts it waits, and the wait adapts: when Amazon starts refusing more, it slows down instead of pushing harder, because pushing harder is how a whole run gets locked out.

Anything still refused at the end of the first pass goes into a second pass at half speed, using only the addresses that already proved themselves. That second pass is where the difference between ninety percent and a hundred percent lives.

Reading the run log

Every run ends with a summary that tells you exactly what happened:

Done: 19 charged (+1 delivered without a price, free), 0 refused by Amazon, 0 other. 1267 KB per charged result, 186 attempts in total.
Exit addresses: 147 used, 3 proven good, 12 burned.
Attempts by outcome: {"page did not carry the field this Actor needs":39,"refused by Amazon":122,"http_500":2,"ok":19,"network error":4}

charged is what you pay for. The number in brackets arrived and cost you nothing. refused by Amazon is what never came back after twelve attempts, and if that number is not zero on amazon.com something is unusual that hour. attempts in total divided by products tells you how hard Amazon was pushing back.

If a run ever delivers rows and charges for none of them, the log says so in capitals at the bottom. That is a configuration problem rather than a scraping one, and it is better read in a log than found on an invoice.

Reliability, measured

Three consecutive runs of twelve products on 26 August 2026, at the default settings:

run 1 12 of 12 delivered, 12 with a stock answer
run 2 12 of 12 delivered, 12 with a stock answer
run 3 12 of 12 delivered, 12 with a stock answer

And one run of sixty products the same day: 60 delivered, 58 with a stock answer, in 9.6 minutes.

Worth reading out of that: nothing was lost at either size. 36 of 36 on the short runs and 60 of 60 on the long one. That is the shape you want before you schedule something, because a scraper that is reliable only on small batches is not reliable, it is lucky.

The second is the residential switch, and the honest version is less dramatic than it sounds. Measured 26 August on the same sixty products, twice: with the switch off, fifty-one came back with the field this Actor charges on, for $0.0205 of platform usage. With it on, fifty-three came back, for $0.1192. Two more products for roughly six times the cost.

That is why it is off by default. It is in your input form, so if a marketplace is refusing almost everything you can turn it on and pay for the difference.

What you can build with it

A back-in-stock watcher. Run daily on a fixed list, write into one dataset, and compare the last two rows per ASIN. The comparison stays in your code, so you can change the rule without changing the check.

A supplier reliability report. Track how often each brand's products go out of stock over a month. availability in Amazon's own words tells you whether it is a supply problem or a delisting.

A pre-purchase sweep. Before committing to a bulk order, check that the competing listings are actually buyable. A category where half the listings are out is a different opportunity from one where none are.

A delivery-promise comparison. deliveryInfo and isPrime across a category show which sellers are winning on speed rather than on price.

A scarcity signal. stockLeft on a watchlist is the closest public thing to a sell-through rate. It is rare, and when it appears it is worth acting on.

Working it into your stack

Every run writes to a dataset you can download as CSV, JSON, Excel or XML, or pull through the API. Point repeated runs at one named dataset and the rows accumulate into a history, sortable by asin and scrapedAt.

Schedules live in the Schedules tab and take a cron expression. Webhooks fire on run completion, so the comparison and the alerting can live wherever your other code lives.

The output is a flat table: strings, numbers and booleans, with no nested structures to unpack. It loads into a spreadsheet without cleaning.

Marketplaces

Nineteen, from amazon.com to amazon.co.jp, and availability is read in the shop's own language rather than translated afterwards. A German "Derzeit nicht verfügbar" comes back as inStock: false, not as an empty field, and that is a real difference: an empty field would have made every German product look unknown.

The one caveat is the buy box, and it is at the top of this page because it decides whether this Actor works for you at all.

Worth knowing separately: currency reports what Amazon actually quoted, not what the marketplace usually uses. amazon.ca quotes US dollars to a visitor it places in the United States, and this Actor reports that rather than silently relabelling it.

Pricing

Four dollars per thousand products with a stock answer, plus three cents to start a run.

Checking a hundred products costs forty-three cents: a hundred times four tenths of a cent, plus the three cent start fee. You are not charged for a product where Amazon gave no availability information, or for one that never arrived. Platform usage is included in that price, so there is no separate compute bill and no proxy bill.

Watching fifty products daily costs twenty-three cents a day: fifty times four tenths of a cent, plus the three cent start fee.

The rest of this family

This Actor is one of eleven built on the same engine. If you need something next to a stock answer, one of these is probably a better fit than stretching this one:

  • Amazon Price Tracker for price history on the same list of ASINs.
  • Amazon Offer Checker when the question is how many sellers are on the listing and on what terms.
  • Amazon Product Scraper when you want all sixty-four fields per product.
  • Amazon Bestsellers Scraper and Amazon Search Results Scraper to establish which products to watch before you start watching them.

They share the retry engine, the pricing model and the rule about never guessing a price, so what you learn on one carries to the others.

Questions people ask

How often should I run it. Depends on how fast your stock moves. Daily is common. For products you are actively selling against, several times a day is reasonable and still cheap.

Why is stockLeft usually empty. Amazon only prints "Only N left" when a listing is genuinely running down. An empty value means there is no such warning, which usually means supply is fine.

Why is inStock sometimes empty on amazon.de. Because Amazon sent a page without a buy box, which it does on several marketplaces when it cannot place the visitor in a delivery country. Empty means we do not know, and you are not charged for it.

Can I get an alert when something goes out of stock. Not from this Actor directly. Put a webhook on the run and compare against your last result.

Does it tell me who the other sellers are. It tells you how many, not who. Seller names can identify a person, and this Actor does not collect personal data.

How many products can it check. No built-in ceiling. Sixty products took 9.6 minutes on the measured run, so a hundred is around 16.

Can I run it on a schedule. Yes, from the Schedules tab. Every row carries scrapedAt, so repeated runs into one dataset become a record of how availability moved.

What happens if Amazon blocks everything. The run still ends successfully with whatever came back, and the log says how many were refused. It does not fail the run for you, because a failed run on this Store looks like a broken Actor even when Amazon was simply having a bad hour.

What it does not collect

No review text, no reviewer names, no customer questions, no seller names. Those are personal data, and scraping them out of a public website is almost always a GDPR problem in Europe regardless of how public the page is. The Dutch data protection authority calls it "almost always" a violation and says a purely commercial interest does not count as a legitimate one.

This Actor does not return the rating or the review count either. Not for privacy reasons, simply because they are not part of a stock answer; the product scraper in this family returns both.

This Actor reads public pages and takes product facts: availability, delivery promises, offer counts, price. Business information about an item, not information about a person.

You are responsible for what you do with the output. Check Amazon's terms for your own use case, and if you are in Europe, keep in mind that combining public data into a profile of a person is a different activity from tracking stock.