Amazon Product Scraper — Zip-Code Accurate Prices avatar

Amazon Product Scraper — Zip-Code Accurate Prices

Pricing

from $2.00 / 1,000 product results

Go to Apify Store
Amazon Product Scraper — Zip-Code Accurate Prices

Amazon Product Scraper — Zip-Code Accurate Prices

Scrape Amazon products by ASIN, URL or keyword across 15 marketplaces. Real-time prices, ratings, stock, images, brand and review aspects, priced for the zip code you choose. Location billed once per run, never per result. Never charged for not-found items.

Pricing

from $2.00 / 1,000 product results

Rating

0.0

(0)

Developer

Dev

Dev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

13 hours ago

Last modified

Share

Scrape Amazon product data by ASIN, product URL, or search keyword across 15 marketplaces. 28 fields per product — real-time prices, Best Sellers Rank, rating distribution, specs, seller, demand signals, delivery estimates and Amazon's own review aspects — priced and dated for the zip code you choose, not whatever region the scraper happened to run from.

No Amazon API key. No Amazon login. No scraping infrastructure to maintain.


Why this one

Amazon shows different prices, delivery dates and availability depending on where the shopper is. Most scrapers ignore this and silently return whatever their proxy saw — so your "price history" is really a history of random data-centre locations.

This Actor sets a real delivery location first, then scrapes. And it bills that setup once per run, not once per product.

Typical competitorThis Actor
Location-accurate pricingrarely, or billed per resultyes, billed once per run
Charged for not-found itemsoftennever
Charged for blocked retriesoftennever
Minimum chargecommonly appliednone
Missing price returned as0null (a 0 would mean "free")
Delivery estimate per ziprarelyyes, deliveryDate moves with the zip
Duplicate rows billedsometimesnever — deduplicated before charging

Worked example — 100 products with a zip code:

This Actor: 100 x $0.002 + $0.02 once = $0.22
Per-result location billing: 100 x $0.038 = $3.80

Quick start

Pick any one of three input modes. You can combine them.

By ASIN

{ "asins": ["B07CMS5Q6P", "B07L4BM851"] }

By URL

{ "urls": ["https://www.amazon.com/dp/B07CMS5Q6P"] }

By keyword search

{ "search": ["wireless gaming mouse"], "maxItemsPerStartUrl": 20 }

With location-accurate pricing

{ "asins": ["B07CMS5Q6P"], "zipCode": "90210" }

Input reference

FieldTypeDefaultDescription
asinsstring[][]Amazon ASINs, e.g. "B07CMS5Q6P".
urlsstring[][]Amazon product URLs. The ASIN is extracted automatically.
searchstring[][]Search keywords. Every matching product is scraped.
maxItemsPerStartUrlinteger20Max products collected per search keyword. The Actor paginates Amazon's result pages to reach it.
marketplacestring"amazon.com"One of the 15 marketplaces listed below.
zipCodestringnullDelivery zip code for location-accurate prices and stock. Cannot be combined with countryCode.
countryCodestringnullDelivery country as an alternative to zipCode. Cannot be combined with it.
includePersonalDatabooleanfalseOff by default. Product output contains no customer data.

At least one of asins, urls or search is required.

Marketplaces: amazon.com · amazon.co.uk · amazon.de · amazon.fr · amazon.it · amazon.es · amazon.ca · amazon.com.mx · amazon.com.br · amazon.co.jp · amazon.in · amazon.com.au · amazon.nl · amazon.se · amazon.pl

The proxy country is matched to the marketplace automatically.


Output reference

One dataset item per product. Every field below is always present; nullable ones are marked.

FieldTypeNull?Description
asinstringnoAmazon Standard Identification Number.
urlstringnoCanonical product URL.
titlestringyesProduct title.
brandstringyesBrand name.
priceobjectno{ value: number|null, currency: string|null } — current offer.
listPriceobjectno{ value: number|null, currency: string|null } — RRP / strike-through price.
starsnumberyesAverage rating, 1–5.
reviewsCountintegeryesTotal ratings count.
inStockbooleannoWhether Amazon reports the item in stock.
availabilitystringyesRaw availability text, e.g. "In Stock".
featuresstring[]noFeature bullets. Empty array if none.
imagesstring[]noAbsolute image URLs. Empty array if none.
breadCrumbsstringyesCategory path, e.g. "Video Games > PC > Gaming Mice".
categoriesstring[]noCategory path as an array.
bestsellerRanksobject[]no{ rank: number, category: string } — Best Sellers Rank per category.
specsobjectnoAmazon's specification table as key/value pairs.
starsBreakdownobjectyes{ "5star": 79, "4star": 11, ... } rating distribution, in percent.
badgesstring[]noe.g. "Amazon's Choice", "Prime", "Best Seller".
discountPercentintegeryesComputed from price against listPrice.
descriptionstringyesLong product description.
boughtInPastMonthstringyesAmazon's demand signal, e.g. "10K+ bought in past month".
soldBystringyesSeller name.
shipsFromstringyesFulfiller, e.g. "Amazon".
deliveryDatestringyesDelivery estimate for the zip code you requested.
hasAPlusContentbooleannoWhether the listing has A+ brand content.
aspectsobject[]noAmazon's own review aspects — see below.
deliveryLocationstringyesThe location the price reflects, e.g. "Beverly Hills 90210".
scrapedAtstringnoISO 8601 UTC timestamp.

Example output

{
"asin": "B07CMS5Q6P",
"url": "https://www.amazon.com/dp/B07CMS5Q6P",
"title": "Logitech G305 Lightspeed Wireless Gaming Mouse - Black",
"brand": "Logitech G",
"price": { "value": 29.99, "currency": "$" },
"listPrice": { "value": 49.99, "currency": "$" },
"stars": 4.6,
"reviewsCount": 39996,
"inStock": true,
"availability": "In Stock",
"features": ["The next-generation optical HERO sensor delivers incredible performance"],
"images": ["https://m.media-amazon.com/images/I/31zy93Vq31L._AC_.jpg"],
"breadCrumbs": "Video Games > PC > Accessories > Gaming Mice",
"categories": ["Video Games", "PC", "Accessories", "Gaming Mice"],
"bestsellerRanks": [
{ "rank": 10, "category": "Video Games" },
{ "rank": 1, "category": "PC Gaming Mice" }
],
"specs": { "Brand": "Logitech G", "Color": "Black", "Connectivity Technology": "USB" },
"starsBreakdown": { "5star": 79, "4star": 11, "3star": 4, "2star": 2, "1star": 4 },
"badges": ["Amazon's Choice", "Prime"],
"discountPercent": 40,
"boughtInPastMonth": "10K+ bought in past month",
"soldBy": "Sold by Amazon Resale and Fulfilled by Amazon.",
"shipsFrom": "Amazon",
"deliveryDate": "FREE delivery Tuesday, September 22",
"hasAPlusContent": true,
"aspects": [
{ "label": "quality", "mentions": 3241, "mentionsPercentage": 84, "sentimentMentions": 2715 },
{ "label": "battery life", "mentions": 894, "mentionsPercentage": 84, "sentimentMentions": 754 }
],
"deliveryLocation": "Beverly Hills 90210",
"scrapedAt": "2026-09-16T19:43:28.633Z"
}

Review aspects

aspects carries Amazon's own AI-extracted review themes with mention counts across the entire review corpus — a sentiment breakdown over tens of thousands of reviews, without scraping a single review body. Useful for product research and competitor comparison.


Zip-code accurate pricing

Pass zipCode and the Actor performs Amazon's real delivery-location flow before scraping, so prices, delivery dates and stock reflect that location.

{ "asins": ["B07CMS5Q6P"], "zipCode": "10001" }

Every returned row carries deliveryLocation so you can prove which location a price came from, and deliveryDate — Amazon's delivery estimate for that zip code. Change the zip and both move. Location setup is charged once per run regardless of how many products you scrape.


Pricing

EventPriceWhen
result$0.002per product returned
locationSetup$0.02once per run, only if zipCode is set
  • No minimum charge.
  • Not-found products are never charged.
  • Blocked requests and retries are never charged.
50 products, no location 50 x $0.002 = $0.10
50 products, with zip code 50 x $0.002 + $0.02 = $0.12

Use cases

  • Price monitoring — track competitor prices per region with zip-code accuracy.
  • MAP compliance — verify resellers honour minimum advertised price in each market.
  • Dropshipping and arbitrage — check live prices and stock before listing.
  • Market research — compare ratings, review distribution, Best Sellers Rank and review aspects across a category.
  • Demand estimationbestsellerRanks plus boughtInPastMonth are the inputs sales-estimate models are built on.
  • Logistics and delivery SLAsdeliveryDate per zip code, for comparing fulfilment speed by region.
  • Catalogue enrichment — fill in titles, brands, images and features from ASINs.
  • AI agents and RAG — feed structured, typed product data to an LLM pipeline.

Calling from code

API — start a run and wait for results

curl -X POST "https://api.apify.com/v2/acts/smart_albatross~amazon-product-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"asins":["B07CMS5Q6P"],"zipCode":"10001"}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('smart_albatross/amazon-product-scraper').call({
asins: ['B07CMS5Q6P', 'B07L4BM851'],
zipCode: '10001',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].price.value);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("smart_albatross/amazon-product-scraper").call(
run_input={"search": ["wireless gaming mouse"], "maxItemsPerStartUrl": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["asin"], item["price"]["value"], item["stars"])

For AI agents and automated callers

Deterministic contract, in one place:

  • Actor ID: smart_albatross/amazon-product-scraper
  • Required input: at least one of asins (string[]), urls (string[]), search (string[])
  • Mutually exclusive: zipCode and countryCode. Supplying both fails fast, before any network cost.
  • Output: one dataset item per product, schema exactly as the Output reference table.
  • Never returns: partial rows without an asin, or a numeric 0 standing in for an unknown price.
  • Run summary: written to the key-value store under RUN_SUMMARY as { requested, ok, notfound, blocked, charged, locationCharged, blockRate, transport }.
  • Failure semantics: a single unavailable ASIN never fails the run. The Actor exits 0 with partial results, and RUN_SUMMARY reports what happened.
  • Idempotency: same input, same marketplace and same zip code yield the same rows, except for values Amazon itself changes (price, stock, review counts).

Distinguishing the three "no data" cases:

CaseRow returned?Signal
Product exists, no current offeryesprice.value is null, inStock is false
ASIN does not exist / wrong marketplacenocounted in RUN_SUMMARY.notfound
Amazon blocked the request after retriesnocounted in RUN_SUMMARY.blocked

Limits and behaviour

  • Search paginates through Amazon's result pages until maxItemsPerStartUrl is reached, the results stop changing, or 20 pages are read — whichever comes first. Amazon serves roughly 30–60 organic results per page, so a request for 500 reads about 10 pages.
  • Sponsored placements and availability vary by marketplace and location; results reflect the live page at scrape time.
  • price.value is null — never 0 — when Amazon shows no offer.
  • Transport retries blocked requests on a fresh session and reports blockRate in RUN_SUMMARY. Retries are not billed.

FAQ

Do I need an Amazon API key? No. The Actor reads publicly accessible product pages.

Does it need an Amazon account or login? No. It never logs in, and never asks for credentials or session cookies.

Can I get prices for a specific city or zip code? Yes — that is the point. Pass zipCode and every row reports the deliveryLocation its price came from.

Why is price.value null for some products? Amazon shows no offer for that item — it is unavailable, delisted, or not sold in the selected marketplace. Returning 0 would assert the product is free, so null is used instead. The row still carries title, rating, review count and aspects.

Does it scrape review text? No. It returns review counts and Amazon's aggregated review aspects. It does not return individual review bodies.

Which marketplaces are supported? Fifteen, listed in the Input reference. The proxy country is matched automatically.

What happens if one ASIN fails? Nothing else is affected. The run completes, returns every other product, and records the failure in RUN_SUMMARY.


This Actor collects only publicly accessible Amazon product data. It does not log in to Amazon, bypass authentication, or use or request Amazon account credentials or logged-in session cookies. It collects no personal data by default.

You are responsible for ensuring your use complies with applicable law, including GDPR and copyright, and with Amazon's Terms of Service.