Amazon Product Details — Independent
Pricing
from $2.20 / 1,000 product rows
Amazon Product Details — Independent
Collect public Amazon product details, observed prices and stock evidence. Direct product URLs are cloud-validated; search and variant options have bounded local evidence only. Independent tool.
Pricing
from $2.20 / 1,000 product rows
Rating
0.0
(0)
Developer
tingyou333 zhuang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
24 days ago
Last modified
Categories
Share
Collect publicly visible Amazon product details, search results, category listings and bestseller positions. Records include source ASINs, displayed prices, stock text, images, specifications, linked variants and available A+ content. This independent tool is not affiliated with or endorsed by Amazon.
Quick start
Add a public Amazon product URL, start with a small result limit, and inspect both the product dataset and the SUMMARY record.
{"categoryOrProductUrls": [{"url": "https://www.amazon.com/dp/B09X7MPX8L"}],"maxItemsPerStartUrl": 1,"maxSearchPagesPerStartUrl": 1,"maxProductVariantsAsSeparateResults": 0,"maxOffers": 0,"scrapeSellers": false,"maxRequests": 3,"maxConcurrency": 1,"requestTimeoutSecs": 20,"maxRetries": 0,"maxRunSeconds": 90,"useProxy": false,"dnsMode": "system"}
Use /s?k=keyboard for search, /b?node=1194464 for a category, or /Best-Sellers-Computers-Accessories-Computer-Keyboards/zgbs/pc/12879431 for a bestseller list. Set scrapeProductDetails=false to save listing cards without visiting each product. Detail-only fields, including stock, remain null in that mode. Source Next links are followed within the page, request, row and time limits; original URL filters, sorting and requested language are retained.
Inputs
| Input | Default | Behavior |
|---|---|---|
categoryOrProductUrls | Required | Public HTTPS Amazon product, /s, /b, /zgbs or /gp/bestsellers URLs as { "url": "..." } objects. The Apify cloud input form and API require URL objects. GET only; shortened URLs and remote request-list files are unsupported. |
maxItemsPerStartUrl | 100 | Maximum saved rows per start URL, including separate variants. 0 makes no requests. Global marketplace/ASIN deduplication can reduce the count. |
maxSearchPagesPerStartUrl | 9999 | Maximum listing pages. Other budgets can stop the run earlier. |
scrapeProductDetails | true | Visit found product pages. false emits source listing cards with unavailable details null. |
maxProductVariantsAsSeparateResults | 0 | Maximum linked variants saved as additional rows, within the start-URL row budget. |
scrapeProductVariantPrices | false | Fetch discovered sibling pages and attach their actual prices/stock to variantDetails. Missing prices remain null. |
maxVariantRequestsPerProduct | 20 | Distinct child-detail fetch attempts per parent, including failures. Transport retries/redirects also consume maxRequests. Child pages can reveal more siblings. Failed variants are reported and traversal continues within the cap. |
maxOffers | 0 | Maximum same-ASIN offers, counting the pinned offer when shown. Uses the product's public AOD form and a fresh anonymous session, following native offer pages within request/time limits. Partial pages are retained with explicit coverage and errors. Missing forms, changed identities and challenges are reported; no buybox or comparison-column substitution. |
scrapeSellers | false | Enrich source-linked featured and offer sellers with public profile metadata. Missing identity, links and unsupported profiles produce diagnostics. |
language | Site default | Request a mapped locale. Unsupported market/language combinations fall back with a warning; response language is recorded. |
maxRequests | 40 | HTTP attempt budget, including redirects and retries. |
maxConcurrency | 2 | Concurrent requests, supported range 1–4. |
requestTimeoutSecs / maxRetries | 15 / 1 | Attempt timeout and bounded transient retries. Challenges and HTTP 403/404 are not retried. |
maxRunSeconds | 105 | Collection deadline, maximum 105 seconds. |
useProxy / proxyConfiguration | false / disabled | Optional user-owned Apify or HTTP proxy. Paid-proxy compatibility has only offline tests. |
proxyCountry | AUTO_SELECT_PROXY_COUNTRY | Applies to an enabled Apify proxy. Direct collection does not change network geography. |
dnsMode | system | Explicit google-doh alternative when local DNS supplies synthetic addresses. Public-IP, hostname and TLS certificate checks remain enabled. |
maxTotalChargeUsd | No extra input cap | Additional result-event fee cap when result billing is active. Platform compute, storage and transfer costs are separate. |
countryCode / zipCode | Unset | Delivery-address overrides are unsupported and fail before collection. |
locationDeliverableRoutes | PRODUCT, SEARCH, OFFERS | Validates route names; does not enable delivery-address overrides. |
useCaptchaSolver | false | true is rejected. No CAPTCHA solver is used. |
The collector uses anonymous public HTTP pages without login, personal cookies or browser rendering. When maxOffers>0, it accepts only cookies newly generated by Amazon for that run, in memory, to load the product's AOD offers. With the default maxOffers=0, no cookie session or extra offer request is enabled. A proxy country, marketplace domain or requested language does not establish the actual delivery country. locationText reflects visible source text; loadedCountryCode requires an explicit source country attribute.
Output
| Field | Meaning |
|---|---|
asin, title, url, originalAsin | Source identity, canonical public product URL and original input identity. |
price, listPrice, shippingPrice | Source { "value": number, "currency": string }, or null. Displayed $ stays $; missing currency is not assumed to be USD. _source.currencyCode is null when ISO currency is unknown. |
inStock, inStockText | Explicit availability only. Unknown is null. An offer, price or delivery restriction does not establish stock. |
attributes, attributesMapped, productOverview | Source specifications, including supported modern expander tables. Labels and units are preserved. |
manufacturerAttributes | Available A+ technical rows and the current ASIN's labelled comparison-column attributes. Other products' values are not assigned to this product. |
videosCount | Explicit gallery video-count label. A missing or unloaded widget gives null, not zero. |
aPlusContent | Available text, lazy-loaded images, public video metadata and structured modules. Identical repeated modules are deduplicated. Remote lazy modules and every A+ layout are not guaranteed. |
brandStory, productComparison | Available brand cards and comparison columns with source ASINs, images and labelled values. Unsupported or absent structures remain null. |
sustainabilityFeatures | Supported visible certification/feature text and checked links. An empty widget gives null. Coverage varies by layout. |
seller, offers | Public seller identity/profile and same-ASIN offer rows in source order. Offer rows preserve condition, displayed price, seller, ships-from text, shipping price, primary delivery and fastest delivery. Offer _source includes native ASIN, a SHA-256 of the opaque source offer identity, nullable source index, nullable ISO price/shipping currencies and raw shipping text. A missing source identity or value stays null; no stock is inferred from an offer. Profile rating/count periods are recorded when explicit; percentages are separate from average stars. Seller feedback text is not crawled. |
variantAsins, variantDetails, variantAttributes | Discovered siblings, source attributes and selected dimensions. Fetched child values include their response provenance. |
priceRange | Minimum/maximum of observed child prices only when a common ISO currency is known. Ambiguous symbols or mixed currencies leave the range null and produce diagnostics. |
categoryPageData | Source listing URL, page number, source card position and available badges/sponsorship. |
bestsellerPageData | Explicit bestseller rank and source category labels/URL. The rank is not inferred from page position. |
_source | Response time/hash/status, language, currency interpretation, missing-field inventory and enrichment coverage. |
The compatible output field set also retains brand, author, book description, gallery images, aggregate reviews and ratings, delivery text, return/support information and other public metadata. Fields depend on the fetched layout. Null does not mean a feature is absent from Amazon, and an empty array does not certify exhaustive coverage.
Read _source.variantCoverage, _source.priceRangeCoverage, _source.offersCoverage and _source.richContentCoverage for bounded observations. Offer complete refers only to the anonymous AOD list whose explicit other-offer total was reached without truncation or failure. sourceOtherOfferCount excludes the pinned offer; observedOtherOffers counts saved nonpinned rows. pagesFetched, capReached, stopReason and offersPageEvidence explain limits and source responses. Multi-page identity/count changes stop traversal and retain the verified earlier rows. Variant complete refers to identities discovered in the fetched pages, not proof of the entire Amazon family. SUMMARY reports errors, stop reasons and effective limits. Diagnostic/error records are never saved as product rows. Its legacy releaseReady flag is not a run-success indicator.
Search, variants and availability limits
Search filters and sort order are forwarded to Amazon; the collector does not locally reinterpret them. Display prices may use Amazon's anonymous currency-conversion context. For example, a source price in KRW must not be tested numerically against an upstream search filter expressed in another currency. Sponsored results preserve their source positions and can affect ordering.
Request/time budgets, unavailable source pages, repeated page guards and row billing can stop collection before requested pages or variants finish. A valid identifiable product with missing optional fields can still be saved. Check its coverage alongside SUMMARY; COMPLETED_BOUNDED is not an exhaustive-coverage promise.
Dated anonymous direct observations
On 30 September 2026 UTC, a complete product response and its actual frontend GET protocol exposed ASIN B09X7MPX8L through /gp/product/ajax/aodAjaxMain. The same fresh anonymous session returned a pinned offer and three other offers, with explicit same-ASIN identities, sellers, New condition, primary and fastest delivery. All four item prices displayed $; one shipping fee explicitly displayed KRW 136,341. These currencies remain independent. This observation verifies one anonymous first page, not live multi-page traversal, delivery-address overrides, exhaustive marketplace coverage or cloud acceptance.
On 30 September 2026 UTC, anonymous direct responses exposed ASIN B09X7MPX8L, KRW 333,914, explicit In Stock, a gallery label of 6 VIDEOS, modern specifications and an A+ comparison for B09X7MPX8L, B0B2X4FGYH and B0B3P37X4D. A public seller profile exposed lifetime rating/count separately from its last-12-months positive-feedback percentage. Category and bestseller responses supplied actual Next pages. These are dated public-source observations; values and layout can change, and they do not establish cloud acceptance of these enrichments.
A historical one-product cloud sample from 26 September 2026 returned ASIN B0G8M2FH2G, price { "value": 74.99, "currency": "$" }, unknown ISO currency and explicit In Stock. It does not establish every marketplace, field or traversal path.
Pricing
The paid unit is one valid product row saved in the default dataset. Each separately saved variant is another row. Inline arrays do not create extra row events. Failed requests, duplicate rows and diagnostics do not create result events. Optional-field completeness is not guaranteed by a row charge.
| Apify plan | USD per row | USD per 1,000 rows |
|---|---|---|
| FREE | 0.004 | 4.00 |
| BRONZE | 0.0034 | 3.40 |
| SILVER | 0.0028 | 2.80 |
| GOLD | 0.0022 | 2.20 |
| PLATINUM | 0.0022 | 2.20 |
| DIAMOND | 0.0022 | 2.20 |
There is no startup event fee. FREE names the subscription tier; it does not mean results are free. Check the Pricing tab for the active rate. Apify compute, storage and transfer are charged separately, including for failed or empty runs. An enabled proxy can add provider fees. A row limit or result-event fee cap is not an all-inclusive cost cap.
API usage
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("SSTtC20zO6CRpgqnf").call(run_input={"categoryOrProductUrls": [{"url": "https://www.amazon.com/dp/B09X7MPX8L"}],"maxItemsPerStartUrl": 1,"maxRequests": 3,"maxConcurrency": 1,"maxRunSeconds": 90,"useProxy": False,},memory_mbytes=256,timeout_secs=120,)products = client.dataset(run["defaultDatasetId"]).list_items().itemssummary = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("SUMMARY")