Switching from Amazon Search Results Scraper to Amazon Product & Best Sellers Scraper
Amazon Product & Best Sellers Scraper (arcadium/amazon-products) reads input written for apt_marble/amazon-search-results-scraper: 8 of its 10 input fields work as they are. Field list from its public input schema (build 0.0.8, 2026-10-31); prices and run results from the public Apify API, 2026-11-01.
Their fields that work as they are
| Their field | Type | Note |
|---|---|---|
keywords | array | As is |
maxResultsPerKeyword | integer | As is |
sortBy | string | As is |
excludeSponsored | boolean | As is |
minPrice | integer | As is |
maxPrice | integer | As is |
minRating | integer | As is |
marketplace | string | As is |
Accepted without effect
These fields do not stop the run, but they change nothing here.
| Their field | Type | Note |
|---|---|---|
primeOnly | boolean | Not supported: results are not filtered by Prime. |
Their fields this actor does not read
maxConcurrency. Leave them out of the input; the actor’s own options are in the guide.
Side by side: their input, our rows
Input written for apt_marble/amazon-search-results-scraper, pasted unchanged:
{
"keywords": [
"standing desk"
],
"maxResultsPerKeyword": 40,
"sortBy": "price-asc",
"excludeSponsored": true,
"minPrice": 100,
"maxPrice": 400,
"minRating": 4,
"marketplace": "de"
}One row from arcadium/amazon-products (README example; long text shortened):
{
"rowType": "searchResult",
"marketplace": "US",
"domain": "amazon.com",
"currency": "USD",
"searchTerm": "wireless earbuds",
"page": 1,
"position": 2,
"organicPosition": null,
"asin": "B0C1BTXM9W",
"sponsored": true,
"title": "Wireless Earbuds, Bluetooth 5.4 Ear Buds LED Power Display Headphones Bass Stereo ...",
"url": "https://www.amazon.com/dp/B0C1BTXM9W",
"imageUrl": "https://m.media-amazon.com/images/I/614gb9uXQuL.jpg",
"price": 19.99,
"priceText": "$19.99",
"listPrice": 28.49,
"listPriceText": "$28.49",
"rating": 4.3,
"ratingCount": 14589,
"badges": [],
"boughtPastMonth": 6000,
"boughtPastMonthText": "6K+ bought in past month",
"deliveryText": "Join Prime to get FREE delivery Tomorrow, Oct 23",
"scrapedAt": "2026-10-22T08:00:00.000Z"
}Output fields: rowType, marketplace, domain, currency, asin, url, title, imageUrl, price, priceText, listPrice, listPriceText, rating, ratingCount, searchTerm, page, position, organicPosition, sponsored, badges, boughtPastMonth, boughtPastMonthText, deliveryText, listType, category, categoryName, listTitle, rank, rankChangePercent, salesRank, salesRankYesterday, detailsComplete, starPercent, hasBuyBox, buyBoxPrice, buyBoxPriceText, listPriceLabel, buyBoxCondition, buyBoxSeller, buyBoxSellerId, buyBoxShipsFrom, buyBoxFulfilledByAmazon, buyBoxDelivery, otherOfferCount, offers, source, scrapedAt, input, code, message, platform. The rows use these names, not the other actor’s.
Price
| Actor | Pricing model | Charged per | Per 1,000, Free plan | Per 1,000, lowest plan |
|---|---|---|---|---|
| arcadium/amazon-products | Pay per event | Search result | $0.54 | $0.54 |
| apt_marble/amazon-search-results-scraper | Pay per event | Search result scraped | $0.60 | $0.60 |
Live Apify prices on 2026-11-01, in USD, for each actor’s main charged event. Start fees and platform usage are not included. Units differ: compare what one charged row contains. The Store page of each actor is the current source.
Common issues: failed or timed-out runs
- Amazon Search Results Scraper timed out: 0.0% of 5,828 runs timed out.
- Amazon Search Results Scraper failed: 1.2% of 5,828 runs ended as failed.
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/amazon-products | under 50 runs | - | - |
| apt_marble/amazon-search-results-scraper | 5,828 | 1.2% | 0.0% |
Apify’s public run statistics for each actor, last 30 days to 2026-11-01: FAILED and TIMED-OUT runs as a share of all runs. Shown from 50 runs. A failed run can also come from a bad input. Here an input that cannot be read comes back as a free error row with a code, and the other inputs still arrive.
How to switch
In the Apify Store
- Open arcadium/amazon-products and sign in to Apify.
- On the Input tab, switch the editor to JSON and paste the input you used for apt_marble/amazon-search-results-scraper, without the fields listed above as not read.
- Start the run. Set a maximum cost per run in the run options if you want a hard cap.
Over the API
Change the actor ID in the URL from apt_marble~amazon-search-results-scraper to arcadium~amazon-products; the body stays the same apart from the fields this actor does not read.
curl -X POST "https://api.apify.com/v2/acts/arcadium~amazon-products/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords":["standing desk"],"maxResultsPerKeyword":40,"sortBy":"price-asc","excludeSponsored":true,"minPrice":100,"maxPrice":400,"minRating":4,"marketplace":"de"}'
In n8n
In the Apify node, change the actor to arcadium/amazon-products and keep the input JSON. With an HTTP Request node:
{
"nodes": [
{
"name": "Run arcadium/amazon-products",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
0,
0
],
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/arcadium~amazon-products/run-sync-get-dataset-items",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"keywords\":[\"standing desk\"],\"maxResultsPerKeyword\":40,\"sortBy\":\"price-asc\",\"excludeSponsored\":true,\"minPrice\":100,\"maxPrice\":400,\"minRating\":4,\"marketplace\":\"de\"}",
"options": {
"timeout": 300000
}
}
}
],
"connections": {}
}
From an AI assistant (MCP)
Add the actor as a tool on Apify’s MCP server; an agent can pass the same input fields.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=arcadium/amazon-products",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}