Amazon Search Scraper avatar

Amazon Search Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Amazon Search Scraper

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

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

1

Monthly active users

6 days ago

Last modified

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 CategoryPublicly AvailableRestricted behind
Title, price, list price, image, ASIN
Star rating and review countFull review text and reviewer identities — separate review page, not returned by this Actor
Organic rank and sponsored flagAmazon'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&AProduct detail page — not returned by this Actor
Seller inventory, order and account dataAmazon 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 NameDescription
asinAmazon's product identifier
productDescriptionProduct title as Amazon renders it
manufacturerBrand, resolved against the brand list Amazon publishes for the query; null when the brand cannot be confirmed
dpUrlAbsolute, click-ready product URL with Amazon's tracking blob stripped
imgUrlProduct thumbnail URL
variationsColour, size or capacity options shown on the tile
productDetailsOn-tile attribute pairs, e.g. RAM: 8 GB, Display Size: 16 inches
priceCurrent price as a number
retailPriceStruck-through list / typical price, only when Amazon marks one; null otherwise
currencyISO currency code for the marketplace, read off the rendered price symbol
productRatingStar rating text, e.g. 4.5 out of 5 stars
countReviewNumber of ratings; null — never 0 — when the product is genuinely unrated
primePrime delivery available for this listing
sponsoredThe listing is a paid placement
organicRankTrue organic position in Amazon's ranking, continuous across pages; null for sponsored placements
searchResultPosition1-based position of the tile on its own page
salesVolumeAmazon's recent-purchases line, e.g. 10K+ bought in past month; null when Amazon shows none
deliveryMessageDelivery promise text
secondaryOfferLowest alternate (used / new) offer price; null when there is none
offerCountHow many alternate offers Amazon reports
keywordThe keyword this row came from
domainCodeMarketplace suffix: com, co.uk, de, fr, it, es, ca
pageResult page the row was found on
sortStrategyThe order Amazon actually applied — its own echo, not a copy of your input
resultCountTotal products matching the query; null when Amazon does not print a count
maxPagesAvailableLast page Amazon will serve for this query
refinementChipsAmazon's keyword refinement suggestions, e.g. Thinkpad, 2-in-1, 17-inch
similarKeywordsRelated searches: array of { "keyword": "...", "url": "..." }
selectedCategoryDepartment alias used for the search (aps = all departments)
browseNodeCategory node ID in effect; null when none was set or found
nodeHierarchySelected department path, e.g. Electronics > Computers & Accessories
categoriesDepartment facets Amazon offers for the query (populated on department-scoped searches)
searchUrlThe exact search URL the row came from
scrapedAtISO 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).

FeatureAmazon Creators APIAmazon Search Scraper
Access requirementEnrolled Amazon Associate with at least 10 qualifying sales in the trailing 30 daysNone — an Apify account only
Approval processAssociates Central registration and reviewNo approval step
Search operationSearchItems returns catalog items matching a keywordurls accepts plain keywords or a live search URL, one entry per search
Organic rank / page positionNot exposed — items are not returned in the order shoppers actually see on the results pageorganicRank and searchResultPosition report the real on-page order
Sponsored placementsNot exposedsponsored flags paid placements on every row
Setup timeAssociates enrollment and qualifying sales history before the first callProvide 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.

  1. Open Amazon Search Scraper on the Apify Console.
  2. Add one or more entries to urls — plain keywords (e.g. laptop) or a full Amazon search URL for a specific marketplace.
  3. Set optional filters worth tuning: maxResults, sortBy, category, browseNode.
  4. Click Start.
  5. 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 organicRank and sortStrategy to confirm where a product actually lands under Amazon's own result order, not a guessed position.
  • 💰 Price and competitor monitors use price, retailPrice, and secondaryOffer to catch markdowns and undercut alternate offers on a schedule.
  • 📊 Market researchers use resultCount, maxPagesAvailable, and categories to size a niche or department before committing budget to it.
  • 🛍️ Catalogue builders use asin, dpUrl, imgUrl, and productDetails to populate a spreadsheet or product database without touching HTML.
  • 🤖 AI engineers feed productDescription, productDetails, and refinementChips into 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

ParameterRequiredTypeDescriptionExample Value
urlsYesarray🔗 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"]
maxResultsNointeger📦 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
sortByNostring↕️ 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"
categoryNostring🗂️ 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"
browseNodeNostring🔢 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"
proxyConfigurationNoobject🌐 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 ApifyClient
client = 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.


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.


ScraperWhat it extracts
Amazon Product Details ScraperFull single-product detail pages by ASIN or direct URL
Amazon Price TrackerScheduled price, discount, rating and stock monitoring by URL
Amazon DE Sellers Leads ScraperMarketplace seller leads from Amazon's German storefront
eBay Product Listing ScraperProduct listings, prices, and seller data from eBay
Walmart Reviews ScraperCustomer reviews and ratings from Walmart product pages
Shopify Products ScraperProduct 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.