Geonode logo

Amazon Product Data Scraping for Prices, Reviews and Buy Box

Quick answer

Amazon product data scraping needs residential proxies targeted to the marketplace country, because Amazon serves prices, availability, delivery estimates and Buy Box winners based on where the request appears to come from and rate-limits cloud ranges hard. Use rotating sessions for product pages and sticky sessions when a flow spans several requests. If you want parsed fields instead of HTML, the Unlimited Scraper Amazon target returns structured JSON.

Why Amazon product data scraping breaks without the right proxies

Amazon runs one of the most aggressive bot-management layers in retail. Datacenter ranges are scored before the first request, and the response to automated traffic is often not an error but a degraded page: a CAPTCHA interstitial with HTTP 200, a "robot check" page, or a product page with the price and Buy Box sections missing. A scraper that trusts status codes files that as a successful fetch.

Per-IP limits are tight. A handful of addresses issuing hundreds of product requests per minute triggers HTTP 503 and 429 responses, and retrying from the same IP makes it worse.

Marketplace localisation is the third problem. Amazon.com, .co.uk and .de are separate catalogues, and within one marketplace the delivery estimate, Prime eligibility and sometimes the Buy Box winner change with the shopper's postcode. A request from the wrong country sees a different offer.

Which Geonode proxy type fits

For Amazon product data scraping the recommended product is Residential Proxies. The pool holds 2.5M IPs online and 30 to 50M unique IPs rotating monthly across 195+ countries, so you can send every ASIN request from a fresh consumer IP in the marketplace country and collect the price a local shopper sees. Sticky sessions up to 24 hours hold one IP when you need to set a delivery postcode first and then read several pages under that location.

Pair that with the Unlimited Scraper Amazon target when you want fields rather than HTML. It returns the product page as structured JSON, with rendering and retries handled and the residential network included.

ISP proxies fit a small static-IP watchlist. Datacenter proxies are not recommended for Amazon product pages because of reputation scoring.

  • Residential — Best for: Product, price, review and Buy Box pages per marketplace; IP source: Real user devices, 195+ countries; Session: Rotating or sticky up to 24 h; Price from: $0.27/GB at volume
  • ISP (static residential) — Best for: Small fixed-IP watchlists; IP source: Static IPs from real ISPs; Session: Unlimited, static; Price from: $1.25/IP
  • Datacenter — Best for: Non-Amazon sources, internal services; IP source: Rotating datacenter ranges; Session: Rotating; Price from: $0.14/GB

How to set it up

  1. Create an account, open Residential and copy your credentials. For each marketplace you monitor, map the domain to a proxy country: .com to us, .co.uk to gb, .de to de.
  2. Build the username with -country-xx for the marketplace. Omit the session suffix for one-shot product page fetches; add -session-<id> when you set a delivery location first.
  3. Fetch the product page, then check the body for the CAPTCHA and robot-check markers before parsing. Treat those as failures and retry from a new IP with exponential back-off.
  4. Parse price, availability, Buy Box seller, rating and review count with tolerant selectors, and store the raw HTML of any page where a field comes back empty.
  5. For bulk monitoring, send the ASIN list to the Unlimited Scraper Amazon target instead and consume the JSON directly, keeping proxies for custom browser flows.
# verify endpoint against docs.geonode.com before publishing
import requests

PASS = "PASSWORD"
HOST = "premium-residential.geonode.com:9000"
MARKETS = {"amazon.com": "us", "amazon.co.uk": "gb", "amazon.de": "de"}

def fetch_asin(domain, asin, session=None):
    user = f"USERNAME-country-{MARKETS[domain]}"
    if session:
        user += f"-session-{session}"
    proxy = f"http://{user}:{PASS}@{HOST}"
    r = requests.get(
        f"https://www.{domain}/dp/{asin}",
        proxies={"http": proxy, "https": proxy},
        headers={"Accept-Language": "en-US,en;q=0.9"},
        timeout=30,
    )
    blocked = "robot check" in r.text.lower() or "captcha" in r.text.lower()
    return r.status_code, blocked, len(r.text)

print(fetch_asin("amazon.com", "B08N5WRWNW"))

Get the exact snippet for your language from the API Code Generator in the dashboard.

Amazon-specific settings that matter

One country per marketplace

Always match the proxy country to the marketplace domain. A request to amazon.de from a US IP may be redirected, shown a different currency, or served an offer that no German shopper would see. Keep the mapping in configuration and log the country with every row so later analysis can filter by it.

Delivery location and sticky sessions

Price, Prime eligibility and the Buy Box can change with the delivery postcode. When you need a specific location, set it in a sticky session and read all pages for that location under the same session id. Drop the session when you move to a different postcode or marketplace.

Rotation for catalogue sweeps

For large ASIN lists, use rotating sessions so each product page comes from a different IP. Pace requests per marketplace rather than globally, watch the robot-check rate, and slow only the marketplace that rises. Amazon's per-IP limits are what you are managing, not a limit on the proxy side.

Reviews and pagination

Review pages are paginated and can trigger interstitials sooner than product pages. Walk them under a sticky session, cap pages per ASIN, and store the review id to avoid double counting across runs.

What Geonode gives you for Amazon product data scraping

  • Residential IPs in 195+ countries, matched to each Amazon marketplace.
  • 2.5M IPs online and 30 to 50M unique IPs rotating monthly.
  • Sticky sessions up to 24 hours for postcode-specific offers.
  • Unlimited Scraper Amazon target returning structured JSON.
  • No fixed thread limit, 24/7 support, card and crypto payment.

Pricing for Amazon product data scraping

Residential proxies are pay-as-you-go with no contract: 10 GB for $7.92 per month, 50 GB for $34.65, and from $0.27/GB at volume, with a 3-day trial for $5. The Scraper API, which includes the Amazon target in Unlimited Scraper, gives 1.5K free requests per month and starts at $3.50 per 10K requests, with monthly plans from $47. ISP proxies start at $1.25 per IP and datacenter at $0.14/GB. Compare everything on the pricing page.

FAQ

Which proxies are best for Amazon product data scraping?

Rotating residential proxies targeted to the marketplace country. They exit from consumer connections, return the price and Buy Box a local shopper sees, and give enough IP diversity to keep per-IP limits from stalling a catalogue sweep. Datacenter ranges are scored before the first request.

Can I get Amazon data as JSON instead of HTML?

Yes. The Unlimited Scraper has a ready Amazon target that returns the product page as structured JSON. It handles JavaScript rendering and routes through the residential network, so you consume fields rather than maintain and repair your own parser.

How do I track the Buy Box by location?

Set the delivery postcode inside a sticky session, then fetch the product page under the same session id so Amazon keeps that location. Record the postcode with each row, and repeat under a new session for each location you compare.

How much bandwidth does Amazon product data scraping use?

Product pages are heavier than most, because of images, scripts and widgets. Request compressed responses, skip media in any headless browser, and measure bytes per page in a pilot across a few hundred ASINs before you size the plan.

Is scraping Amazon compliant with its terms?

Collect only publicly visible product information, respect Amazon's terms of service and rate limits, and use seller or buyer accounts only when you own them or have authorisation to manage them. Geonode's acceptable use policy prohibits fraud, spam and credential abuse, and we enforce it.

Can I monitor several Amazon marketplaces at once?

Yes. Map each domain to its proxy country, run each marketplace as a separate queue with its own pacing, and tag every row with the marketplace and country. The same credentials cover every country, so one setup serves all markets.

Start

Pick fifty ASINs across two marketplaces and run them through the snippet or the Amazon target. Get started with a 3-day trial, or Contact sales for catalogue-scale monitoring.

Related: Price intelligence · Ecommerce · Review monitoring