# Amazon Product Scraper (`fastdataapi/amazon-product-scraper`) Actor

Amazon Product Scraper — Extract detailed Amazon product data including titles, prices, ASINs, ratings, reviews, images, descriptions, features, availability, sellers, and product URLs. Ideal for product research, price tracking, competitor analysis, and e-commerce insights.

- **URL**: https://apify.com/fastdataapi/amazon-product-scraper.md
- **Developed by:** [Fast Data API](https://apify.com/fastdataapi) (community)
- **Stats:** 5 total users, 4 monthly users, 95.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Amazon Product Scraper — Prices, Reviews, Sellers and Variants

Amazon Product Scraper pulls product data straight from Amazon's search, category and product pages, on any Amazon marketplace. One run returns title, price, list price, rating, specifications, images, delivery dates, the buy-box seller, variants and top reviews for every result. **Every response is structured JSON** — ready to pass directly to an LLM, index into a vector store, or feed a price-monitoring pipeline. No Amazon account or login needed: paste a search link, a product link or a keyword and start collecting today.

***

### What data can I extract with Amazon Product Scraper?

Using this Amazon Product API, you will be able to extract the following Amazon product data — enough for an amazon product specifications scraper as well as a plain listing scrape:

| 🆔 ASIN | 📝 Title | 🔗 Product URL | 🖼️ Thumbnail image |
| --- | --- | --- | --- |
| 💲 Price | 🏷️ List price & savings % | 📦 Price per unit | 🎯 Sponsored flag & search position |
| ⭐ Rating | 💬 Rating count | 📊 Rating breakdown (1–5 star) | 🏷️ Deal badge & coupon text |
| 🏢 Brand | 🔗 Brand store link | 🧬 Parent ASIN (variation family) | 🗂️ Category breadcrumbs |
| 📋 Feature bullets | 📄 Description | ✨ A+ content | 📊 Specification tables (overview & details) |
| 🔧 Model number | 🏭 Manufacturer | ⚖️ Item weight | 📐 Dimensions |
| 🔢 UPC | 🏆 Best sellers rank | 🖼️ High-resolution gallery images | 🎬 Product videos (with count) |
| 📦 Stock status | 🔢 Units left in stock | 🚚 Standard delivery (date & price) | ⚡ Fastest delivery option |
| 🏪 Sold by | 🚚 Ships from | ✅ Fulfilled by Amazon | 🧑‍💼 Buy-box seller (rating, business name, address with seller profiles on) |
| ↩️ Return policy | 🔢 Other offers count | 💲 Lowest other offer | 🛒 Marketplace offers list (with sellers on request) |
| 🧩 Variant options (color, size…) | 🧩 Every variant (ASIN & price) | 📈 Bought-in-past-month text | 🌱 Climate Pledge Friendly badge |
| 🧠 AI review summary | 💬 Top customer reviews | 🔁 Frequently bought together | |

***

### How to use Amazon Product Scraper

Anyone who needs Amazon product data without building their own scraper can run this with one list of links or keywords and get back one clean row per product.

**Copy to your AI assistant:**

```text
Amazon Product Scraper (Apify Actor ID: fastdataapi/amazon-product-scraper, https://apify.com/fastdataapi/amazon-product-scraper) is an Apify Actor that returns Amazon products as structured JSON: title, price, rating, brand, specifications, images, delivery and seller data. Use it whenever someone needs products without cookies, a login, or a browser - as a plain amazon dp scraper for one ASIN, an amazon product scraper by url across a search or category page, or ongoing price tracking for a catalog. Inputs: categoryOrProductUrls (array, required, one search, category or product link or keyword per line), maxItemsPerStartUrl (integer, default 10, results kept per link, 0 = all), maxSearchPagesPerStartUrl (integer, default 9999, search pages per link), scrapeProductDetails (boolean, default true, also loads each result's product page), maxProductVariantsAsSeparateResults (integer, default 0, other variants saved as their own rows), scrapeProductVariantPrices (boolean, default false), maxOffers (integer, default 0, offers collected per product), scrapeSellers (boolean, default false, seller profiles), ensureLoadedProductDescriptionFields (boolean, default false), countryCode / zipCode (delivery location), locationDeliverableRoutes (array, default all page types), language (string), maxConcurrentRequests (integer 1-20, default 10), useCaptchaSolver (boolean, default false) with capSolverApiKey (secret), proxyCountry (string, default AUTO_SELECT_PROXY_COUNTRY) and proxyConfiguration (object). A start link that gives no products returns one row with status "failed" and the reason, instead of a normal product row. Amazon's own pagination limits how many search result pages one link shows; split a large catalog into narrower category or filter links to reach more products.
```

#### Amazon Product Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor

Point your AI assistant at Apify's MCP server with this actor already added as a tool, and it can call it on its own, running it on a few links or keywords and using the products mid-conversation. No glue code, no scraping logic in your prompts.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/amazon-product-scraper"
```

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open [Amazon Product Scraper](https://apify.com/fastdataapi/amazon-product-scraper) in the Apify Store.
3. Enter Amazon search, category or product links, or plain keywords.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale Amazon Product Scraper to bulk

Add as many search, category or product links or keywords as you need to Amazon search, category or product URLs — each line is its own entry, scraped on its own marketplace, so a list of 50 mixed links runs as one job. Use it as an amazon product scraper by url across a whole catalog, or call the Apify API in a loop or from a schedule to re-check prices, ranks and offers daily.

***

### ✨ Features

Amazon Product Scraper fetches clean, structured products from Amazon ⚡. It's ideal for price monitoring, seller research, catalog enrichment and running it as an amazon product details scraper for a single listing.

It extracts, per product:

- **Price** – current price, with list price and savings % when Amazon shows a discount.
- **Rating** – star rating, rating count and the 1–5 star breakdown.
- **Seller** – buy-box seller and other offers; turn it into an amazon seller profile scraper with Scrape seller profiles on.
- **Offers** – works as an amazon offers scraper, collecting buy-box and other offers per product on request.
- **Specifications** – brand, bullets, description, technical detail tables and best sellers rank.
- **Variants** – every color, size or style option, with prices on request.
- **Top reviews** – Amazon's review summary and the top customer reviews when the page shows them. Amazon often hides top reviews from signed-out visitors ("Sign in to see customer reviews"); those products are saved with `topReviews` empty and the rating breakdown and review count still filled.

⚡ Each link's products save to the dataset as soon as that link is scraped, so the output table fills in while the run is still going.

***

### Use cases 💡

- **Price monitoring** — track price, list price and coupons across competitors daily.
- **Amazon seller research** — compare buy-box sellers, offers and ratings in a category.
- **Product research** — check best sellers rank and rating before launching a listing.
- **Catalog enrichment** — use it as an amazon product variants scraper for color and size options.
- **AI agent context** — feed specifications and review summaries into a RAG pipeline.

Building an AI agent? [Connect Amazon Product Scraper over MCP](#amazon-product-scraper-mcp-server-use-these-actors-from-chatgpt-claude-or-cursor) and let it call the actor on its own.

***

### Why choose this actor?

1. **8 products from one search, saved as they're found.** A recorded run returned 8 products for "wireless mouse" in 10.7 seconds, with the first product already saved after 7.8 seconds.
2. **Specs, reviews and variants in one row.** A recorded Logitech mouse product came back with 45,291 ratings, a 4.4 average, 9 color/style variants and its best sellers rank in Computer Mice.
3. **23 marketplaces, one Actor.** The same input works on amazon.com, amazon.co.uk, amazon.de and 20 other Amazon marketplaces, each scraped in its own currency and language.

***

### ⬇️ Input

It accepts a list of Amazon search, category or product links, or plain keywords — one entry per line. `categoryOrProductUrls` is the only required field.

| Parameter | Required | Type | Description | Example |
| --- | --- | --- | --- | --- |
| `categoryOrProductUrls` | Yes | Array | Search, category or product links, or keywords, one per line | `["https://www.amazon.com/s?k=wireless mouse"]` |
| `maxItemsPerStartUrl` | No | Integer | Results kept per search or category link; 0 = all (default 10) | `8` |
| `maxSearchPagesPerStartUrl` | No | Integer | Search pages fetched per link (default 9999) | `2` |
| `scrapeProductDetails` | No | Boolean | Also load every result's product page (default `true`) | `true` |
| `maxProductVariantsAsSeparateResults` | No | Integer | Other variants saved as their own rows per product (default 0) | `3` |
| `scrapeProductVariantPrices` | No | Boolean | Price of every variant (default `false`) | `true` |
| `maxOffers` | No | Integer | Offers collected per product, buy-box first; 0 = none (default 0) | `5` |
| `scrapeSellers` | No | Boolean | Seller profile for the buy-box seller and offers (default `false`) | `true` |
| `ensureLoadedProductDescriptionFields` | No | Boolean | Reload pages missing bullets or description (default `false`) | `true` |
| `countryCode` | No | String | Delivery country | `"US"` |
| `zipCode` | No | String | Delivery zip or postal code | `"10001"` |
| `locationDeliverableRoutes` | No | Array | Page types that use the delivery location (default all) | `["PRODUCT","SEARCH","OFFERS"]` |
| `language` | No | String | Page language, e.g. `en`, `de`, `ja` | `"en"` |
| `maxConcurrentRequests` | No | Integer | Pages loaded at the same time, 1–20 (default 10) | `10` |
| `useCaptchaSolver` | No | Boolean | Solve image captchas with your CapSolver key (default `false`) | `false` |
| `capSolverApiKey` | No | String (secret) | Your CapSolver API key | — |
| `proxyCountry` | No | String | Proxy exit country; automatic per marketplace by default | `"AUTO_SELECT_PROXY_COUNTRY"` |
| `proxyConfiguration` | No | Object | Proxy settings; residential by default | `{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}` |

#### Free plan limits

Users on the Apify free plan can fetch up to 20 products per run (all start URLs together) and 200 products per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.

#### Example input

```json
{
  "categoryOrProductUrls": ["https://www.amazon.com/s?k=wireless+mouse"],
  "maxItemsPerStartUrl": 8,
  "scrapeProductDetails": true,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

***

### ⬆️ Output

Every product is one typed, normalized JSON item with the same field names on every run, saved as soon as it is scraped. Export the dataset as JSON, CSV or Excel; a start link that gives no products gets one uncharged row with `status: "failed"` instead.

#### Example output

A real row from the recorded "wireless mouse" run above (long text and lists shortened):

```json
{
  "asin": "B004YAVF8I",
  "title": "Logitech M185 Compact Ambidextrous 2.4 GHz Wireless Mouse - Swift Grey",
  "url": "https://www.amazon.com/dp/B004YAVF8I",
  "thumbnailImage": "https://m.media-amazon.com/images/I/51WN5aXZWIL._AC_UY218_.jpg",
  "price": { "value": 14.9, "currency": "$" },
  "stars": 4.4,
  "reviewsCount": 45291,
  "isSponsored": false,
  "categoryPageData": { "productPosition": 1, "isSponsored": false },
  "brand": "Logitech",
  "brandStoreUrl": "https://www.amazon.com/stores/Logitech/page/01EFDE77-7D1A-41D7-9EEA-7C2FA22AB12F?lp_asin=B004YAVF8I",
  "parentAsin": "B0H4LB8MPT",
  "breadcrumbs": ["Electronics", "Computers & Accessories", "Keyboards, Mice & Accessories", "Mice"],
  "featureBullets": [
    "Compact Mouse: With a comfortable and contoured shape, this Logitech ambidextrous wireless mouse feels great in either right or left hand and is far superior to a touchpad",
    "Durable and Reliable: This USB wireless mouse features a line-by-line scroll wheel, up to 1 year of battery life …"
  ],
  "description": "Logitech Wireless Mouse M185. A simple, reliable mouse with plug-and-play wireless, a 1-year battery life and 3-year limited hardware warranty. …",
  "productOverview": { "Brand": "Logitech", "Color": "Swift Grey", "Connectivity Technology": "USB", "Special Feature": "Wireless" },
  "productDetails": { "Battery Average Life": "12 months", "Hand Orientation": "Ambidextrous", "Item Weight": "4.8 ounces" },
  "modelNumber": "910-002225",
  "manufacturer": "Logitech, Inc",
  "itemWeight": "4.8 ounces",
  "upc": "097855112705 097855074126",
  "bestSellersRank": [{ "rank": 1, "category": "Computer Mice", "url": "https://www.amazon.com/gp/bestsellers/pc/11036491/ref=pd_zg_hrsr_pc" }],
  "highResolutionImages": ["https://m.media-amazon.com/images/I/51WN5aXZWIL._AC_SL1500_.jpg"],
  "videos": [{ "title": "M185 Mouse Product Video", "url": "https://m.media-amazon.com/images/S/vse-vms-transcoding-artifact-us-east-1-prod/8ef630e6-c916-4a8a-abbb-00c99b6794de/default.jobtemplate.mp4.480.mp4", "duration": "00:19", "creatorType": "Vendor" }],
  "videosCount": 13,
  "listPrice": null,
  "otherOffersCount": 3,
  "otherOffersLowestPrice": { "value": 14.9, "currency": "$" },
  "offers": [],
  "variantDimensions": ["Size", "Style", "Color"],
  "variants": [
    { "asin": "B004YAVF8I", "attributes": { "Size": "1 Pack", "Style": "USB Receiver", "Color": "Swift Grey" }, "isCurrent": true, "price": { "value": 14.9, "currency": "$" } },
    { "asin": "B00PGB7OKM", "attributes": { "Size": "1 Pack", "Style": "USB Receiver", "Color": "Blue" }, "isCurrent": false, "price": null }
  ],
  "starsBreakdown": { "5star": 0.76, "4star": 0.11, "3star": 0.05, "2star": 0.01, "1star": 0.07 },
  "aiReviewsSummary": { "text": "Customers find the mouse works well and is easy to use, with a comfortable fit and good ergonomics. …" },
  "topReviews": [
    { "id": "R3SNMIE1UQ8UH", "author": "Brian", "rating": 5.0, "title": "Almost 2 Years Later and I Haven't Even Changed the Battery!", "date": "2026-09-09", "reviewedIn": "the United States", "verifiedPurchase": true }
  ],
  "climatePledgeFriendly": true,
  "frequentlyBoughtTogether": []
}
```

***

### How does it work?

Amazon Product Scraper reads the same public search, category and product pages any visitor's browser loads — no Amazon account, password or browser automation involved. Requests go through Apify's residential proxy by default, matched to each marketplace's country, so pages load the way a real local shopper would see them. When Amazon blocks a request, the run switches to a fresh session automatically and tries again; a request that keeps failing is retried with pauses before it is marked unavailable. Only data any visitor without an account can see is collected — nothing hidden behind a login is accessed or guessed. The output fields stay the same shape on every run, so a layout change on Amazon's side does not change the JSON your code reads.

***

### How do you integrate Amazon Product Scraper into your stack?

It works with what you already use: a REST API for any language — call it as an amazon product scraper api from your own backend — MCP for AI agents, and no-code tools.

#### MCP integration for AI agents

Registering the actor over MCP lets Claude, Cursor, Windsurf or any other MCP-aware agent run it on its own, without you writing any scraping logic into the prompt. The same `claude mcp add` command works for any MCP client that supports Streamable HTTP. This registers Amazon Product Scraper as a tool your agent can call directly, passing links or keywords and reading the products back in the same run.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fastdataapi/amazon-product-scraper"
```

#### No-code tools (n8n, Make, LangChain)

In n8n, use the Apify node's "Run an Actor" operation, or the HTTP Request node pointed at the Apify run-sync endpoint with your token. In Make, use the Apify app's "Run an Actor" module followed by "Get Dataset Items" to pull the products into your scenario. In LangChain, the `langchain-apify` package wraps any Apify Actor, including this one, as a callable tool.

***

### Is it legal to scrape Amazon data?

Collecting publicly available product data is generally lawful, although Amazon's Conditions of Use restrict automated access. Amazon Product Scraper returns only product data that any visitor without an account can see — nothing behind a login. Reviewer names, seller business details and addresses can count as personal data under GDPR and CCPA, so make sure you have a lawful basis before storing or reusing them at scale. Consult legal counsel if your use case involves bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Amazon Product Scraper return?

Title, price, rating, brand and specifications are the core fields; see [the data fields section](#what-data-can-i-extract-with-amazon-product-scraper) for the rest. Used as an amazon product reviews scraper, it also returns Amazon's review summary and top customer reviews.

#### Does Amazon Product Scraper require an Amazon account or login?

No. Only public product data is extracted. No credentials needed.

#### How fast does Amazon Product Scraper run?

A recorded run returned 8 products for "wireless mouse" in 10.7 seconds, with the first product saved after 7.8 seconds. Data is read live from Amazon, not cached.

#### What happens if a link gives no product?

A start link that is not a usable Amazon link, or that Amazon gives no products for, gets one row with `status: "failed"` and the reason in `error`, while every other link keeps running.

#### Can I scrape multiple Amazon links at once?

Yes. Add as many search, category or product links or keywords as you need to `categoryOrProductUrls`; each line runs as its own entry on its own marketplace, in the same run.

#### Does Amazon Product Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Amazon Product Scraper is available as an MCP tool. Register it in Claude Code, Cursor or Windsurf with the command above. Any agent that can call an HTTP endpoint can use the REST API directly.

#### Does Amazon Product Scraper return data in a format LLMs can use directly?

Yes. Typed, normalized JSON with consistent field names. No HTML parsing, no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool — no transformation step.

#### What happens when Amazon changes its layout or anti-bot system?

The actor is maintained, and the output fields stay the same even when Amazon changes how its pages work. No specific update turnaround is guaranteed.

#### Can I use Amazon Product Scraper without managing proxies or browser infrastructure?

Yes. Proxy rotation and block handling run on the actor's side. You send one request and get structured JSON back. No proxy accounts, no headless browser setup, no maintenance.

#### Which Amazon product fields work best for AI training data and RAG indexing?

For RAG: the description, feature bullets, specification tables and review summaries. For training data: the numeric and boolean fields — price, rating, rating count, stock count and the sponsored and Climate Pledge Friendly flags. All fields are typed primitives — strings, numbers, booleans, arrays or objects — no normalization needed.

***

### Your feedback

Found a bug or missing a field? Let us know so we can keep the actor accurate as Amazon changes. We read every report and ship fixes.

# Actor input Schema

## `categoryOrProductUrls` (type: `array`):

Add one entry per line. Accepted:

1. Search or category result links, e.g. https://www.amazon.com/s?k=keyboard or a category link with filters applied (price, brand, rating and so on).
2. Product links, e.g. https://www.amazon.com/dp/B0B3BVWJ6Y.
3. Plain keywords, e.g. wireless mouse, which are searched on amazon.com.

Every link is scraped on its own marketplace (amazon.de, amazon.co.uk, amazon.co.jp and so on). Entries that are not Amazon links are skipped and listed in the log.

## `maxItemsPerStartUrl` (type: `integer`):

How many search results to keep for each search or category URL. 0 = all results the search shows. A product URL gives its product (plus its variants when you ask for them).

Free plan: up to 20 products per run (all start URLs together) and 200 per month; paid plans have no limit.

## `maxSearchPagesPerStartUrl` (type: `integer`):

Stop after this many search result pages for each search or category URL. The run stops at whichever comes first: this page count or Max results per URL. Amazon caps how many pages one search shows; to reach more products, split the search into narrower category or filter links.

## `scrapeProductDetails` (type: `boolean`):

On: every search result also gets its product page data (brand, bullets, description, specifications, images, videos, delivery, seller, ranks, variants, rating breakdown, top reviews and more).

Off: only the data shown on the search results page (ASIN, title, URL, image, price, rating, review count, sponsored flag, position) - much faster. Product URLs always load their product page.

## `maxProductVariantsAsSeparateResults` (type: `integer`):

Save up to this many other variants (color, size, style) of each product as their own full result rows. 0 = off. The variant list with its options is always included in the product row under variants.

## `scrapeProductVariantPrices` (type: `boolean`):

Add the current price of every variant to the product's variants list.

## `maxOffers` (type: `integer`):

How many marketplace offers (price, condition, delivery, seller) to collect per product, buy-box offer first. 0 = no offer list.

## `scrapeSellers` (type: `boolean`):

Add the seller profile (business name, address, rating, ratings count, positive feedback) to the product's seller and to every collected offer's seller. Amazon's own retail stores have no public seller profile.

## `ensureLoadedProductDescriptionFields` (type: `boolean`):

Amazon sometimes serves product pages without the feature bullets and description. When on, such pages are loaded again on a fresh session until those sections are present. More requests, more complete data.

## `countryCode` (type: `string`):

Country to deliver to. Leave empty for the marketplace's default location. The zip code below is used when this is empty or matches the marketplace's own country (e.g. US on amazon.com); for any other country only the country is set.

## `zipCode` (type: `string`):

Zip or postal code to deliver to, e.g. 10001 for New York on amazon.com. With only a country set, Amazon may pick a different zip code for every session.

## `locationDeliverableRoutes` (type: `array`):

Page types that use the delivery location: PRODUCT (product pages and seller profiles), SEARCH (search and category pages), OFFERS (offer lists and variant prices). Leaving a type out makes it a little faster but its prices and delivery data follow Amazon's default location.

## `language` (type: `string`):

Language of the Amazon pages. Each marketplace supports its own set of languages; an unsupported choice falls back to the marketplace's default language.

## `maxConcurrentRequests` (type: `integer`):

How many pages load at the same time. Higher is faster; lower is gentler when Amazon blocks a lot.

## `useCaptchaSolver` (type: `boolean`):

Solve Amazon's image captchas with your CapSolver key (field below or the CAPSOLVER_API_KEY environment variable) instead of only retrying on a fresh session. Without a key, captchas are retried on a fresh session.

## `capSolverApiKey` (type: `string`):

Your CapSolver API key, used only when Use captcha solver is on. Stored as a secret and never written to the output or the log.

## `proxyCountry` (type: `string`):

Country of the proxy IP addresses. Automatic matches each Amazon marketplace (amazon.de uses German IPs, amazon.co.uk British ones, and so on). No proxy uses a direct connection.

## `proxyConfiguration` (type: `object`):

Proxy for all requests. Residential proxy gives the fewest blocks. If the proxy keeps refusing connections, the run continues with a direct connection.

## Actor input object example

```json
{
  "categoryOrProductUrls": [
    "https://www.amazon.com/s?k=keyboard"
  ],
  "maxItemsPerStartUrl": 10,
  "maxSearchPagesPerStartUrl": 9999,
  "scrapeProductDetails": true,
  "scrapeProductVariantPrices": false,
  "maxOffers": 0,
  "scrapeSellers": false,
  "ensureLoadedProductDescriptionFields": false,
  "locationDeliverableRoutes": [
    "PRODUCT",
    "SEARCH",
    "OFFERS"
  ],
  "maxConcurrentRequests": 10,
  "useCaptchaSolver": false,
  "proxyCountry": "AUTO_SELECT_PROXY_COUNTRY",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped products, one row per product. Start URLs that gave no products get a row with status failed (not charged).

## `runSummary` (type: `string`):

Run status, duration, totals, request statistics, the saved products and the errors, under the OUTPUT key.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "categoryOrProductUrls": [
        "https://www.amazon.com/s?k=keyboard"
    ],
    "locationDeliverableRoutes": [
        "PRODUCT",
        "SEARCH",
        "OFFERS"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fastdataapi/amazon-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "categoryOrProductUrls": ["https://www.amazon.com/s?k=keyboard"],
    "locationDeliverableRoutes": [
        "PRODUCT",
        "SEARCH",
        "OFFERS",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("fastdataapi/amazon-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "categoryOrProductUrls": [
    "https://www.amazon.com/s?k=keyboard"
  ],
  "locationDeliverableRoutes": [
    "PRODUCT",
    "SEARCH",
    "OFFERS"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call fastdataapi/amazon-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fastdataapi/amazon-product-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EqQ4wFS9oeg7rg7ez/builds/GAyxOHc2Q0lz8mCXy/openapi.json
