Amazon Search Scraper
Pricing
from $3.50 / 1,000 result items
Amazon Search Scraper
Scrapes Amazon keyword search results across 18 marketplaces: organic rank separated from sponsored placements, structured local-currency prices, sales badges, ratings. Batch keywords, filters applied before charging, error items never charged.
Pricing
from $3.50 / 1,000 result items
Rating
0.0
(0)
Developer
Torchtechnology LTD
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
What does this Actor do?
Amazon Search Scraper extracts keyword search results from 18 verified Amazon marketplaces — with the one thing most search scrapers get wrong: organic rank separated from sponsored placements. Every product comes with position, organic-only position, sponsored flag, structured price in the marketplace's own currency, rating, review count, sales-volume badge, and more. Batch as many keywords as you like into a single run — they share startup cost. Or paste Amazon search URLs directly: apply any filters on Amazon first (Prime, price band, condition, deals, brand) and the actor scrapes exactly that filtered result set — Amazon's own URL filters are applied server-side and passed through untouched.
Built for analysts, sellers, and AI agents: deterministic JSON, documented error semantics, and you only pay for actual product data — error items are never charged, and filters apply before charging.
Why this Actor over alternatives?
| This Actor | Typical competitor | |
|---|---|---|
| Sponsored handling | isSponsored flag + separate positionOrganic rank | sponsored mixed into positions |
| Price output | numeric {value, currency} + raw string | string only |
| Billing | per result only — no start fee, no platform usage for you | start fee + per-item + usage fees |
| Filters | stars/reviews/price band, applied before charging — plus full Amazon sidebar filters via pasted search URLs | post-processing on your side |
| Batch | many keywords per run | one query per run |
| Errors | pushed for transparency, never charged | charged like data |
Quick start
{"keywords": ["anker powerbank 20000mah", "usb c cable 2m"],"marketplace": "com","maxPages": 2,"sortBy": "RELEVANCE"}
Or a single keyword without the array: {"query": "laptop", "marketplace": "com"}.
Or paste Amazon search URLs with your own filters applied — here Prime-only (rh=p_85:1) plus a $10–$40 price band:
{"searchUrls": [{"url": "https://www.amazon.com/s?k=usb+c+cable+2m&rh=p_85%3A1&low-price=10&high-price=40"}],"maxPages": 2}
URL mode unlocks every filter Amazon offers in its sidebar (Prime, condition, deals, brand, price band…) — set them on amazon.com, copy the URL, done. The domain in each URL selects the marketplace (any of the 18), so one run can mix marketplaces. Keywords and URLs can be combined in the same run; at least one of them is required.
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string[] | — | Search keywords — batch as many as you like |
query | string | — | Single-keyword convenience field (used when keywords is empty) |
searchUrls | array | — | Amazon search URLs to scrape directly ([{"url": "…"}] or plain strings). Apply filters on Amazon first — rh, s, low-price, high-price etc. pass through untouched. The URL's domain selects the marketplace; unknown domains produce a free invalid_url error item |
marketplace | string | com | One of 18: de, com, co.uk, fr, it, es, ca, com.au, co.jp, in, nl, se, pl, be, mx, br, ae, sa (keyword mode only — URL mode reads it from the URL) |
maxPages | integer | 1 | Pages per keyword/URL (1–20) |
startPage | integer | 1 | First page to scrape (continue a previous run) |
sortBy | string | RELEVANCE | RELEVANCE | LOWEST_PRICE | HIGHEST_PRICE | REVIEWS | NEWEST | BEST_SELLERS |
language | string | marketplace default | Amazon locale override (e.g. en_US) |
excludeSponsored | boolean | false | Skip sponsored cards entirely |
minStars / minReviews | number | 0 | Rating/review filters — before charging |
minPrice / maxPrice | number | 0 | Price band in marketplace currency — before charging |
proxyConfiguration | object | bundled geo proxies | Optional — the actor ships with bundled geo proxies per marketplace (no setup needed, we cover the cost). Enable this only to force your own or Apify proxies instead |
proxiesByMarketplace | object | — | Bring-your-own geo-pinned proxies per marketplace; overrides the bundled pool for the listed marketplaces |
Output
One dataset item per product card:
{"source": "amazon_search","searchQuery": "anker powerbank 20000mah","searchUrl": null,"page": 1,"position": 4,"positionOrganic": 3,"positionSponsored": null,"isSponsored": false,"asin": "B0C2345678","title": "Anker Power Bank, 20,000mAh …","price": { "value": 39.99, "currency": "USD" },"priceString": "$39.99","originalPriceString": "$49.99","stars": 4.6,"reviewsCount": 12847,"salesVolumeText": "10K+ bought in past month","isBestSeller": true,"isAmazonsChoice": false,"badgeTexts": ["Best Seller"],"imageUrl": "https://m.media-amazon.com/images/I/…jpg","productUrl": "https://www.amazon.com/dp/B0C2345678","marketplace": "com","totalProductsAvailable": 106379,"scrapedAt": "2026-08-16T12:00:00Z"}
Reading positions: position counts every card in DOM order (including ads); positionOrganic counts only non-sponsored cards — the rank that matters for SEO and rank tracking. positionSponsored is the 1-based rank among the sponsored cards of the page (sponsored placements are interleaved with organic cards; there is no separate ad block) — null on organic cards, just as sponsored cards have positionOrganic: null. A null field means "not rendered by Amazon" — never a guess.
Keyword vs URL mode: items carry both searchQuery and searchUrl — exactly one is set. Keyword items have searchQuery (and searchUrl: null); items scraped from a pasted URL have searchUrl with the exact source URL (and searchQuery: null). Everything else in the item is identical across both modes.
Error items (never charged)
error | Meaning | Action |
|---|---|---|
transport | Navigation failed (proxy/timeout) | just retry |
blocked | Bot detection after automatic retries across the proxy tier chain (own pool → Apify DC → Apify residential) | use residential/geo-pinned proxies |
not_found | Amazon returned 404 | check input |
invalid_url | searchUrls entry has an unknown Amazon domain (not one of the 18 marketplaces) | fix the URL — only that entry is skipped, the run continues |
An empty result page simply ends pagination — zero items, zero charges, no fake error.
Pricing
Pay per result event — one per product item pushed. No start fee, no platform-usage charge for you, errors free, filters apply before charging. Example: 5 keywords × 2 pages ≈ 300–400 items ≈ 300–400 events. See the Pricing tab for the current price.
Use with AI agents (MCP)
Actor identity: cyprusapi/amazon-search. Tool description: search Amazon by keyword on 18 marketplaces and return structured product cards with organic-vs-sponsored rank separation and local-currency prices.
Example prompt: "Search Amazon.com for 'wireless earbuds', top 2 pages, only products above 4 stars, exclude ads." → input:
{"keywords": ["wireless earbuds"], "marketplace": "com", "maxPages": 2, "minStars": 4, "excludeSponsored": true}
Output interpretation for agents: use positionOrganic for ranking analysis (ads never occupy it); price.value is numeric and marketplace-local (safe for arithmetic); items with an error field are uncharged failures, not data.
FAQ & limitations
- How many items per page? Amazon renders ~16–48 cards depending on layout — variance is normal.
- Sales badges ("5K+ bought in past month") are captured verbatim where rendered (de/com/fr/it/es phrase sets; other locales return
null). - Amazon caps search depth near page 20 — a platform limit, not ours.
- Legality: public search pages only. You are responsible for complying with Amazon's Terms of Service and applicable law.
- Found a bug or need another marketplace? Open an issue — selector maintenance is part of the product.