Amazon Product Details Scraper: Buy Box, Stock & Price Changes
Pricing
from $4.99 / 1,000 results
Amazon Product Details Scraper: Buy Box, Stock & Price Changes
Amazon Product Details Scraper extracts product titles, ASINs, prices, Buy Box sellers, stock status, ratings, reviews, and availability. Track price and inventory changes to monitor competitors, identify pricing trends, and support Amazon product research.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
API Empire
Maintained by CommunityActor stats
1
Bookmarked
17
Total users
3
Monthly active users
a day ago
Last modified
Categories
Share
Amazon Scraper — Extract Buy Box Price, Stock & Price Changes as JSON
This Amazon scraper reads live product pages by ASIN and returns the featured-offer (Buy Box) price, the seller behind it, current stock status, and — when you compare runs — the exact price and stock changes since your last check. Every response is typed, normalized JSON: no HTML, no CSS selectors, nothing to parse. Feed it ASINs or product URLs and get structured pricing, availability and change data ready for a repricing tool, a dashboard, or an AI agent.
What is the Amazon Buy Box, Stock & Price Changes scraper?
This is an Apify Actor that fetches Amazon product detail pages and extracts the price actually charged to a buyer — the price bound to the page's featured-offer (Buy Box) container — together with stock status, seller/fulfillment details, and the full product record shown on the page. No Amazon account, login, or Seller Central access is required; it reads whatever a normal, unauthenticated visitor sees.
It handles three things at once:
- 💵 Buy Box pricing — the price a shopper is actually charged, never a number borrowed from a used offer or a nearby item
- 📦 Stock & availability — in-stock, limited, or unavailable, plus units-left counts and warehouse text
- 📈 Price & stock change history — this run compared against your own previous run of the same baseline
- ⭐ Full product record — reviews, rating, images, variations, attributes and categories present on the page
- 📤 Export as JSON or CSV, or pull it through the Apify API/client into your own pipeline
What data does the Amazon Buy Box, Stock & Price Changes scraper collect?
Each run returns one row per ASIN, covering six distinct kinds of data pulled from the same product page:
| Data Type | Key Fields | JSON Field Names |
|---|---|---|
| Buy Box & pricing | Buy box price, list price, savings, per-unit price, coupon | price, buyBoxPresent, priceSource, listPrice, savingsPercent, pricePerUnit, couponText |
| Stock & availability | Stock state, units left, warehouse text | stockStatus, inStock, unitsLeft, warehouseAvailability |
| Seller & fulfillment | Who sells it, who ships it, delivery cost | soldBy, shipsFrom, fulfilledBy, sellerId, shippingPrice, deliveryMessage |
| Price & stock change history | Deltas vs. your last run, first-seen/last-changed timestamps | previousPrice, priceChange, priceChangePct, availabilityChanged, runsObserved, firstSeenAt, lastChangedAt |
| Reviews & rating | Star rating, review count, individual reviews shown on the page | productRating, ratingValue, countReview, reviews, reviewsOnPage |
| Product attributes & media | Brand, specs, images, variations, categories | manufacturer, productDetails, productSpecification, imageUrlList, mainImage, variations, categoriesExtended |
Need more Amazon data?
If you need to build the ASIN list this Actor prices, API-Empire's Amazon Search Scraper By Price, Brand & Rating Filters finds products by keyword and filter first. For a competitor-focused view, Amazon Price Tracker: Seller & Buy Box Data covers the same buy-box/seller ground with a different input shape, and Amazon DE Sellers Leads Scraper: Multi-Niche Lead Sourcing goes further into seller lead data on the German marketplace.
How does this differ from the official Amazon APIs?
Amazon's own product-data APIs are gated by business relationships, not by a simple API key. The Product Advertising API (PA-API 5), the affiliate-facing API for product data, has been deprecated: as of the Amazon Associates program's own documentation (checked 2026-08-15), PA-API 5 "has been deprecated and is being replaced by the Creators API," and calls against the old API now return an HTTP 403 directing developers to migrate. The Selling Partner API (SP-API), Amazon's seller-side API, requires a Professional Selling account (US $39.99/month) and an approved developer profile, and its access terms have been unsettled through 2025–2026: Amazon announced a $1,400/year subscription fee plus usage charges on November 3, 2025, delayed it on January 27, 2026, postponed it indefinitely on March 9, 2026, then withdrew the fee structure entirely on May 12, 2026 (per Amazon's own Solutions Partner communications, as reported by novadata.io, checked 2026-08-15).
| Feature | Amazon PA-API / SP-API | This Actor |
|---|---|---|
| Access requirement | Amazon Associate enrollment (PA-API, deprecated) or Professional Seller account + approval (SP-API) | Apify account, no Amazon account needed |
| Scope | Your own catalogue (SP-API) or affiliate product data (PA-API, now Creators API) | Any public ASIN, any of the 22 supported marketplaces |
| Buy Box visibility | Seller-side offer data only | The exact price shown to a shopper on the page |
| Setup time | Developer approval process, per-marketplace credentials | Add ASINs, run |
| Change tracking | Not provided | Built in, per baseline, across runs |
Use Amazon's own APIs when you sell on Amazon and need order, inventory or account-scoped data under Amazon's terms. Use this Actor when you need the price and stock a shopper actually sees for ASINs you don't control — competitor monitoring, MAP compliance, or a price feed for products outside your own seller account.
Why do developers and teams scrape Amazon buy box and price data?
For pricing analysts and repricing teams
Repricing decisions depend on the price actually charged, not a list price or a used-offer price. Feeding price, buyBoxPresent and priceSource into a repricing rule engine, alongside previousPrice and priceChangePct from the built-in change tracking, gives a clean signal of when a competitor's Buy Box price moved and by how much — without hand-parsing a product page every time.
For brand owners monitoring MAP and resellers
Brands enforcing minimum advertised price (MAP) policies need to know when a reseller's Buy Box price drops below the floor, and who is selling it. soldBy, sellerId and shipsFrom identify the offer; minPriceChangePercent and onlyChangedSinceLastRun let a scheduled run report only the ASINs that actually moved, instead of re-checking every product by hand.
For AI engineers and agent builders
An agent that needs live Amazon pricing as a tool call gets typed JSON back — price, stockStatus, unitsLeft — with no HTML to strip or selectors to maintain when Amazon's markup shifts. The change-tracking fields (isFirstCheck, runsObserved) let an agent distinguish "first time I've seen this ASIN" from "this is a real price move" without building its own state store.
For procurement and sourcing teams
Buyers tracking supplier or component pricing across ASINs can pull price, unitsLeft and warehouseAvailability on a schedule to catch stockouts and price movement before they affect a purchase order, using changeBaselineName to keep separate product lists on separate comparison baselines.
How to scrape Amazon Buy Box, stock and price data (step by step)
- Open the Amazon Product Details Scraper: Buy Box, Stock & Price Changes Actor on its Apify Store listing.
- Provide the required input —
asins, a list of ASINs or full product URLs, one entry per product. - Choose the marketplace (
marketplaceDomain) and, if you want it, turn ontrackChangesBetweenRunsto compare against your previous run. - Start the run from the Console, or trigger it via the Apify API /
apify_client/ a schedule. - Download the results as JSON or CSV from the run's dataset, or read them with the API.
What to do when Amazon changes its page structure
The Actor is maintained, and the output schema — field names and types — stays stable on your end even when Amazon changes its page markup underneath. No numeric turnaround time is promised here; if a field consistently comes back empty after an Amazon layout change, that's worth reporting through the feedback channel below.
What changed in Amazon's data-access model recently?
Amazon's official product-data APIs have gone through real churn since late 2025. The Product Advertising API (PA-API 5) — the API affiliate tools used for product data — has been deprecated in favor of the new Creators API; as of Amazon's own documentation (checked 2026-08-15), calls against PA-API 5 now return an HTTP 403 directing developers to migrate. On the seller side, Amazon announced a $1,400/year Selling Partner API (SP-API) subscription fee plus per-call usage charges on November 3, 2025, delayed the rollout on January 27, 2026, postponed it indefinitely on March 9, 2026, and withdrew the fee structure entirely on May 12, 2026 (per Amazon's Solutions Partner communications, as reported by novadata.io, checked 2026-08-15).
For teams that need Buy Box price and stock data for ASINs outside their own seller account, neither API was ever the right tool — PA-API is affiliate-scoped and SP-API is seller-scoped to your own catalogue. This Actor's approach (reading the public product page directly) isn't affected by either API's access terms, since it was never routed through them. What's publicly visible on an Amazon product page — price, stock text, seller name — remains accessible the same way; what's changed is the availability and cost of the official programmatic alternatives.
⬇️ Input
The Actor takes one required parameter (asins) and a set of optional switches for price integrity, change tracking, and marketplace/connection settings.
| Parameter | Required | Type | Constraints | Description |
|---|---|---|---|---|
asins | Yes | array of strings | editor: stringList | One entry per product: an ASIN (B07GBZ4Q68) or a full product URL (https://www.amazon.com/dp/B07GBZ4Q68). Each entry returns one row. |
watchAsins | No | array of strings | editor: stringList | Additional ASINs or product URLs, merged with asins and de-duplicated. Useful for a fixed core list plus ad-hoc products for one run. |
requireBuyBox | No | boolean | default false | Off: a product with no featured offer is still returned, with price = null and buyBoxPresent = false. On: that product is skipped entirely, so every returned row carries a real price. |
includeUnitPrice | No | boolean | default true | Returns pricePerUnit (e.g. $0.32/count) when the product shows one. |
includeCoupons | No | boolean | default true | Returns couponText with the promotion shown next to the price, e.g. "Coupon: Save 15%". |
trackChangesBetweenRuns | No | boolean | default true | Stores this run's price, stock state, rating and review count per product, and compares the next run against it. The first run for a product reports null deltas and runsObserved = 1 — no history is invented. |
changeBaselineName | No | string | default "default", editor: textfield | Keeps separate comparison baselines apart. Runs sharing a baseline name compare against each other; a new name starts a fresh baseline. Example: weekly-audit. |
onlyChangedSinceLastRun | No | boolean | default false | Emits a product only when its price, stock state or rating differs from the stored baseline. Products seen for the first time are always emitted. |
minPriceChangePercent | No | integer | default 0, min 0, max 100 | Used with the option above: a product whose price moved by less than this percentage is treated as unchanged. Example: 5 reports only moves of 5% or more. |
marketplaceDomain | No | string (enum) | default "amazon.com", editor: select | The marketplace to read from — see the full list below. The exit country follows this choice automatically. |
pageLanguage | No | string (enum) | default "", editor: select | Requests the product page in this language. Empty uses the marketplace default. |
exitCountry | No | string (enum) | default "US", editor: select | The country the marketplace is read from. Amazon shows different prices, delivery figures and offers per country. AUTO follows the marketplace above. |
proxyConfiguration | No | object | editor: proxy | Connection settings used to reach the marketplace. Keeping this on is recommended — otherwise prices may be read from an unpredictable country. Prefill: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}. |
Legacy compatibility parameters — kept so an input built for the original Amazon Product Details Scraper still runs unchanged. Each is used only when its replacement above is left empty/on AUTO.
| Parameter | Required | Type | Constraints | Description |
|---|---|---|---|---|
amazonDomain | No | string | default "amazon.com", editor: textfield | Legacy key for marketplaceDomain. |
language | No | string (enum) | default "" | Legacy key for pageLanguage. Enum: "", "en-US", "en-GB", "de-DE", "fr-FR", "es-ES", "it-IT", "ja-JP", "zh-CN". |
proxyCountry | No | string (enum) | default "AUTO" | Legacy key for exitCountry. Enum: "AUTO", "US", "GB", "DE", "FR", "ES", "IT", "CA", "AU", "JP". |
marketplaceDomain full enum: amazon.com (United States), amazon.co.uk (United Kingdom), amazon.de (Germany), amazon.fr (France), amazon.es (Spain), amazon.it (Italy), amazon.ca (Canada), amazon.com.au (Australia), amazon.co.jp (Japan), amazon.in (India), amazon.com.mx (Mexico), amazon.nl (Netherlands), amazon.se (Sweden), amazon.pl (Poland), amazon.sg (Singapore), amazon.ae (United Arab Emirates), amazon.sa (Saudi Arabia), amazon.com.br (Brazil), amazon.com.tr (Turkey), amazon.eg (Egypt), amazon.ie (Ireland), amazon.com.be (Belgium).
pageLanguage full enum: "" (marketplace default), en-US, en-GB, de-DE, fr-FR, es-ES, it-IT, ja-JP, zh-CN.
exitCountry full enum: AUTO (follow the marketplace), US, GB, DE, FR, ES, IT, CA, AU, JP, IN, MX, NL, SE, PL, SG, AE, SA, BR, TR, EG, IE, BE.
Example input:
{"asins": ["B07GBZ4Q68", "B01N5IB20Q"],"watchAsins": [],"requireBuyBox": false,"includeUnitPrice": true,"includeCoupons": true,"trackChangesBetweenRuns": true,"changeBaselineName": "weekly-audit","onlyChangedSinceLastRun": false,"minPriceChangePercent": 5,"marketplaceDomain": "amazon.com","pageLanguage": "en-US","exitCountry": "US","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
⚠️ The most common input mistake is turning proxyConfiguration off, or leaving exitCountry on AUTO while switching marketplaceDomain between regions. Amazon shows different prices per exit country for the same ASIN, so an unpinned connection can silently return a price from the wrong country.
⬆️ Output
Results are written to the run's dataset as one JSON row per submitted ASIN, and can be exported as JSON, CSV, Excel, or the other formats the dataset export supports. The dataset's default view surfaces 38 of these columns as a table; every field below is present in the underlying row.
Scraped product row (page read successfully)
| Field | Type | Description |
|---|---|---|
type | string | Always "product". |
asin | string | The product's ASIN. |
url | string | The product page URL that was fetched. |
title | string | null | Product title. |
manufacturer | string | null | Brand, read from the product details table or byline. |
amazonDomain | string | The marketplace domain used for this row. |
statusCode | number | 200 for a successfully read page. |
statusMessage | string | "FOUND" (title and either a buy box or a confirmed unavailable state), "PARTIAL" (title found but no buy box/stock signal), or "NOT_FOUND". |
success | boolean | false only when statusMessage is "NOT_FOUND". |
scrapedAt | string | UTC timestamp of the fetch, ISO 8601. |
buyBoxPresent | boolean | Whether a featured-offer price was found. |
priceSource | string | "buy-box" or "unavailable". |
price | number | null | The featured-offer (Buy Box) price. |
listPrice | number | null | The struck-through / "was" price, when shown. |
listPriceSource | string | "list-price" or "unavailable". |
retailPrice | number | null | Same value as listPrice. |
priceSaving | number | null | listPrice - price, when both are known. |
savingsPercent | number | null | Discount percentage, when both prices are known. |
pricePerUnit | string | null | e.g. "$0.32/count". Returned only when includeUnitPrice is on. |
couponText | string | null | Coupon/promo text next to the price. Returned only when includeCoupons is on. |
warehouseAvailability | string | null | Raw availability text as shown on the page. |
inStock | boolean | null | null when availability could not be determined. |
stockStatus | string | "in-stock", "limited", "unavailable", or "unknown". |
unitsLeft | number | null | Parsed from "Only N left" wording, when present. |
soldBy | string | null | Seller name behind the featured offer. |
shipsFrom | string | null | Fulfillment source text. |
fulfilledBy | string | null | Same value as shipsFrom. |
sellerId | string | null | Seller ID parsed from a seller link, when present. |
deliveryMessage | string | null | Delivery estimate/cost text as shown. |
priceShippingInformation | string | null | Same value as deliveryMessage. |
shippingPrice | number | null | Parsed shipping cost, 0.0 when marked free. |
productRating | string | null | Raw rating text, e.g. "4.6 out of 5 stars". |
ratingValue | number | null | Numeric rating parsed from productRating. |
countReview | number | null | Total review count shown on the page. |
features | array of strings | "About this item" bullet points. |
aboutProduct | array of {name, value} | Product overview table rows. |
productDetails | array of {name, value} | Merged attribute set from all detail layouts on the page. |
productSpecification | array of {name, value} | Specification table rows specifically. |
attributeCount | number | Count of productDetails entries. |
productDescription | string | Product description block text (empty string if none). |
imageUrlList | array of strings | All gallery image URLs found. |
mainImage | object | {imageUrl, width, height, imageResolution}. |
mainImageUrl | string | null | Same URL as mainImage.imageUrl. |
videoeUrlList | array of strings | Gallery video URLs (.mp4/.m3u8). Field name as returned by the Actor. |
variations | array of {variationName, values: [{value, asin, dpUrl, selected, available, price, imageUrl}]} | Variant options (size/color/etc.), when the page exposes them. |
bookVariations | array of {format, price, asin, url} | Book/media format-and-edition swatches. |
categoriesExtended | array of {name, url, node} | Breadcrumb category trail. |
importantInformation | array of strings | Safety/legal/ingredient notices, when present. |
pastSales | string | Social-proof "bought in past month" text, empty string if absent. |
reviews | array of {text, date, rating, title, userName, url, reviewId, reviewCountry, verifiedPurchase} | Individual reviews rendered on the product page itself. |
reviewsOnPage | number | Count of review nodes found on the page. |
language | string | Present only when pageLanguage/language was set. |
proxyCountry | string | Present only when exitCountry/proxyCountry was set to something other than AUTO. |
Change-tracking fields — always present, either as real deltas or as nulls (see the change-tracking note below):
| Field | Type | Description |
|---|---|---|
isFirstCheck | boolean | null | true on the first run seen for this ASIN under this baseline; null when trackChangesBetweenRuns is off. |
previousPrice | number | null | Price recorded on the previous run. |
priceChange | number | null | price - previousPrice. |
priceChangePct | number | null | Percentage change vs. the previous run. |
previousStockStatus | string | null | stockStatus from the previous run. |
availabilityChanged | boolean | null | Whether stock status differs from the previous run. |
ratingChanged | boolean | null | Whether the numeric rating differs from the previous run. |
reviewCountChange | number | null | Change in countReview vs. the previous run. |
runsObserved | number | null | How many runs this ASIN/baseline combination has been seen in. |
firstSeenAt | string | null | Timestamp of the first run this ASIN/baseline was seen. |
lastChangedAt | string | null | Timestamp of the most recent run where something actually changed. |
⚠️ Products that couldn't be read are pushed with fewer fields, not null-filled ones. When a page returns a 404 or stays unreadable after retries, the row carries only identity, price/stock/seller fields (all null) and statusCode/statusMessage/success — catalogue fields like manufacturer, features, reviews, imageUrlList, variations and the rest are absent from the row entirely, not set to null. Check for the key's presence, not just its value, if your pipeline expects it.
Product that couldn't be read (blocked or delisted)
{"type": "product","asin": "B000000000","url": "https://www.amazon.com/dp/B000000000","title": null,"amazonDomain": "amazon.com","scrapedAt": "2026-08-15T09:12:41Z","statusCode": 404,"statusMessage": "NOT_FOUND","success": false,"buyBoxPresent": false,"priceSource": "unavailable","price": null,"listPrice": null,"listPriceSource": "unavailable","retailPrice": null,"priceSaving": null,"savingsPercent": null,"pricePerUnit": null,"couponText": null,"warehouseAvailability": null,"inStock": null,"stockStatus": "unknown","unitsLeft": null,"soldBy": null,"shipsFrom": null,"fulfilledBy": null,"sellerId": null,"isFirstCheck": null,"previousPrice": null,"priceChange": null,"priceChangePct": null,"previousStockStatus": null,"availabilityChanged": null,"ratingChanged": null,"reviewCountChange": null,"firstSeenAt": null,"lastChangedAt": null,"runsObserved": null}
⚠️ Every row consumes one row_result charged event — including this one. The Actor charges row_result for every row it pushes, whether the product was read successfully or came back 404/blocked. There is no separate uncharged accounting event. The only way to avoid paying for unreadable products is requireBuyBox: true, which also skips real products that simply have no featured offer — so it trades away legitimate no-Buy-Box rows to filter out the failed ones.
How many products can you scrape with this Actor?
There is no hard cap in the Actor itself on how many ASINs you submit to asins/watchAsins in a single run — each entry becomes one row. Products are processed sequentially, one page fetch at a time, with a randomized 0.8–2 second pause between products and up to four fetch attempts per product (exponential backoff with jitter) before it's marked unavailable and moved past. There is no result pagination to configure, since output is one row per submitted ASIN rather than a search feed.
Integrate this Amazon scraper and automate your workflow
This Actor works with any language or tool that can send an HTTP request, since it runs on the Apify platform like every other Apify Actor.
REST API integration
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run_input = {"asins": ["B07GBZ4Q68", "B01N5IB20Q"],"trackChangesBetweenRuns": True,"marketplaceDomain": "amazon.com",}run = client.actor("amazon-product-details-scraper-buy-box-stock-and-price-changes").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["asin"], item["price"], item["stockStatus"])
Works in Python, Node.js, Go, Ruby, or cURL against the same Apify API endpoint.
Automation platforms (n8n, Make, LangChain)
Apify's own Apify node for n8n and Apify app for Make can run this Actor by ID and pass its dataset downstream in either platform's workflow builder, without writing a custom HTTP request node. For LangChain-based pipelines, the apify-client package (or the ApifyWrapper utility documented in LangChain's own integration docs) can call this Actor and load its dataset directly into a chain or agent tool.
⚖️ Is it legal to scrape Amazon product and pricing data?
Scraping publicly available Amazon product pages for pricing and stock data is generally lawful; this Actor only returns what an unauthenticated browser can already see — no login-gated pricing, no Seller Central data, no private account information. Amazon's product listings, prices and stock levels are business/product data, governed by Amazon's own Terms of Service and by database-rights law in relevant jurisdictions, not by GDPR — GDPR governs personal data, and a price/stock feed keyed by ASIN isn't that. The one place personal data can appear is the optional reviews field, which carries a reviewer's displayed username exactly as Amazon shows it publicly on the page; treat that field as personal data if you store or process it. Consult legal counsel for commercial use cases, especially ones involving reseller enforcement or bulk data retention.
Frequently asked questions
Does this Actor work without an Amazon account?
Yes. It reads public product pages the same way an unauthenticated visitor would — no Amazon login, Associate account, or Seller Central credentials are needed.
How often is the data updated? Is this a live fetch?
Every run fetches the current product page live; nothing is cached or served from a stored snapshot. The optional change-tracking feature (trackChangesBetweenRuns) compares this run's live result against the values stored from your previous run of the same baseline — it isn't a historical price-tracking service, and there's no data before your first run.
What happens when a product has no Buy Box, or is out of stock?
By default the product is still returned, with price = null, buyBoxPresent = false, and whatever stockStatus the page shows. Set requireBuyBox: true if you only want rows that carry a real price — that setting skips products with no featured offer entirely.
What happens when a product page can't be read (delisted, blocked, dead link)?
The row comes back with success: false and statusMessage of "NOT_FOUND" (a genuine 404) or "UNAVAILABLE" (the page couldn't be confirmed readable after retries). These rows carry only identity and null price/stock fields — catalogue fields like reviews or imageUrlList are simply absent rather than null — and they still consume a row_result charged event.
Can I scrape login-gated or restricted Amazon content?
No. Only what a public, unauthenticated product page shows is returned — no wholesale/business pricing behind a login, no Seller Central inventory data, no data requiring an Amazon account.
Can I track the same ASINs against more than one comparison baseline?
Yes. changeBaselineName keys the stored comparison history, so weekly-audit and competitor-watch build up entirely separate change histories for the same ASINs, without one overwriting the other.
Does this Actor work for AI agent workflows and LLM pipelines?
Yes. It's callable as an HTTP endpoint (via the Apify API or apify_client) by any agent framework, and every response is typed JSON with stable field names — no HTML or selectors to strip before handing results to an LLM.
How does it handle Amazon's anti-bot defenses?
The Actor routes requests through Apify Proxy, escalating to a residential proxy group automatically after a failed attempt if you haven't already chosen a proxy group yourself. It detects and retries against known challenge/CAPTCHA response pages and short-circuits on confirmed 404s rather than retrying a dead link, using exponential backoff with jitter across up to four attempts per product.
Why does a row's statusMessage show "PARTIAL" instead of "FOUND"?
"PARTIAL" means the product title was found but the page showed neither a confirmed Buy Box price nor a confirmed unavailable state — usually a page that rendered incompletely. "FOUND" requires either a real Buy Box price or a clearly confirmed unavailable status alongside the title.
Can I use this Actor without managing proxies?
Yes — proxyConfiguration uses Apify Proxy and comes pre-filled with a residential proxy group. Leaving it on is recommended: turning it off removes country pinning, and Amazon prices vary by exit country for the same ASIN.
What happens when Amazon changes its page structure?
The Actor is maintained on an ongoing basis, and the output schema — field names and types — stays stable on your end even after an Amazon markup change. No specific turnaround time is promised.
💬 Your feedback
Found a bug, or a field that's coming back empty on a product that clearly has it? Open an issue from this Actor's Issues tab in Apify Console, or reach out through the API-Empire Store listing — reports of real, reproducible field mismatches are the fastest way to get them fixed.