# Amazon Search Results Scraper (`sfoln/amazon-search`)

Search Amazon by keyword on 13 marketplaces and get every product on the results page: ASIN, title, URL, price, rating, review count, badges, sponsored flag and delivery. $12 per 1,000 keyword searches + $0.20 per 1,000 products.

- Family: Company & lead intelligence
- Categories: Ecommerce, Lead generation, Automation
- Availability: on request (private on Apify). Email contact@sfoln.com with subject "Access request: Amazon Search Results Scraper (sfoln/amazon-search)" before calling; calls fail until it is public.
- JSON: https://www.sfoln.com/actors/amazon-search.json
- MCP: https://mcp.apify.com?tools=sfoln/amazon-search
- REST (sync): POST https://api.apify.com/v2/actors/sfoln~amazon-search/run-sync-get-dataset-items
- REST (async): POST https://api.apify.com/v2/actors/sfoln~amazon-search/runs

Amazon Search Results Scraper searches Amazon by keyword and returns every product card on the results page as clean JSON: ASIN, title, URL, price, star rating, review count, Amazon's Choice and Best Seller badges, sponsored flag, delivery message, "bought in past month" and image. Works on 13 Amazon marketplaces (amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .in, .nl, .com.mx, .com.br, .co.jp) with price, department and sort filters. Use it for product research, price and rank monitoring, competitor and sponsored-ad tracking, or as a shopping search tool for AI agents. Results come live from Amazon through DataForSEO; you pay $0.012 per keyword plus $0.20 per 1,000 products.

## Price per delivered record

| Event | Price | Per 1,000 | Charged for |
| --- | --- | --- | --- |
| Amazon search query (`amazon-search-query`) | $0.012 | $12 / 1,000 | Charged once per keyword searched on Amazon (covers the per-request fee). |
| Amazon search result (`amazon-search-result`) | $0.0002 | $0.20 / 1,000 | Charged once per product record delivered. |

Pay-per-event, USD, billed by Apify; no platform usage charge. Only records with status `ok` are charged. Cap a run with `maxTotalChargeUsd`. Apify free plan: up to 10 per run.

## Run

```bash
curl -X POST "https://api.apify.com/v2/actors/sfoln~amazon-search/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["usb c cable"],"maxResultsPerQuery":10}'
```

MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/amazon-search"
    }
  }
}
```

Example prompt: Search amazon.com for "usb c cable" and list the 10 best-rated products with their prices, ratings and review counts.

## Input

Enter search keywords. Each keyword returns up to `maxResultsPerQuery` Amazon product cards plus one query summary.

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `keywords` (required) | array | — | Search keywords: Amazon search keywords, one per line. Accounts on the Apify free plan can process up to 10 keywords per run. |
| `amazonDomain` | string | `"amazon.com"` | Amazon marketplace: Amazon site to search. Location and language default to that marketplace. One of `"amazon.com"`, `"amazon.co.uk"`, `"amazon.ca"`, `"amazon.com.au"`, `"amazon.in"`, `"amazon.de"`, `"amazon.fr"`, `"amazon.it"`, `"amazon.es"`, `"amazon.nl"`, `"amazon.com.mx"`, `"amazon.com.br"`, `"amazon.co.jp"`. |
| `maxResultsPerQuery` | integer | `50` | Products per keyword: Products to return per keyword (1–100). Each product is billed as amazon-search-result. |
| `priceMin` | integer | — | Minimum price: Only products priced at or above this (whole units of the marketplace currency). Leave empty for no filter. |
| `priceMax` | integer | — | Maximum price: Only products priced at or below this (whole units of the marketplace currency). Leave empty for no filter. |
| `department` | string | — | Department: Restrict the search to one Amazon department (leave empty for all). One of `"Arts & Crafts"`, `"Automotive"`, `"Baby"`, `"Beauty & Personal Care"`, `"Books"`, `"Computers"`, `"Digital Music"`, `"Electronics"`, `"Kindle Store"`, `"Prime Video"`, `"Women's Fashion"`, `"Men's Fashion"`, `"Girls' Fashion"`, `"Boys' Fashion"`, `"Deals"`, `"Health & Household"`, `"Home & Kitchen"`, `"Industrial & Scientific"`, `"Luggage"`, `"Movies & TV"`, `"Music, CDs & Vinyl"`, `"Pet Supplies"`, `"Software"`, `"Sports & Outdoors"`, `"Tools & Home Improvement"`, `"Toys & Games"`, `"Video Games"`. |
| `sortBy` | string | `"relevance"` | Sort by: Amazon sort order. One of `"relevance"`, `"price_low_to_high"`, `"price_high_to_low"`, `"featured"`, `"avg_customer_review"`, `"newest_arrival"`. |
| `location` | string | — | Location (override): Optional DataForSEO Amazon location code or name. Defaults to the marketplace country. |
| `languageCode` | string | — | Language code (override): Optional Amazon language code like en_US, en_GB, de_DE. Defaults to the marketplace language. |
| `maxQueries` | integer | `1000` | Max queries: Safety cap on how many keywords are processed in this run. |
| `concurrency` | integer | `3` | Concurrency: How many keywords are processed in parallel. |
| `includeRaw` | boolean | `false` | Include raw upstream response: Attach the unmodified DataForSEO item to each result record. |

Example input:

```json
{
  "keywords": [
    "usb c cable"
  ],
  "maxResultsPerQuery": 10
}
```

## Output

One record per input item with `status` (`ok` is charged; `not_found`, `error`, `skipped_*` are free) and `charged`. The run stores an `OUTPUT` summary record.

| Field | Type | Meaning |
| --- | --- | --- |
| `recordType` | string | Record type: product = one product card; query_summary = one per keyword. |
| `query` | string | Query: The search keyword. |
| `amazonDomain` | string | Marketplace: Amazon site searched. |
| `rank` | integer | Rank: Position among product cards (1 = first, sponsored included). |
| `rankAbsolute` | integer | null | Absolute rank: Position among all SERP elements. |
| `asin` | string | null | ASIN: Amazon product ID. |
| `title` | string | null | Title: Product title. |
| `url` | string | null | URL: Product URL. |
| `price` | object | Price: {current, max, currency}; max is set for price ranges. |
| `rating` | number | null | Rating: Average star rating. |
| `ratingMax` | number | null | Rating max: Rating scale (usually 5). |
| `reviewsCount` | integer | null | Reviews: Number of ratings. |
| `isPrime` | boolean | null | Prime: True when a label or delivery message mentions Prime; null when the card shows no such signal. |
| `isAmazonChoice` | boolean | Amazon's Choice: Amazon's Choice badge. |
| `isBestSeller` | boolean | Best Seller: Best Seller badge. |
| `isSponsored` | boolean | Sponsored: Sponsored (paid) placement. |
| `imageUrl` | string | null | Image: Product image URL. |
| `deliveryInfo` | object | null | Delivery: {message, price, currency}; price null = free or not shown. |
| `boughtLastMonth` | integer | null | Bought last month: "N+ bought in past month" figure when shown. |
| `labels` | array | Labels: Card labels, e.g. "Overall Pick". |
| `hasSpecialOffers` | boolean | Special offers: Coupon or Subscribe & Save offer shown. |
| `totalResults` | integer | null | Total results: Amazon’s result count (summary records only). |
| `relatedSearches` | array | Related searches: Related searches (summary records only). |
| `spellCorrection` | string | null | Spelling correction: Corrected keyword Amazon used, if any (summary records only). |
| `itemTypes` | array | SERP element types: Element types on the page (summary records only). |
| `queryCharged` | boolean | Query fee charged: Whether amazon-search-query was charged (summary records only). |
| `feeCharged` | boolean | Fee charged: Whether the query/page fee event was charged for this keyword (summary records only; the summary record itself is never charged). |
| `resultsRequested` | integer | Results requested: Summary records only. |
| `resultsLimit` | integer | Results limit used: Depth actually requested after free-plan and budget caps (summary records only). |
| `resultsReturned` | integer | Results returned: Result records delivered for this query (summary records only). |
| `checkUrl` | string | null | Check URL: The search page the results come from (summary records only). |
| `input` | string | object | null | Input: Keyword as entered. |
| `status` | string | Status: ok \| not_found \| error \| skipped_budget \| skipped_free_plan |
| `charged` | boolean | Charged: Whether this record is covered by a pay-per-event charge. |
| `chargedEvent` | string | Charged event: amazon-search-result (product records). |
| `warnings` | array | Warnings: Non-fatal notes (results reduced, budget reached...). |
| `error` | object | Error: {code, message, provider?} when status is not ok. |
| `source` | string | Source: Upstream data source. |
| `fetchedAt` | string | Fetched at: ISO timestamp. |

Example record:

```json
{
  "recordType": "product",
  "query": "wireless earbuds",
  "amazonDomain": "amazon.com",
  "rank": 2,
  "rankAbsolute": 3,
  "asin": "B0ABCDEFGH",
  "title": "Wireless Earbuds, Bluetooth 5.3 Headphones…",
  "url": "https://www.amazon.com/dp/B0ABCDEFGH",
  "price": {
    "current": 29.99,
    "max": null,
    "currency": "USD"
  },
  "rating": 4.4,
  "ratingMax": 5,
  "reviewsCount": 12873,
  "isPrime": true,
  "isAmazonChoice": true,
  "isBestSeller": false,
  "isSponsored": false,
  "imageUrl": "https://m.media-amazon.com/images/I/61example.jpg",
  "deliveryInfo": {
    "message": "FREE delivery Thu, Oct 16 for Prime members",
    "price": null,
    "currency": null
  },
  "boughtLastMonth": 2000,
  "labels": [
    "Overall Pick"
  ],
  "hasSpecialOffers": true,
  "input": "wireless earbuds",
  "status": "ok",
  "charged": true,
  "chargedEvent": "amazon-search-result",
  "source": "dataforseo",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}
```

## Related

- [Google Shopping Scraper](https://www.sfoln.com/actors/google-shopping-search.md) (`sfoln/google-shopping-search`)
- [Google Search Results Scraper](https://www.sfoln.com/actors/google-search-results.md) (`sfoln/google-search-results`)

Publisher: SFOLN LLC, contact@sfoln.com. Catalogue: https://www.sfoln.com/catalog.json. Agent guide: https://www.sfoln.com/agents.md.
