Amazon Search Scraper
Pricing
$19.99/month + usage
Amazon Search Scraper
The Amazon Search Results Scraper lets you extract product data directly from Amazon search results. Collect titles, prices, ratings, ASINs, URLs, and more at scale. Ideal for market research, competitor analysis, and e-commerce insights. Fast, accurate, and customizable scraping solution.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
Scraper Engine
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Amazon Search Scraper — ASIN, Price, Rank and Review Data
Amazon Search Scraper turns any keyword or Amazon search URL into structured JSON: one row per product with its ASIN, title, brand, current and list price, currency, star rating, review count, true organic rank, and whether it's a sponsored placement. Rows stream into your dataset the moment each results page is parsed — no HTML parsing, no selectors, no headless browser. Works across seven Amazon marketplaces. Start a run below and watch products land in your dataset as Amazon returns them.
🛒 What is Amazon Search Scraper?
Amazon Search Scraper is an Apify Actor that fetches Amazon's public search-results pages for one or more keywords (or ready-made search URLs) and returns a structured JSON row per product — no browser scripting, no manual selectors. It runs entirely against Amazon's public search pages: no Amazon account, Associates membership, or API key is needed to start a run. It's built for SEO and rank trackers, price and competitor monitors, market researchers, and developers who need clean product data feeding a pipeline, dashboard, or AI agent instead of scraped HTML.
🌐 What Amazon product data is publicly available to scrape?
Amazon shows every field needed to browse a search results page — title, price, rating, delivery promise, Prime and sponsored flags — to any visitor without an account; deeper product-page and account-level data sit behind other gates.
| Data Category | Publicly Available | Restricted behind |
|---|---|---|
| Title, price, list price, image, ASIN | ✅ | — |
| Star rating and review count | ✅ | Full review text and reviewer identities — separate review page, not returned by this Actor |
| Organic rank and sponsored flag | ✅ | Amazon's ad-auction internals — not exposed, only the on-page result |
| Delivery promise and Prime badge | ✅ | — |
| Alternate / used offer price | ✅ (only on tiles that show one) | Full buy-box offer list — product detail page |
| Bestseller rank, breadcrumb category path, Q&A | ❌ | Product detail page — not returned by this Actor |
| Seller inventory, order and account data | ❌ | Amazon Seller Central login |
Amazon Search Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.
📊 What data can I extract with Amazon Search Scraper?
Amazon Search Scraper returns per-product listing fields, pricing and ranking metrics, and search-context metadata repeated on every row — 34 fields per row.
| Field Name | Description |
|---|---|
asin | Amazon's product identifier |
productDescription | Product title as Amazon renders it |
manufacturer | Brand, resolved against the brand list Amazon publishes for the query; null when the brand cannot be confirmed |
dpUrl | Absolute, click-ready product URL with Amazon's tracking blob stripped |
imgUrl | Product thumbnail URL |
variations | Colour, size or capacity options shown on the tile |
productDetails | On-tile attribute pairs, e.g. RAM: 8 GB, Display Size: 16 inches |
price | Current price as a number |
retailPrice | Struck-through list / typical price, only when Amazon marks one; null otherwise |
currency | ISO currency code for the marketplace, read off the rendered price symbol |
productRating | Star rating text, e.g. 4.5 out of 5 stars |
countReview | Number of ratings; null — never 0 — when the product is genuinely unrated |
prime | Prime delivery available for this listing |
sponsored | The listing is a paid placement |
organicRank | True organic position in Amazon's ranking, continuous across pages; null for sponsored placements |
searchResultPosition | 1-based position of the tile on its own page |
salesVolume | Amazon's recent-purchases line, e.g. 10K+ bought in past month; null when Amazon shows none |
deliveryMessage | Delivery promise text |
secondaryOffer | Lowest alternate (used / new) offer price; null when there is none |
offerCount | How many alternate offers Amazon reports |
keyword | The keyword this row came from |
domainCode | Marketplace suffix: com, co.uk, de, fr, it, es, ca |
page | Result page the row was found on |
sortStrategy | The order Amazon actually applied — its own echo, not a copy of your input |
resultCount | Total products matching the query; null when Amazon does not print a count |
maxPagesAvailable | Last page Amazon will serve for this query |
refinementChips | Amazon's keyword refinement suggestions, e.g. Thinkpad, 2-in-1, 17-inch |
similarKeywords | Related searches: array of { "keyword": "...", "url": "..." } |
selectedCategory | Department alias used for the search (aps = all departments) |
browseNode | Category node ID in effect; null when none was set or found |
nodeHierarchy | Selected department path, e.g. Electronics > Computers & Accessories |
categories | Department facets Amazon offers for the query (populated on department-scoped searches) |
searchUrl | The exact search URL the row came from |
scrapedAt | ISO 8601 UTC timestamp of when the row was collected |
Product identity & listing fields
asin, productDescription, manufacturer, dpUrl, imgUrl, variations, productDetails
Pricing, ranking & engagement fields
price, retailPrice, currency, productRating, countReview, prime, sponsored, organicRank, searchResultPosition, salesVolume, deliveryMessage, secondaryOffer, offerCount
Search-context fields (repeated on every row)
keyword, domainCode, page, sortStrategy, resultCount, maxPagesAvailable, refinementChips, similarKeywords, selectedCategory, browseNode, nodeHierarchy, categories, searchUrl, scrapedAt
🤖 Add-on: Need additional Amazon data?
For full single-ASIN or direct product-URL detail pages, pair this Actor with Amazon Product Details Scraper. For scheduled price, stock and rating monitoring by URL, see Amazon Price Tracker. For marketplace seller leads on the German storefront, see Amazon DE Sellers Leads Scraper.
🆚 How does Amazon Search Scraper differ from the official Amazon API?
Amazon's official product-catalog API — the Creators API, successor to the now-deprecated Product Advertising API 5.0 — is scoped to approved Amazon Associates driving affiliate traffic, not to general search-rank or listing monitoring. As of 2026-08-15, PA-API 5.0 requests return an AccessDeniedException telling callers to migrate (Amazon's own deprecation notice, checked 2026-08-15), and the Creators API requires enrollment plus ongoing qualifying sales before it will answer a SearchItems call (Creators API introduction, checked 2026-08-15).
| Feature | Amazon Creators API | Amazon Search Scraper |
|---|---|---|
| Access requirement | Enrolled Amazon Associate with at least 10 qualifying sales in the trailing 30 days | None — an Apify account only |
| Approval process | Associates Central registration and review | No approval step |
| Search operation | SearchItems returns catalog items matching a keyword | urls accepts plain keywords or a live search URL, one entry per search |
| Organic rank / page position | Not exposed — items are not returned in the order shoppers actually see on the results page | organicRank and searchResultPosition report the real on-page order |
| Sponsored placements | Not exposed | sponsored flags paid placements on every row |
| Setup time | Associates enrollment and qualifying sales history before the first call | Provide keywords or URLs and start the run |
Use the Creators API if you're an approved Associate building affiliate shopping experiences with Amazon-hosted attribution links. Use Amazon Search Scraper if you need the actual public search-results page — rank, sponsored share, delivery text — without qualifying for or maintaining Associates sales thresholds.
🚀 How to use Amazon Search Scraper
Only one input is required — everything else has a working default.
- Open Amazon Search Scraper on the Apify Console.
- Add one or more entries to
urls— plain keywords (e.g.laptop) or a full Amazon search URL for a specific marketplace. - Set optional filters worth tuning:
maxResults,sortBy,category,browseNode. - Click Start.
- Watch products stream into the Dataset tab as they're collected; export as JSON, CSV, Excel or XML, or read the dataset through the Apify API while the run is still going.
How to scale to bulk product extraction
urls is an array — the stringList editor accepts as many keywords or search URLs as you paste in, one search per entry, all in a single run. maxResults applies per entry, not to the whole run: two keywords with a limit of 25 return up to 50 products in total, never one keyword silently swallowing the whole quota. To cover more marketplaces or departments, add more entries to the list instead of looping separate runs.
💡 What can you do with Amazon product data?
- 🎯 SEO and rank trackers use
organicRankandsortStrategyto confirm where a product actually lands under Amazon's own result order, not a guessed position. - 💰 Price and competitor monitors use
price,retailPrice, andsecondaryOfferto catch markdowns and undercut alternate offers on a schedule. - 📊 Market researchers use
resultCount,maxPagesAvailable, andcategoriesto size a niche or department before committing budget to it. - 🛍️ Catalogue builders use
asin,dpUrl,imgUrl, andproductDetailsto populate a spreadsheet or product database without touching HTML. - 🤖 AI engineers feed
productDescription,productDetails, andrefinementChipsinto a RAG pipeline or shopping agent, so it can compare products and answer questions like "which of these has more storage" without re-scraping HTML.
🛡️ How does Amazon Search Scraper handle rate limits and blocking?
Each marketplace gets its own connection using a browser-impersonating HTTP client (curl_cffi, Chrome TLS fingerprint) routed through Apify Proxy's residential pool, matched to the country of the marketplace being searched. A warm-up request to the marketplace homepage runs before the first search page. If Amazon answers with its short interstitial holding page instead of results, the Actor follows the redirect automatically rather than treating it as a failure. A page only counts as a real answer once it carries an actual results marker (the search-results block, the sort selector, or a genuine "no results" message) — anything else is retried on a freshly renewed connection with backoff, up to 3 renewed sessions per page. After 3 consecutive missed pages for one keyword, that keyword's paging stops early rather than retrying forever.
⚠️ This Actor reads only the search-results page — fields that live exclusively on a product's own detail page (bestseller rank, breadcrumb category, Q&A, full review text) are not collected, by design.
⬇️ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
urls | Yes | array | 🔗 One entry per search. Plain keywords run on amazon.com. Paste a country search URL (for example https://www.amazon.co.uk/s?k=running+shoes) to search that marketplace instead. Supported marketplaces: .com, .co.uk, .de, .fr, .it, .es, .ca | ["laptop", "https://www.amazon.co.uk/s?k=running+shoes"] |
maxResults | No | integer | 📦 Maximum number of products to collect FOR EACH keyword or URL you entered. Two keywords with a limit of 25 return up to 50 products in total. The Actor stops early when Amazon has no more results for that keyword. Default 10, min 1, max 10000. | 25 |
sortBy | No | string | ↕️ The result order Amazon applies before the products are collected. Each row reports back the order Amazon actually used, so you can always confirm it. Default "relevanceblender". Enum: relevanceblender (Featured — Amazon's default best match), price-asc-rank (Price: low to high), price-desc-rank (Price: high to low), review-rank (Average customer review), date-desc-rank (Newest arrivals), exact-aware-popularity-rank (Best sellers). | "review-rank" |
category | No | string | 🗂️ Limit all searches to a single Amazon department. Leave on 'All departments' to search the whole catalogue. When a department is selected, each row also reports the department facets and the selected department path. Default "aps". Enum: aps, electronics, computers, office-products, fashion, shoes, beauty, hpc, grocery, kitchen, garden, lawngarden, tools, appliances, automotive, industrial, pets, baby-products, toys-and-games, videogames, sporting, stripbooks, movies-tv, digital-music, mi. | "electronics" |
browseNode | No | string | 🔢 Optional. An exact Amazon category node ID (for example 172282) to scope every search to that category. Leave empty unless you already know the node you want. A node ID pasted inside a search URL is picked up automatically. | "172282" |
proxyConfiguration | No | object | 🌐 Controls how the Actor reaches Amazon. The preselected option is the one that works reliably for Amazon search pages, and the Actor matches the connection country to the marketplace you are searching. Default {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
Example input
{"urls": ["laptop", "wireless headphones", "https://www.amazon.co.uk/s?k=running+shoes"],"maxResults": 25,"sortBy": "review-rank","category": "electronics","browseNode": "","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
⬆️ Output
Every item in the dataset is typed, normalized JSON with a consistent 34-key schema across runs — export as JSON, CSV, Excel or XML from the Apify Console, or read it through the Apify API. Rows stream in the moment each page is parsed. The Actor charges one row_result event per row pushed, and it never pushes a tile it cannot identify by ASIN — a search that returns nothing bills nothing.
Example output
{"organicRank": 2,"asin": "B0C3HCD34R","productDescription": "Soundcore by Anker Q20i Hybrid Active Noise Cancelling Headphones","manufacturer": "Soundcore","price": 39.98,"currency": "USD","retailPrice": 69.99,"productRating": "4.5 out of 5 stars","countReview": 91234,"prime": true,"sponsored": false,"salesVolume": "10K+ bought in past month","deliveryMessage": "Join Prime to get FREE delivery Tomorrow, Aug 16","secondaryOffer": 37.99,"offerCount": 4,"variations": ["Black", "Navy Blue", "White"],"productDetails": ["Connectivity Technology: Bluetooth", "Noise Control: Active Noise Cancellation"],"dpUrl": "https://www.amazon.com/soundcore-Cancelling-Headphones-Bluetooth/dp/B0C3HCD34R","imgUrl": "https://m.media-amazon.com/images/I/51CnDMbXZzL._AC_UY218_.jpg","keyword": "wireless headphones","domainCode": "com","page": 1,"searchResultPosition": 2,"sortStrategy": "relevanceblender","resultCount": 56545,"maxPagesAvailable": 20,"refinementChips": ["Noise Cancelling", "Earbuds", "Gym"],"similarKeywords": [{ "keyword": "wireless earbuds", "url": "https://www.amazon.com/s?k=wireless+earbuds" }],"selectedCategory": "aps","browseNode": null,"nodeHierarchy": null,"categories": [],"searchUrl": "https://www.amazon.com/s?k=wireless+headphones&s=relevanceblender&page=1&ref=sr_pg_1","scrapedAt": "2026-08-15T09:41:22Z"}
⚙️ How does it work?
Amazon Search Scraper reaches Amazon directly over HTTP with a browser-matching TLS and header fingerprint (curl_cffi impersonating Chrome) — not a headless browser, so there is no page rendering to wait on. Each marketplace gets its own warmed-up connection routed through Apify Proxy's residential pool, matched to that marketplace's country, so a German search is answered with German pricing and delivery text. If Amazon serves its short interstitial holding page instead of results, the Actor follows it automatically. A page only counts as a real answer once it carries an actual results marker; anything else is retried on a fresh connection. Only what's printed on the public search-results page is read — no login, no account. Each field is parsed independently and defaults to null rather than breaking the row, so the output schema stays the same shape regardless of small changes to Amazon's page markup.
🔌 Integrations
Amazon Search Scraper runs on Apify, so it works with anything that can call the Apify API or the apify-client SDKs.
Calling Amazon Search Scraper programmatically
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("<YOUR_USERNAME>/amazon-search-scraper").call(run_input={"urls": ["laptop", "wireless headphones"],"maxResults": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["asin"], item["price"], item["organicRank"])
Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.
No-code tools (n8n, Make, LangChain)
In n8n, use the HTTP Request node pointed at the Actor's run-sync-get-dataset-items endpoint to trigger a run and receive results in one call. In Make, use the Apify app's "Run Actor and get dataset items" module inside a scenario. In LangChain, load results straight into a document pipeline with ApifyDatasetLoader, mapping each JSON field to document content or metadata.
⚖️ Is it legal to scrape Amazon search results?
Scraping publicly available product listing data — titles, prices, ratings, rank — is generally lawful; this is business and product-catalog data, not personal data. Amazon Search Scraper returns only what any visitor sees on a public search page, with no login or account activity involved. Because this is business/product data rather than personal data, no GDPR or CCPA lawful-basis analysis applies here — the relevant framework is Amazon's own Terms of Service and database-rights law governing reuse of catalog content, which govern how you may use the collected data, particularly at commercial scale. Consult legal counsel if your use case involves bulk storage or redistribution of scraped product data.
❓ Frequently asked questions
What Amazon product fields does Amazon Search Scraper return?
The top fields are asin, productDescription, price, organicRank, and productRating, alongside 29 more covering brand, delivery, alternate offers, and search context — see What data can I extract above for the full list.
Does Amazon Search Scraper require an Amazon account or login?
No. The input schema has no login or credential fields — the Actor fetches public search-results pages directly and never authenticates as an Amazon user.
How many products can I extract in one run?
Up to maxResults per keyword or URL, which accepts any value from 1 to 10,000 (default 10). It is not a total across the run: ten entries with maxResults: 50 can return up to 500 rows.
What happens if a keyword returns zero results?
Nothing is pushed for that keyword, and nothing is billed. When Amazon's own "did not match any products" page is confirmed as the real answer (not a failed fetch), the Actor stops paging for that keyword after the first page, logs a warning, and records endedBecause: "last-page-reached" for it in the RUN_SUMMARY key-value store record — a genuine zero-result search is never confused with a page that simply didn't come back.
Can I search multiple Amazon keywords or URLs at once?
Yes. urls accepts an array — paste as many keywords or search URLs as you need and each one is searched and paginated independently in the same run, up to your maxResults cap per entry.
Does Amazon Search Scraper work with Claude, ChatGPT, and other AI agent tools?
Yes, as an HTTP endpoint — start a run and pull results via the Apify API or apify-client from any agent framework or custom tool. No dedicated MCP server is documented for this Actor.
How does Amazon Search Scraper determine true organic rank?
organicRank is read from the same rank number Amazon itself encodes in each product link (/ref=sr_..._N), not from a per-page tile counter — so it stays continuous across pages (page 2 continues from where page 1 left off) and is null on sponsored placements, since those aren't part of the organic sequence at all.
Does Amazon Search Scraper return data in a format LLMs can use directly?
Yes. Typed, normalized JSON with consistent field names across runs — no HTML parsing or CSS selectors needed. Pass it directly to an LLM prompt, index it into a vector store, or feed it to an agent tool.
What happens when Amazon changes its layout or anti-bot system?
The Actor is maintained, and the output schema is designed to stay stable across Amazon markup changes since each field is parsed independently with its own fallback logic. No specific update turnaround time is published.
Can I use Amazon Search Scraper without managing proxies or browser infrastructure?
Yes. Proxy routing, session renewal, interstitial handling, and retries with backoff are all handled automatically — you only need to touch proxyConfiguration if you want to force a different setup than the preselected residential default.
Which Amazon fields work best for AI training data and RAG indexing?
For RAG, index the high-information text fields: productDescription, productDetails, and refinementChips. For structured training data, price, productRating, countReview, and organicRank return as consistent typed primitives across every record.
🔗 Related scrapers
| Scraper | What it extracts |
|---|---|
| Amazon Product Details Scraper | Full single-product detail pages by ASIN or direct URL |
| Amazon Price Tracker | Scheduled price, discount, rating and stock monitoring by URL |
| Amazon DE Sellers Leads Scraper | Marketplace seller leads from Amazon's German storefront |
| eBay Product Listing Scraper | Product listings, prices, and seller data from eBay |
| Walmart Reviews Scraper | Customer reviews and ratings from Walmart product pages |
| Shopify Products Scraper | Product catalogs and pricing from independent Shopify stores |
💬 Your feedback
Found a bug or missing a field? Let us know — open an issue or message through the Actor's page on the Apify Store, and we'll take a look.