Amazon Search Scraper By Country & Currency
Pricing
from $2.99 / 1,000 results
Amazon Search Scraper By Country & Currency
Amazon Search Scraper extracts products from Amazon search results, including titles, prices, ratings, reviews, images, sellers, and availability. Ideal for market research, price tracking, competitor analysis, and automating structured Amazon product data collection at scale.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
1
Bookmarked
5
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Amazon Search Scraper — Products, Prices by Country and Currency
Run one Amazon search across up to seven Amazon marketplaces in a single run and get back a
typed, normalized JSON row for every product — each one tagged with its marketplace, country
and currency, and priced the way that marketplace actually writes it (19,99 stays 19.99,
1.299,00 € stays 1299.0). Fields include asin, productDescription, priceLocal,
priceText, retailPrice, productRating, countReview, searchResultPosition and dpUrl.
The Actor also rolls every ASIN it finds on two or more marketplaces into its own comparison row
with the price per marketplace and the spread between them — useful for procurement teams,
cross-border resellers and pricing analysts who currently run one Amazon scraper per country and
merge the exports by hand. Point it at a keyword or a pasted Amazon search URL and the marketplace
fan-out and the comparison roll-up both happen inside the one run.
What is Amazon Search Scraper By Country & Currency?
It is an Apify Actor that runs a keyword search — or a pasted Amazon search-results URL — against one or more Amazon marketplace domains and returns every product tile as a JSON row, plus an optional cross-market comparison row for any ASIN shared by two or more of the marketplaces you picked. No Amazon account, Amazon Associates enrollment or Amazon API key is needed — the Actor reads the same public search-results pages a browser would.
Key features:
- 🌍 Seven-marketplace fan-out per run — amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.ca, each requested in its own language with its own network route.
- 🔎 Two ways to target results — a plain keyword (
queries), or a pasted Amazon search URL that keeps its own marketplace, category (iparameter) and department (rhbrowse node). - 💱 Locale-aware money parsing — each marketplace's own decimal separator is read correctly,
and
currencyis cross-checked against the symbol the page actually rendered, never guessed. - ⚖️ Cross-market comparison rows — every ASIN found on two or more selected marketplaces
gets a
type: "comparison"row withpriceByMarket,cheapestMarketplaceandpriceSpreadPct. - 📊 Six real Amazon sort orders — Featured, Best sellers, Price low→high, Price high→low, Average customer review, Newest arrivals — the same tokens Amazon's own sort control uses.
- 📦 Export formats — the Apify platform's standard dataset exports: JSON, CSV, Excel, XML, and RSS, from the Console or the API, on both the main dataset and the mirrored comparison one.
What data can I extract with Amazon Search Scraper By Country & Currency?
Every run returns two row shapes in the same dataset, distinguished by type and isChild:
per-product search rows, and (when comparison is on) roll-up rows across marketplaces.
| Field | Example value | Use case |
|---|---|---|
type | "product" / "comparison" | Filter row shape |
isChild | false / true | Same filter, boolean form |
marketplace, marketplaceCode, domainCode | "amazon.de", "de", "de" | Which Amazon site the row came from |
country | "DE" | ISO country of that marketplace |
currency | "EUR" | Listing currency, read from the rendered symbol |
keyword | "lego technic" | The search term that produced this row |
asin | "B0DZZWMB2L" | Amazon product identifier |
productDescription | "ASUS ROG Strix G16 Gaming Laptop" | Product title |
priceLocal, price | 1299.0 | Numeric selling price, in the marketplace's own currency |
priceText | "1.299,00 €" | Price exactly as the marketplace printed it |
retailPrice | 1499.0 | Struck-through list price, null when none is shown |
secondaryOffer | 1249.5 | Lowest other-seller/used price on the tile, null when none |
productRating | "4,5 von 5 Sternen" | Rendered rating text (locale-specific) |
countReview | 539 | Review count, null when the tile carries none |
searchResultPosition | 1 | Organic rank Amazon's own tile href carries |
page, currentPage | 1 | Which results page the row came from |
resultCount, resultCountStatus | null, "not-published" | Amazon's total-results figure, and whether the marketplace prints it |
salesVolume | "2K+ bought in past month" | Recent-purchases line, when shown |
deliveryMessage | "FREE delivery Tue, Aug 18" | Delivery line, as rendered |
dpUrl | "https://www.amazon.de/dp/B0DZZWMB2L" | Absolute, clickable product URL |
imgUrl | "https://m.media-amazon.com/images/…" | Product image URL |
prime, sponsored | true, false | Prime badge / sponsored-placement flags, as rendered |
manufacturer, series, variations, productDetails | null, null, [], [] | Brand line, model series, colour/size swatches, bullet features — kept for compatibility with older inputs; a 2026 search tile rarely renders these, so they are frequently empty rather than guessed |
categories, nodeHierarchy, selectedCategory, browseNode | [], null, "aps", null | Department facets and department path, populated only when the search is scoped to one |
similarKeywords | [{"keyword": "lego technic sets", "url": "…"}] | Related-search suggestions with absolute URLs |
sortStrategy | "relevanceblender" | The ordering actually applied to this page |
searchUrl | "https://www.amazon.de/s?k=…" | The exact URL the Actor requested |
statusCode, statusMessage | 200, "FOUND" | Classic status keys, kept unchanged |
scrapedAt | "2026-08-08T12:00:00Z" | UTC timestamp the row was collected |
💱 Cross-market comparison fields
type: "comparison" rows carry a different set of fields, filled only on those rows: marketsFound
(list of domains), marketCount, priceByMarket ({"amazon.com": 1393.65, "amazon.de": 1299.0}),
currencyByMarket, productUrlByMarket, sameCurrency, cheapestMarketplace, cheapestPrice,
cheapestCurrency, highestMarketplace, highestPrice, and priceSpreadPct — the percentage gap
between the cheapest and highest listed price for that ASIN, rounded to two decimals. Matching is
by ASIN: the same physical product is sometimes listed under a different ASIN in a different
country, so this only covers listings genuinely shared between the marketplaces you picked — the
run log prints the real matched percentage for every run.
🌍 Marketplace and currency targeting fields
marketplace, country and currency are what let a downstream table or spreadsheet be filtered
or grouped per country without any lookup step. categories, browseNode and nodeHierarchy
narrow within one marketplace when the input carries a category-scoped Amazon URL rather than a
plain keyword — they stay empty for a plain keyword search, since Amazon doesn't scope those to a
department on its own.
How does Amazon Search Scraper By Country & Currency differ from the official Amazon API?
Amazon's own product-data API is being retired: as observed on Amazon's own documentation on
2026-08-15, webservices.amazon.com/paapi5 now redirects to a deprecation notice stating "The
Amazon Product Advertising API 5.0 (PA-API 5) has been deprecated and is being replaced by the
Creators API" (affiliate-program.amazon.com/creatorsapi/docs/en-us/paapiv5-deprecation).
Its replacement, the Creators API, requires enrollment in the Amazon Associates program for your
target marketplace, plus at least 10 qualifying sales within the past 30 days, registration
through Associates Central, and generated API credentials — as documented on
affiliate-program.amazon.com/creatorsapi/docs/en-us/introduction,
checked 2026-08-15.
| Feature | Amazon Creators API (successor to PA-API 5.0) | Amazon Search Scraper By Country & Currency |
|---|---|---|
| Account requirement | Amazon Associates account, per target marketplace | Apify account only |
| Ongoing eligibility | ≥10 qualifying sales in the trailing 30 days | None |
| Multi-marketplace in one call | Documentation describes "your target marketplace" (singular) per enrollment | Up to 7 marketplaces fanned out in a single run |
| Cross-market price comparison | Not documented as a built-in operation | Built in — compareAcrossMarkets rolls up shared ASINs automatically |
| Setup requirement | Associates enrollment, credential generation, per-marketplace registration | Apify Console or API call, no registration elsewhere |
| Output shape | Structured JSON via SearchItems/GetItems operations | Structured JSON dataset row per product, exportable as JSON/CSV/Excel/XML |
Why does Amazon gate its own product API behind an Associates account?
Amazon's Associates program exists to reward referral traffic that converts into purchases, so its API access is conditioned on maintaining qualifying sales volume rather than on the caller's data needs — a research team, a procurement desk or a pricing analyst with no storefront to refer traffic from cannot qualify, regardless of how much genuine demand they have for the data. Amazon Search Scraper By Country & Currency reads the same public search-results pages a shopper's browser loads and requires no referral relationship with Amazon at all.
The Creators API is the right choice for an existing Associate who already qualifies and wants official, Amazon-supported access to a single target marketplace. This Actor is the more direct route when the goal is one-off or recurring search data across several countries, with no Associates account, no qualifying-sales requirement, and no per-marketplace enrollment step.
How to use data extracted from Amazon?
🛒 Cross-border pricing and procurement
Set marketplaces to the countries you buy or sell in, turn on compareAcrossMarkets, and read
priceByMarket, cheapestMarketplace and priceSpreadPct off the comparison rows to see, per
ASIN, which country lists it cheapest and by how much — before committing to a purchase order or a
sourcing decision.
🔁 Agencies and repeated monitoring
Run the same queries list on a schedule against the same marketplaces selection, and diff
priceLocal and retailPrice across runs per asin to flag price changes for clients across
their target countries, without re-writing the query set each time.
📊 Market research and intelligence
Run one keyword against all seven marketplaces with a high productsPerMarketplace, then group
the product rows by marketplace and look at resultCount and searchResultPosition distribution
to gauge how deep a term's catalogue is per country before entering a new market.
🤖 AI agents and automated pipelines
Because the Actor is a standard Apify Actor with a JSON input and a JSON dataset output, an agent
framework can call it as a tool — pass a keyword and a marketplace list, get back typed rows with
asin, priceLocal and currency ready to feed into a pricing-comparison or sourcing-recommendation
step without any HTML parsing on the agent's side.
🔼 Input sample
No input parameter is required — queries defaults to nothing collected, marketplaces falls back
to classic single-marketplace behaviour, and every other field carries its own default.
| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
queries | No | array of string | One or more search terms. Each is run on every marketplace selected below. A pasted marketplace URL keeps its own marketplace in addition to the ones selected, and its category or department is respected. Prefill: ["lego technic"] | ["laptop", "wireless headphones"] |
marketplaces | No | array of string (enum: com, co.uk, de, fr, it, es, ca) | Amazon marketplaces to search. Every search term runs on each of them; every product row carries marketplace, country and currency. Leave empty for the classic fallback: a plain term goes to amazon.com, a pasted URL goes to its own marketplace. Prefill: ["com", "de", "co.uk"] | ["com", "de", "fr"] |
productsPerMarketplace | No | integer (min 1, max 10000) | How many products to collect per search term, per marketplace. Pages are walked until this number is reached or the marketplace runs out of results. Prefill: 15 | 25 |
compareAcrossMarkets | No | boolean | When on, every ASIN found on two or more marketplaces gets an extra type: "comparison" row. Matching is by ASIN. Prefill: true | true |
minMarketsForComparison | No | integer (min 2, max 7) | An ASIN must carry a price on at least this many marketplaces before it gets a comparison row. Prefill: 2 | 3 |
mirrorComparisonDataset | No | boolean | When on, comparison rows are additionally written to a separate dataset named <run id>-comparison. Prefill: true | true |
resultOrder | No | string (enum: relevanceblender, exact-aware-popularity-rank, price-asc-rank, price-desc-rank, review-rank, date-desc-rank) | The ordering Amazon applies before results are read — all six are orderings Amazon's own sort control offers. Prefill: relevanceblender | price-asc-rank |
urls | No | array of string | Classic key. Used when queries is left empty, with the same meaning. | ["https://www.amazon.de/s?k=gaming+stuhl"] |
maxResults | No | integer (min 1, max 10000) | Classic key. Used as the per-marketplace limit when productsPerMarketplace is left empty. | 10 |
sortBy | No | string (enum: relevanceblender, recent, exact-aware-popularity-rank, price-asc-rank, price-desc-rank, review-rank, date-desc-rank) | Classic key. Used when resultOrder is left empty. The classic recent value now really does return newest arrivals. | recent |
proxyConfiguration | No | object (proxy editor) | Leave the default and each marketplace is reached over a route matched to that marketplace's own country, which is what makes local prices and local currency come back correctly. Prefill: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
{"queries": ["lego technic"],"marketplaces": ["com", "de", "co.uk"],"productsPerMarketplace": 15,"compareAcrossMarkets": true,"minMarketsForComparison": 2,"mirrorComparisonDataset": true,"resultOrder": "relevanceblender"}
Common pitfall: leaving marketplaces empty is not the same as picking all seven — it triggers
the classic fallback instead, where a plain keyword only ever reaches amazon.com and a pasted URL
only reaches its own marketplace. To fan a keyword out across several countries, marketplaces
must be set explicitly.
🔽 Output sample
Every row is typed, normalized JSON with a stable schema across marketplaces — the same field
names whether the row came from amazon.com or amazon.de. Export as JSON, CSV, Excel, XML or RSS
from the Apify Console or API, on the main dataset and, when mirrorComparisonDataset is on, the
separate <run id>-comparison dataset as well.
{"type": "product","isChild": false,"marketplace": "amazon.de","marketplaceCode": "de","country": "DE","currency": "EUR","keyword": "laptop","statusCode": 200,"statusMessage": "FOUND","domainCode": "de","page": 1,"currentPage": 1,"selectedCategory": "aps","browseNode": null,"nodeHierarchy": null,"resultCount": null,"resultCountStatus": "not-published","categories": [],"similarKeywords": [],"sortStrategy": "relevanceblender","searchResultPosition": 1,"searchUrl": "https://www.amazon.de/s?k=laptop&s=relevanceblender&page=1&ref=sr_pg_1","scrapedAt": "2026-08-08T12:00:00Z","asin": "B0DZZWMB2L","productDescription": "ASUS ROG Strix G16 Gaming Laptop","imgUrl": "https://m.media-amazon.com/images/I/71xyz.jpg","price": 1299.0,"priceLocal": 1299.0,"priceText": "1.299,00 €","retailPrice": 1499.0,"productRating": "4,5 von 5 Sternen","countReview": 539,"dpUrl": "https://www.amazon.de/ASUS-ROG-Strix-Gaming-Laptop/dp/B0DZZWMB2L","prime": true,"sponsored": false,"salesVolume": "1K+ bought in past month","deliveryMessage": "FREE delivery Tue, Aug 18","manufacturer": null,"series": null,"variations": [],"productDetails": [],"secondaryOffer": null}
{"type": "comparison","isChild": true,"keyword": "laptop","asin": "B0DZZWMB2L","productDescription": "ASUS ROG Strix G16 Gaming Laptop","marketsFound": ["amazon.co.uk", "amazon.com", "amazon.de"],"marketCount": 3,"priceByMarket": { "amazon.com": 1393.65, "amazon.de": 1299.0, "amazon.co.uk": 1199.0 },"currencyByMarket": { "amazon.com": "USD", "amazon.de": "EUR", "amazon.co.uk": "GBP" },"productUrlByMarket": { "amazon.com": "https://www.amazon.com/dp/B0DZZWMB2L", "amazon.de": "https://www.amazon.de/dp/B0DZZWMB2L", "amazon.co.uk": "https://www.amazon.co.uk/dp/B0DZZWMB2L" },"sameCurrency": false,"cheapestMarketplace": "amazon.co.uk","cheapestPrice": 1199.0,"cheapestCurrency": "GBP","highestMarketplace": "amazon.com","highestPrice": 1393.65,"priceSpreadPct": 16.23,"scrapedAt": "2026-08-08T12:00:00Z"}
How do you filter and target specific products?
This Actor's targeting is built around marketplace selection and query shape, not geographic radius or price bands. Four real controls:
- Keyword vs pasted search URL. A plain
queriesentry ("laptop") is broad and runs on every marketplace you select. A pasted Amazon search URL (https://www.amazon.de/s?k=…&i=…&rh=n:…) is more precise: it keeps its own marketplace and respects the category (i) and department browse node (rh) Amazon already scoped it to, so use it when you need one department rather than a whole catalogue. - Marketplace selection.
marketplacesis the scope-precision control here — pick the exact country set you need pricing for. Leaving it empty is not "all seven"; it triggers the classic single-marketplace fallback described above. - Comparison coverage threshold.
minMarketsForComparison(2–7) is the closest thing to a quality threshold this Actor exposes: raise it above2to keep only ASINs listed widely rather than on just one pair of marketplaces. There is no per-product rating or review-count filter at scrape time —productRatingandcountReviewcome back on every row for filtering downstream. - Volume and ordering.
productsPerMarketplace(1–10,000) caps how many products are pulled per term per marketplace, andresultOrderdecides which slice of the catalogue that cap lands on —price-asc-rankfor the cheapest items first,date-desc-rankfor newest arrivals.
{ "queries": ["wireless headphones"], "marketplaces": ["com", "de", "fr", "it", "es"], "productsPerMarketplace": 20 }
{ "queries": ["https://www.amazon.co.uk/s?k=gaming+chair&rh=n:11052591"], "marketplaces": ["co.uk"] }
{ "queries": ["usb c cable"], "marketplaces": ["com", "de"], "resultOrder": "price-asc-rank", "minMarketsForComparison": 2 }
▶️ Want to try other Amazon scrapers?
| Scraper | What it extracts |
|---|---|
| Amazon Product Details Scraper (Bestsellers & New Releases) | Full product detail pages, bestseller and new-release lists |
| Amazon Price Tracker — Title, Image & Product Updates | Repeated price/title/image checks on a fixed list of ASINs or URLs |
| Amazon DE Sellers Leads Scraper — Product Price & Ratings | Amazon.de seller and listing leads with price and rating data |
| Comparable marketplace scrapers | What it extracts |
|---|---|
| eBay Product Listing Scraper With Sold Price Data | eBay listings with sold-price history |
| Walmart Reviews Scraper With Seller & Variant Details | Walmart product reviews with seller and variant data |
| Shopify Products Scraper With Variant & SKU Rows | Shopify storefront products with variant and SKU-level rows |
How to extract Amazon data programmatically
The Actor runs like any Apify Actor: one authenticated call with a JSON input body, structured JSON back from the run's dataset — no scraping code, headless browser or proxy pool to maintain yourself.
🐍 Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run_input = {"queries": ["laptop"],"marketplaces": ["com", "de", "co.uk"],"productsPerMarketplace": 20,"compareAcrossMarkets": True,}run = client.actor("YOUR_USERNAME/amazon-search-scraper-by-country-currency").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item["type"] == "product":print(item["asin"], item["marketplace"], item["priceLocal"], item["currency"])
📤 Export to spreadsheets or CRM
Every dataset exports directly to CSV or Excel from the Apify Console or the
GET /v2/datasets/{id}/itemsasin to a product key column, productDescription to
a title column, priceLocal/currency to price columns, and dpUrl to a link column when
importing into a spreadsheet, BI tool or CRM.
⚖️ Is it legal to scrape Amazon?
Scraping publicly listed product data — the same prices, titles and images any shopper's browser loads on a public search-results page — is generally lawful; these listings exist to be found and compared by shoppers, and this Actor collects nothing that sits behind a login. This Actor returns product and marketplace data, not personal data about identifiable individuals, so GDPR does not attach to its output. The applicable framework is Amazon's own Terms of Service, which govern automated access to amazon.com, and database-rights law where it applies to the compiled catalogue data. Consult legal counsel for commercial applications involving bulk storage of this data.
❓ FAQ
How do I know if a product listing is still active or in stock?
The Actor reports the search results exactly as Amazon rendered them at request time; there is no
persisted "delisted" flag. A row with priceText set but priceLocal as null usually means the
tile carried no purchasable price at that moment (for example a title bundled with a membership
rather than sold outright) — re-run the search to check current availability rather than treating
a past run's rows as live inventory.
Can I get cross-marketplace price comparison along with the product rows?
Yes — turn on compareAcrossMarkets (on by default) and every ASIN found on minMarketsForComparison
or more of your selected marketplaces gets an extra type: "comparison" row in the same dataset,
carrying priceByMarket, cheapestMarketplace and priceSpreadPct. Set mirrorComparisonDataset
to also write those rows to their own <run id>-comparison dataset.
How accurate is the price and rating data?
The Actor returns data exactly as it appears on the public Amazon search page at request time. Accuracy depends on how current Amazon's own listing is at that moment — prices and stock change without notice, so re-scrape close to the point of use rather than relying on a stored run.
How many products can I get per run?
productsPerMarketplace (and its classic alias maxResults) accepts 1–10000. ⚠️ In practice
the Actor also stops a keyword on one marketplace once it has walked 20 result pages
(page_ceiling in the source) or reached Amazon's own last page, whichever comes first — a hard
cap the input schema does not itself expose. Most searches will hit that page ceiling, or run out
of Amazon's own results, well before 10,000 products are collected.
How do I compare a product's price across specific marketplaces only?
Set marketplaces to exactly the countries you want compared and leave compareAcrossMarkets on.
Raise minMarketsForComparison (2–7) if you only want ASINs that are listed on most of your
selected countries, not just a shared pair.
Does Amazon Search Scraper By Country & Currency work with Claude, ChatGPT, and AI agent frameworks?
It is not published with an MCP server. It is callable as a standard Apify Actor by any agent
framework that can make an authenticated HTTP call or use the apify_client SDK — pass a JSON
input, read back a JSON dataset.
How does it compare to other Amazon scrapers?
No competitor listings were analyzed for this edition of the README, so no competitor claim is made here. What this Actor's own architecture does is fan a single keyword out across up to seven Amazon marketplaces and roll up the shared ASINs into comparison rows inside one run — a workflow that otherwise needs a separate run per marketplace and a manual merge step.
Can I use it without an Amazon API key or developer account?
Yes. You only need an Apify account to run it — no Amazon Associates enrollment, no qualifying sales, and no Amazon API credentials of any kind.
Conclusion
Amazon Search Scraper By Country & Currency turns one keyword or search URL into typed product
rows across up to seven Amazon marketplaces, and rolls the shared ASINs into ready-made price
comparison rows inside the same run — no Amazon Associates account, no per-marketplace API
credentials, and no manual merge of seven separate exports. Start a run from the Apify Console or
call it with apify_client to get structured JSON, CSV or Excel back on your own schedule.