Amazon Search Scraper By Price, Brand & Rating Filters
Pricing
from $4.99 / 1,000 results
Amazon Search Scraper By Price, Brand & Rating Filters
Amazon Search Scraper finds products using keyword, price, brand, rating, category, and other filters. Extract product titles, prices, ratings, reviews, ASINs, sellers, and product URLs for market research, price tracking, competitor analysis, and product discovery.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
API Empire
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Amazon Search Scraper — Extract Products, Prices and Discounts as JSON
Search Amazon and get back only the products that match your price band, your brands and your rating floor — with every discount signal the result tile carries already parsed out: list price, discount %, coupon or deal wording, badge, and how many other offers exist. Every row is typed, normalized JSON — no HTML, no selectors, no parsing. Point it at a keyword or a full Amazon search link, set the filters you care about, and get a clean dataset of matching products with their pricing, rating, delivery and alternate-offer data ready to export or pipe into an agent, a spreadsheet, or a price-tracking pipeline.
What is the Amazon Search Scraper By Price, Brand & Rating Filters?
It's an Apify Actor that runs an Amazon keyword or search-link query, narrows it at the source using the same price, brand and rating refinements Amazon's own search page offers, and returns the matching products as structured rows — list price and discount percentage, badge and promo wording, alternate-offer count and lowest other price, rating, review count, delivery message, and the exact search position and order Amazon confirmed for the row. No Amazon account or login is required; it reads Amazon's public search-result pages directly. It is reachable as an HTTP endpoint by any script or agent framework that can call the Apify API.
- Search by keyword or by pasting a marketplace-specific Amazon search URL
- Narrow at the source by price band, brand list, minimum star rating, and minimum discount %
- Pick from every ordering mode Amazon's own result page actually offers
- Read alternate-offer signals (other sellers, used offers, lowest other price) per row
- Export as JSON, CSV or any format the Apify dataset supports
What data does the Amazon Search Scraper collect?
Each matched product is one row that bundles four kinds of data pulled off the same result tile: the product listing itself, its pricing and discount signals, its alternate-offer data, and the search context that produced it.
| Data Type | Key Fields | JSON Field Names |
|---|---|---|
| Product listing | ASIN, title, brand, image, product link, rating, review count | asin, productDescription, manufacturer, imgUrl, dpUrl, productRating, countReview |
| Pricing & discount signals | current price, list/typical price, discount %, badge, coupon or deal text | price, listPrice, listPriceLabel, discountPercent, isDiscounted, badge, promoText |
| Alternate offers | other-seller count, lowest other price, used-offer flag | offerCount, lowestOtherPrice, hasUsedOffer, secondaryOffer |
| Search context | keyword, page, rank in results, order requested vs. confirmed, filters applied | keyword, page, searchResultPosition, sortRequested, selectedSort, appliedFilters |
Need more Amazon data?
If you also need individual product-detail pages (full specs, all images, Q&A, seller offers beyond the search tile) or Amazon review threads, look for a dedicated Amazon product-detail or Amazon review Actor alongside this one — this Actor is built specifically for filtered search results, not detail-page or review extraction.
How does the Amazon Search Scraper differ from the official Amazon API?
Amazon's Product Advertising API 5.0 (PA-API) has been deprecated and replaced by the Amazon Creators API — as verified on Amazon's own Creators API documentation on 2026-08-15, requests still sent to the old PA-API endpoint now receive an HTTP 403 AccessDeniedException directing callers to migrate. The Creators API is gated behind Amazon Associates program membership, not open access.
| Feature | Amazon Creators API | Amazon Search Scraper (this Actor) |
|---|---|---|
| Account requirement | Active Amazon Associates enrollment for the target marketplace (verified 2026-08-15) | None — run it directly on Apify |
| Sales quota to keep access | At least 10 qualifying sales in the past 30 days (verified 2026-08-15) | None |
| Access continuity | Revoked after 30 days without qualifying sales; restored roughly 2 days after sales ship (verified 2026-08-15) | Available on every run, independent of any affiliate performance |
| Predecessor status | Successor to PA-API 5.0, which Amazon has deprecated (verified 2026-08-15) | Not applicable — reads Amazon's public search pages directly |
| Search-time price/brand/rating narrowing | Not documented on the pages checked 2026-08-15 | priceMin, priceMax, brandFilter and minRating narrow the Amazon query itself |
| Marketplaces reachable | Per enrolled Associates marketplace | amazon.com, .co.uk, .de, .fr, .it, .es, .ca |
The Creators API is the right choice if you're already an enrolled Associate generating qualifying sales and only need product lookups for content you publish. This Actor is the right choice if you want filtered Amazon search results today, without an Associates account or a sales quota to maintain.
Why do developers and teams scrape Amazon search results?
For AI engineers and agent builders
Feed filtered Amazon product rows straight into a RAG index or an agent's tool loop — asin, price, discountPercent and productRating are already typed fields, so a shopping or price-comparison agent can reason over them without a parsing step. Because priceMin, brandFilter and minRating narrow the query before results ever reach your pipeline, an agent can be given a budget and a brand shortlist and only see products that already qualify.
For pricing and market analysts
Track how a category's price distribution and discount depth move over time by re-running the same keyword with the same filters on a schedule and diffing price, listPrice and discountPercent across runs. resultOrder set to Best Sellers or Avg. Customer Review gives a second, independently-ranked view of the same category without a separate query.
For dropshippers and resellers
Filter by brandFilter and a price ceiling to build a sourcing shortlist, then use offerCount, lowestOtherPrice and hasUsedOffer to see how contested a listing already is before committing to it. minDiscountPercent surfaces items already discounted enough to be worth reselling.
For developers building data products
Because output field names are fixed by this Actor's own code rather than by Amazon's page markup, a price-tracking app, deal-alert bot or catalog-enrichment pipeline built on top of it keeps working across Amazon's own front-end changes. searchResultPosition and selectedSort make it possible to reconstruct exactly how a result set was ranked at scrape time.
How to scrape Amazon search results (step by step)
- Open Amazon Search Scraper By Price, Brand & Rating Filters on its Apify Store page and click Try for free (or Run, if you already use it).
- Add one or more entries to
searchTargets— a plain keyword (e.g.wireless headphones) or a full Amazon search link for a specific marketplace. No input is strictly required; the field defaults tolaptop,wireless headphonesif left untouched. - Set
priceMin/priceMax,brandFilter,minRatingandminDiscountPercentto narrow the search, and pickresultOrderfor how Amazon should rank results before they're collected. - Click Start — matched product rows stream into the dataset as they're found.
- Download results as JSON or CSV from the Storage tab, or pull them via the Apify API /
apify_client.
What to do when Amazon changes its structure
Amazon periodically changes its search-result page markup. This Actor is maintained against those changes, and its output field names and types stay stable on your end — an integration built against this Actor's schema keeps working without you having to track Amazon's front-end changes yourself.
What changed in Amazon scraping recently?
This Actor's own build notes record concrete 2026 changes to Amazon's search-result pages. The result-count element (s-result-info-bar) that used to sit above the grid is gone on amazon.com, so result totals now have to be read off the breadcrumb line instead. Result tiles also stopped printing the brand/manufacturer name as its own text on the tile — brand now has to be resolved against the page's own brand-refinement list, since it's no longer stated directly. Department/category links have disappeared from the search-results page entirely; that hierarchy is now only available on the individual product-detail page, not the search page. Separately, some requests are met with an Akamai bot-management interstitial (bm-verify) instead of the results page, which this Actor completes automatically rather than treating as a failure. None of this requires any action from you — the scraper is maintained against these changes as they're found.
⬇️ Input
searchTargets is the only field you're likely to touch; everything else narrows the search or is a legacy alias. No parameter is required — every field can be left at its default.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
searchTargets | No | Array of strings | One entry per search. A plain keyword searches amazon.com; paste a country search link to search that marketplace instead. Default: laptop, wireless headphones. | ["wireless headphones", "https://www.amazon.co.uk/s?k=running+shoes"] |
priceMin | No | Integer (0–1,000,000) | Only keep products priced at or above this amount, in the marketplace's own currency. Leave empty for no lower bound. | 100 |
priceMax | No | Integer (0–1,000,000) | Only keep products priced at or below this amount. Leave empty for no upper bound. | 500 |
brandFilter | No | Array of strings | Only keep products from these brands, spelled exactly as Amazon's own brand list spells them. Leave empty for all brands. | ["HP", "Dell", "Lenovo"] |
minRating | No | String (enum: any, 4, 3, 2, 1) | Only keep products whose average customer rating is at least this many stars. Products with no ratings yet are excluded when a floor is set. Default: any. | "4" |
minDiscountPercent | No | Integer (0–99) | Only keep products reduced by at least this much off their list/typical price. Default: 0 (no floor). | 40 |
onlyDiscounted | No | Boolean | Keep only products currently below their list or typical price, of any size. Default: false. | true |
includeOtherOffers | No | Boolean | Fill in offerCount, lowestOtherPrice, hasUsedOffer and secondaryOffer from the other-sellers line. Switch off to leave those four fields empty. Default: true. | true |
productLimit | No | Integer (1–10,000) | How many products to collect for EACH entry in searchTargets (not shared across them), counted after your filters are applied. Default: 10. | 25 |
resultOrder | No | String (enum: relevanceblender, price-asc-rank, price-desc-rank, review-rank, date-desc-rank, exact-aware-popularity-rank) | The order Amazon ranks results in before collection. Default: relevanceblender (Featured). | "price-asc-rank" |
urls | No | Array of strings | Legacy alias of searchTargets. Same meaning; used only when searchTargets is empty. | [] |
maxResults | No | Integer (1–10,000) | Legacy alias of productLimit. Used only when productLimit is empty. | 25 |
sortBy | No | String (free text) | Legacy alias of resultOrder. Used only when resultOrder is empty. The original recent value is honoured as Newest Arrivals. | "recent" |
proxyConfiguration | No | Object (proxy editor) | Connection settings. The prefilled setting (useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"], apifyProxyCountry: "US") is used automatically when left untouched. | { "useApifyProxy": true } |
Example input:
{"searchTargets": ["wireless headphones", "laptop"],"priceMin": 50,"priceMax": 300,"brandFilter": ["Sony", "JBL"],"minRating": "4","minDiscountPercent": 20,"onlyDiscounted": false,"includeOtherOffers": true,"productLimit": 25,"resultOrder": "review-rank","proxyConfiguration": { "useApifyProxy": true }}
Common pitfall: productLimit applies per entry in searchTargets, not as a shared total — two keywords with productLimit: 25 can return up to 50 rows, not 25.
⬆️ Output
Every matched product is pushed to the dataset as one typed JSON row the moment it's found — nothing else is written to the table, so a run with no matches bills and returns nothing. Export from the Storage tab as JSON, CSV, Excel, XML or any other format the Apify dataset supports.
Scraped product
{"asin": "B0CHX1W1XY","productDescription": "Sony WH-1000XM5 Wireless Noise Cancelling Headphones","imgUrl": "https://m.media-amazon.com/images/I/61+btTiGVUL._AC_UY218_.jpg","price": 279.99,"listPrice": 399.99,"listPriceLabel": "List","retailPrice": 399.99,"discountPercent": 30,"isDiscounted": true,"lowestOtherPrice": 269.5,"offerCount": 6,"hasUsedOffer": true,"secondaryOffer": 269.5,"badge": "Amazon's Choice","promoText": "Save 10% with coupon","productRating": "4.4 out of 5 stars","countReview": 38214,"dpUrl": "https://www.amazon.com/dp/B0CHX1W1XY","deliveryMessage": "FREE delivery Thu, Aug 20","prime": true,"sponsored": false,"salesVolume": "3K+ bought in past month","manufacturer": "Sony","series": null,"variations": ["Black", "Silver", "Midnight Blue"],"productDetails": ["Industry-leading noise cancellation", "Up to 30-hour battery life", "Crystal clear hands-free calling"],"statusCode": 200,"statusMessage": "FOUND","keyword": "wireless headphones","domainCode": "com","page": 1,"currentPage": 1,"selectedCategory": "aps","browseNode": null,"nodeHierarchy": null,"resultCount": 50000,"categories": [],"similarKeywords": [{ "keyword": "noise cancelling headphones", "url": "https://www.amazon.com/s?k=noise+cancelling+headphones" }],"sortStrategy": "review-rank","sortRequested": "review-rank","selectedSort": "review-rank","appliedFilters": "Price 50-300; Brand: Sony, JBL; Rating 4+ stars; Discount 20%+","searchResultPosition": 3,"scrapedAt": "2026-08-15T10:32:07+00:00"}
categories is always an empty array and nodeHierarchy is always null — Amazon's 2026 search-result page does not expose an honest department hierarchy on the search page itself (it only lives on the product-detail page), so this Actor leaves the field empty rather than fill it with refinement-chip text that isn't actually a category.
How does the Amazon Search Scraper compare to other Amazon scrapers?
| Feature | Amazon Search Scraper By Price, Brand & Rating Filters | Generic alternative |
|---|---|---|
| Output format | Typed JSON, 44 fields per product, stable field names | Raw HTML you parse yourself, or a CSV with a shifting column set |
| Search-time narrowing | Price band, brand list and rating floor sent into Amazon's own search refinement, so filtered-out items are never scraped in the first place | Full unfiltered results downloaded, then filtered client-side after the fact |
| Deal-signal coverage | List price, discount %, coupon/promo text, badge, alternate-offer count and lowest other price parsed per row | Usually current price only; discount and alternate-offer data left unparsed |
| Proxy & anti-bot handling | Managed Apify residential proxy pre-filled by default, automatic completion of Amazon's interstitial hand-off, fresh session on every retry | Proxies and headers configured manually per run |
| Schema stability | Field names fixed by this Actor's own code, independent of Amazon's markup | Breaks whenever Amazon's markup drifts, with no separate maintenance layer |
If you're building an AI agent or RAG pipeline, the output format row is the decision-maker — parsing HTML inside an agent loop is a reliability failure mode, not a feature.
How many results can you scrape with the Amazon Search Scraper?
productLimit (and its legacy alias maxResults) accepts 1 to 10,000, applied per entry in searchTargets — so five keywords at the maximum could ask for up to 50,000 rows across the run. In practice the real ceiling is the smaller of that number, however many matching products actually exist for the query and filters, and this Actor's own internal page ceiling: it pages up to whatever page count Amazon's own result page reports, capped at 100 pages per search entry.
Pagination is handled automatically: the Actor requests page 1, reads Amazon's own reported maximum page count from the pagination control, then keeps requesting further pages (with a randomized delay between each) until productLimit is reached, the page ceiling is hit, or a page returns no further products. There's no separate flag to control page size — it follows Amazon's own results-per-page count.
Integrate the Amazon Search Scraper and automate your workflow
The Amazon Search Scraper works with any language or tool that can send an HTTP request.
REST API integration
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("<YOUR_USERNAME>/amazon-search-scraper-by-price-brand-rating-filters").call(run_input={"searchTargets": ["wireless headphones"],"priceMin": 50,"priceMax": 300,"minRating": "4","productLimit": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["asin"], item["price"], item["discountPercent"])
Works in Python, Node.js, Go, Ruby, cURL.
Automation platforms (n8n, Make, LangChain)
Apify publishes an official node for n8n (Run Actor / Get Dataset Items) that can call this Actor and pull its dataset into a workflow. Apify's app for Make provides equivalent modules for running an Actor and reading its results. For LangChain-based agents, Apify's ApifyActorsTool / ApifyWrapper integration lets an agent invoke this Actor as a callable tool and receive the typed dataset rows directly, with no HTML parsing step in the agent loop.
Is it legal to scrape Amazon search results?
Scraping publicly available Amazon search-result data is generally lawful; this Actor only returns data any visitor can see on Amazon's public search pages without logging in. This is business and product data — listings, prices, ratings, discount signals — not personal data about identifiable individuals, so GDPR does not attach to it. What does apply is Amazon's own Terms of Service, which govern automated access to its site, and any database rights that may cover the compiled listing data in your jurisdiction. Consult legal counsel for commercial use cases, particularly at high volume or when republishing scraped data.
Frequently asked questions
Does the Amazon Search Scraper work without an Amazon account?
Yes. It reads Amazon's public search-result pages directly and needs no Amazon login or account — only Apify Proxy, which is pre-filled to the setting that works best for Amazon by default.
How often is the scraped data updated?
Every run re-fetches Amazon's search pages live at request time — nothing is cached. The scrapedAt field on each row records exactly when that fetch happened.
What happens when a search returns no matching products?
If Amazon returns zero results for the keyword, or your filters exclude everything on a page, that entry simply contributes no rows — the run doesn't fail. The Actor's run-level summary (written to the key-value store as OUTPUT) reports searchesWithResults alongside removedByPriceRange, removedByRatingFloor and removedByDiscountFloor, so you can see how many candidates were filtered out versus how many searches had no matches at all.
Can I scrape private or restricted Amazon content?
No. Only the product data Amazon serves on its public search-result pages is returned — nothing behind a login, and no seller-account-only data.
Do I need to write code to use this Actor?
No. Configure the input fields in the Apify Console UI and click Start — no code required. For automation, call it through the Apify API or apify_client from any language.
Does the Amazon Search Scraper work for AI agent workflows and LLM pipelines?
Yes. It's callable as an HTTP endpoint through the Apify API by any agent framework, and every response is typed JSON with stable field names — no HTML and no parsing step before passing results to an LLM.
How does the Amazon Search Scraper handle Amazon's anti-bot system?
It impersonates a real Chrome TLS/HTTP fingerprint (via curl_cffi, Chrome 131), routes through Apify's managed residential proxy by default, and automatically completes the meta-refresh interstitial hand-off Amazon's edge sometimes serves instead of the results page. If a request comes back as an Akamai bot-management challenge or an unreadable response, the Actor opens a fresh session on a new proxy exit and retries the page, up to 4 attempts, with randomized delays between page and search requests.
Does the Amazon Search Scraper return data in a format LLMs can use directly?
Yes. Output is typed, normalized JSON with stable field names — pass it directly into an LLM context window, index it into a vector store, or route it through an agent tool without a parsing step.
Can I use the Amazon Search Scraper without managing proxies?
Yes. Apify's residential proxy is pre-filled as the default connection setting and is used automatically unless you change it — you don't need your own proxy pool.
What happens when Amazon changes its search-result structure or blocks the scraper?
This Actor is maintained against Amazon's page changes, and its output schema stays stable on your end — field names and types don't change because Amazon's front-end did. No specific turnaround time is promised for any given fix.
Your feedback
Found a bug or missing a field? We want to know. Open an issue on this Actor's Issues tab in Apify Console, or reach out through API-Empire's contact link on the Actor's Store page.