# Amazon Ads Scraper (`molded_mountainpass/my-actor`) Actor

Ultra-fast, low-cost Amazon Ads scraper using Python & Crawlee. Extracts Headline Banners, Sponsored Video Rows, and Search Grid Inline Ads. Features built-in anti-bot proxy rotation, automatic pricing extraction, and smart widget filtering to keep datasets 100% noise-free.

- **URL**: https://apify.com/molded\_mountainpass/my-actor.md
- **Developed by:** [Divya Raj](https://apify.com/molded_mountainpass) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Amazon Ads Advanced Bulk Scraper: How to Scrape Amazon Competitor PPC Data 🚀

An **ultra-performance, cost-effective Amazon Advertising intelligence extractor** built natively with **Python Crawlee** and **BeautifulSoup**. Safely monitor your competitors' paid search campaigns, extract dynamic ad variants, and gather PPC insights across international Amazon domains in absolute bulk.

---

### 💎 Why This Scraper is Better Than Anything Else?

Most Amazon scrapers on the marketplace rely on heavy browser automation tools like Playwright or Puppeteer. While they work, they consume massive amounts of RAM and CPU, run incredibly slow, and quickly exhaust your **Apify Compute Units (CUs)**—inflating your server bills.

This tool stands completely apart by maximizing efficiency:
* **10x Performance & Lower Costs:** Built on a raw HTTP & HTML parser architecture (`BeautifulSoupCrawler`). It extracts data **up to 10 times faster** than full headless browsers while saving you up to 90% on your Apify computing costs!
* **Automatic 5-Page Bulk Expansion:** You don't need to manually build massive lists of multi-page URLs. Just provide **one single search query link**, and the core engine automatically generates and extracts **Pages 1 to 5** instantly.
* **Deep Multi-Format Ad Tracking:** Captures all search layout monetization slots in a single run, including:
  1. **Headline Brand Storefront Banners** (Top of page creative banners)
  2. **Sponsored Video Row Ads** (Desktop interactive video formats)
  3. **Search Grid Inline Ads** (Standard sponsored product listings)

---

### 🔌 Proxy Requirements & Output Expectations (Important Notice) ⚠️

This Actor programmatically hooks into your Apify proxy configuration to manage requests cleanly out of the box. However, **your Apify subscription tier and proxy access will directly impact your data extraction volume:**

#### 1️⃣ Running on the Apify FREE TIER (Shared Datacenter Proxies)
* **How it works:** The scraper runs successfully without any code crashes.
* **What to expect:** Amazon aggressively monitors and filters traffic from datacenter IP ranges. On the free tier, you may see **limited outputs or zero results**, as Amazon often hides or removes the sponsored ad sections from the HTML response for datacenter IPs.
* **Best for:** Small scale code testing or sandboxed experiments.

#### 2️⃣ Running on Apify PREMIUM TIERS (Residential Proxies) 🌟 [RECOMMENDED]
* **How it works:** Simply ensure **Residential Proxies** are selected in the proxy configuration section of your Actor input console.
* **What to expect:** Continuous, unblocked bulk data! Amazon recognizes residential IPs as authentic human shoppers. The platform serves its full ad inventory without restriction, letting the scraper fetch **massive bulk datasets (150+ items per query)** seamlessly.
* **Best for:** Professional PPC analysis, competitor research, and scalable agency data pipelines.

---

### 🛠️ How to Use It Perfectly?

To achieve maximum efficiency and prevent empty datasets, you must follow this one golden rule:

> ⚠️ **CRITICAL INPUT RULE:** This tool is strictly optimized for **Amazon Search Result Pages** (URLs containing `/s?k=...`). It **DOES NOT accept direct product detail pages** (URLs containing `/dp/...`) because product detail layouts lock competitor carousels behind strict client-side lazy-loading script sequences.

#### 📋 Step-by-Step Setup:
1. Navigate to your target Amazon domain (e.g., `amazon.com`, `amazon.in`, `amazon.de`).
2. Search for any high-intent product keyword in the search bar (e.g., `protein powder`, `laptops`, `wireless headphones`).
3. Copy the full clean URL directly from your browser's address bar.
4. Paste it into the **Start URLs** array of this Actor.
5. Hit **Start** and download your structured ad insights instantly!

#### Ideal Input URL Examples:
* `https://www.amazon.com/s?k=wireless+headphones`
* `https://www.amazon.in/s?k=protein+powder`
* `https://www.amazon.de/s?k=kaffeemaschine`

---

### 📦 Data Output Structure

The scraper delivers clean, sanitized, and structured rows directly into your Apify Dataset. You can instantly export the fields to **CSV, JSON, Excel, or Google Sheets**.

#### Sample JSON Output Format:
```json
[
  {
    "keyword": "protein powder",
    "domain": "amazon.in",
    "page": 1,
    "asin": "B07FZ8S74R",
    "title": "Optimum Nutrition (ON) Gold Standard 100% Whey Protein Powder",
    "price": "₹3,499",
    "rating": "4.4 out of 5 stars",
    "reviewsCount": "12,450",
    "adPlacement": "Search Grid Inline",
    "scrapedAt": "2026-07-12T00:05:00.000Z"
  },
  {
    "keyword": "laptops",
    "domain": "amazon.com",
    "page": 1,
    "asin": "Featured ASINs: B0BSHF7WHW, B09B8V1LZ3",
    "title": "Brand Banner: Premium High-Performance Business Notebooks Storefront",
    "price": "N/A",
    "rating": "N/A",
    "reviewsCount": "N/A",
    "adPlacement": "Headline Brand Banner",
    "scrapedAt": "2026-07-12T00:05:10.000Z"
  }
]

# Actor input Schema

## `startUrls` (type: `array`):

Provide Amazon search result URLs (e.g., https://www.amazon.com/s?k=laptops)

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.amazon.com/s?k=laptops"
    }
  ]
}
````

# 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 = {
    "startUrls": [
        {
            "url": "https://www.amazon.com/s?k=laptops"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("molded_mountainpass/my-actor").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 = { "startUrls": [{ "url": "https://www.amazon.com/s?k=laptops" }] }

# Run the Actor and wait for it to finish
run = client.actor("molded_mountainpass/my-actor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.amazon.com/s?k=laptops"
    }
  ]
}' |
apify call molded_mountainpass/my-actor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=molded_mountainpass/my-actor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Amazon Ads Scraper",
        "description": "Ultra-fast, low-cost Amazon Ads scraper using Python & Crawlee. Extracts Headline Banners, Sponsored Video Rows, and Search Grid Inline Ads. Features built-in anti-bot proxy rotation, automatic pricing extraction, and smart widget filtering to keep datasets 100% noise-free.",
        "version": "0.0",
        "x-build-id": "MART4YlWpTXTB0qcf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/molded_mountainpass~my-actor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-molded_mountainpass-my-actor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/molded_mountainpass~my-actor/runs": {
            "post": {
                "operationId": "runs-sync-molded_mountainpass-my-actor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/molded_mountainpass~my-actor/run-sync": {
            "post": {
                "operationId": "run-sync-molded_mountainpass-my-actor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Amazon Search URLs",
                        "type": "array",
                        "description": "Provide Amazon search result URLs (e.g., https://www.amazon.com/s?k=laptops)",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
