Nimbryxo Studio

Use Amazon Multi-Domain Product Price & Detail Scraper with Python

Pull pricing, ratings, seller, variant and technical detail for Amazon products by URL or ASIN, across 21 country domains, with optional delivery postal-code targeting.

1. Choose the data you need

Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.

2. Prepare a source-based input

This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.

{
  "asins": [
    "B09X7MPX8L"
  ],
  "bestsellerUrls": [],
  "brand": "",
  "condition": "any",
  "currency": "auto",
  "dealsOnly": false,
  "deliveryCountry": "auto",
  "domains": [],
  "failOnEmpty": true,
  "includeDetails": true,
  "includeFailed": true,
  "includeSponsored": true,
  "includeTopReviews": false,
  "includeVariants": false,
  "language": "auto",
  "marketplace": "auto",
  "maxItems": 1,
  "maxPages": 1,
  "minRating": "any",
  "postalCode": "",
  "primeOnly": false,
  "productUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "proxyCountry": "AUTO",
  "rateLimitDelay": 0,
  "searchTerms": [],
  "searchUrls": [],
  "sortBy": "relevance",
  "stock": "any"
}

Download input.example.json and save your reviewed copy as input.json.

FieldTypeRequiredDescription
productUrlsarrayoptionalAmazon product URLs to scrape. Any mix of the 21 supported country domains is allowed, e.g. https://www.amazon.com/dp/B0B8PD8TTP.
asinsarrayoptionalBare 10-character Amazon ASINs. Builds /dp/{ASIN} URLs on the selected marketplace, or on every domain listed in `domains` for cross-marketplace runs.
searchTermsarrayoptionalKeyword queries to run on Amazon search pages. Price/rating/deal/condition/sort filters are applied as URL parameters.
searchUrlsarrayoptionalFull Amazon search URLs to pass through, including your own `i=`, `rh=`, `low-price`, and `s=` parameters. Pagination is added automatically.
bestsellerUrlsarrayoptionalAmazon bestseller /zgbs/ or /gp/bestsellers/ list URLs. Returns the ranked product cards, optionally enriched with product-detail fields.
marketplacestringoptionalMarketplace used for bare ASINs and keyword search terms. `auto` uses the first product URL's domain, or amazon.com.
domainsarrayoptionalOptional list of marketplaces (e.g. amazon.com, amazon.de) to run bare ASINs and search terms across. Leave empty to use `marketplace` only.
languagestringoptionalPage language. `auto` uses the marketplace's own default. Explicit values set `?language=` and the matching Accept-Language header.
currencystringoptionalISO currency for the displayed price. `auto` uses the marketplace currency. Note: Amazon converts display currency; it is not guaranteed local retail pricing.
deliveryCountrystringoptionalOptional country hint. When `postalCode` is empty, a representative local ZIP for that country is used. A country alone is not sent to Amazon.
postalCodestringoptionalLocal ZIP/postal code for the delivery location. The actor validates it against the marketplace format and skips the location change if it does not match.
minPricenumberoptionalMinimum price for discovery (search) results. Leave empty for no lower bound.
maxPricenumberoptionalMaximum price for discovery (search) results. Leave empty for no upper bound.
minRatingstringoptionalMinimum star rating for discovery results. `4` is the live-validated 4+ stars filter; lower values are best effort.
dealsOnlybooleanoptionalApply Amazon's deals filter to keyword searches. Only affects discovery.
primeOnlybooleanoptionalApply Amazon's Prime filter to keyword searches. Prime eligibility itself is not emitted because the page does not expose a reliable per-item signal.
conditionstringoptionalItem condition filter for keyword searches. `new` is live-validated; other values are best effort.
brandstringoptionalOptional brand word added to keyword search terms and used as a title/brand post-filter. This is not a structured Amazon brand-facet resolver.
stockstringoptionalBest-effort stock filter applied after parsing. Records with unknown stock pass through.
sortBystringoptionalSort order for keyword searches. Search-URL pass-through keeps its own sort.
maxItemsintegeroptionalMaximum number of search/bestseller rows across all discovery inputs. Explicit product URLs/ASINs are always processed.
maxPagesintegeroptionalMaximum search-result pages to read per keyword or search URL (1-20).
includeDetailsbooleanoptionalFetch each discovery result's product page for full price, seller, variants, specs, reviews, and media fields. Disable for a cheaper search-card-only run.
includeSponsoredbooleanoptionalKeep sponsored search cards. The isSponsored flag is always preserved.
includeVariantsbooleanoptionalInclude parent ASIN, child ASINs, and variant dimensions. Per-variant price and stock are not available from the product page.
includeTopReviewsbooleanoptionalInclude the inline top-review snippets Amazon renders publicly. Full review pagination is login-gated and is not supported.
includeFailedbooleanoptionalEmit an error row (recordType=error, reason, httpStatus) when a product or discovery input fails instead of silently dropping it.
failOnEmptybooleanoptionalMark the run as FAILED when no product/search records are emitted.
rateLimitDelayintegeroptionalBase pause in seconds between product/search requests (0-10). A random value between this and twice this is used.
proxyConfigurationobjectoptionalOptional. The actor starts direct and escalates through Apify Proxy automatically only if Amazon blocks the request. No setup is required.
proxyCountrystringoptionalOptional proxy exit country. `AUTO` uses the marketplace's own country for every domain.

3. Start an Actor run

Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.

Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.

import json
import os
import urllib.request

# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
    actor_input = json.load(stream)

token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
    "https://api.apify.com/v2/acts/MxUZNzhP5Ay03gil8/runs?timeout=120&maxTotalChargeUsd=0.50",
    data=json.dumps(actor_input).encode("utf-8"),
    headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
    method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
    run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.

4. Inspect the actual results

Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.

One record per product, search result, or bestseller entry, plus explicit error rows. Fields include ASIN/parent ASIN, price/list price/coupon/deal, rating/review count, BSR, seller/buybox, offers, availability, variants, images/videos/specs/A+ text, top review snippets, marketplace, URL, and scrapedAt. Empty fields are omitted.

Questions before you run

Which inputs are required?

No top-level fields are marked required in the published schema. Conditional requirements can still apply; check the README.

What does this guide verify?

The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.

What if the run request times out?

Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.

Generated from source build 0Bfb9bnO1sEJObmDM and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.