# Price Pulse (`dhruboai/price-pulse`) Actor

A robust Amazon product data scraper. Extracts real-time pricing, currency, and stock availability. Residential proxies are highly recommended for optimal performance.

- **URL**: https://apify.com/dhruboai/price-pulse.md
- **Developed by:** [Mehmed Hasan Rajim](https://apify.com/dhruboai) (community)
- **Categories:** E-commerce, Developer tools, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 successful price extractions

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## 🚀 Price Pulse - Advanced Amazon Product Scraper

**Price Pulse** is a highly robust, stealthy, and efficient web scraper designed to extract real-time pricing, stock availability, and product metadata from Amazon. Built on top of Crawlee and Puppeteer, it features an intelligent fallback mechanism to handle Amazon's strict anti-bot protections smoothly.

### ✨ Key Features
* **Real-Time Price Extraction:** Accurately scrapes pricing data, including currency detection, using both structured data (JSON-LD) and advanced DOM parsing.
* **Stock Availability:** Instantly checks if a product is "In Stock," "Out of Stock," or "Currently Unavailable."
* **Smart Anti-Bot Handling:** Automatically detects Amazon Captchas or hard blocks and gracefully skips them without crashing the entire run.
* **Pay-Per-Success (MCP):** Integrated with Apify's monetization system. You are only charged for **successful price extractions**. If a page fails or redirects, you don't pay the event fee!

---

### ⚠️ CRITICAL: Proxy Configuration (Must Read)
Amazon has one of the strictest anti-scraping firewalls (WAF) in the world. **You CANNOT use free or Datacenter proxies.**
To get successful results and avoid "HTTP 500" or "Robot Check" blocks, you **MUST** use **Residential Proxies**.

**How to set it up:**
1. Go to the **Proxy Configuration** in the input settings.
2. Select **Apify Proxy**.
3. Choose **Residential** from the proxy groups.

---

### 🛠️ How to Use Price Pulse (Step-by-Step)

#### Step 1: Provide Input
Enter the specific Amazon Product URLs you want to track. You can also define the maximum number of items and the retry count for failed requests.

**Input Configuration Format:**
```json
{
  "productUrls": [
    "https://www.amazon.com/dp/B0CHWRXH8B",
    "https://www.amazon.com/dp/B09G9D7K6S"
  ],
  "maxItems": 20,
  "retryCount": 3,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

#### Step 2: Run the Actor

Click the "Start" button. The crawler will launch a headless browser, mimic real user behavior, and navigate to your target URLs.

#### Step 3: Download Your Data

Once the run is complete, you can download the extracted data in your preferred format (JSON, CSV, Excel, XML).

***

### 📦 Sample Output Structure

```json
{
  "url": "https://www.amazon.com/dp/B0CHWRXH8B",
  "title": "Apple AirPods Pro (2nd Generation) Wireless Earbuds",
  "price": {
    "amount": 249.00,
    "currency": "USD"
  },
  "inStock": true,
  "sku": "B0CHWRXH8B",
  "status": "SUCCESS",
  "retrievedAt": "2026-05-13T10:25:00.000Z"
}
```

***

### 💰 Pricing & Monetization

Price Pulse uses Apify's Pay-per-event pricing model. This guarantees that you get exactly what you pay for.

- **Platform Cost:** Standard Apify compute unit usage.
- **Extraction Fee:** You are charged a micro-fee only when a product price is successfully extracted. Failed URLs, captchas, or skipped pages do not trigger the extraction charge.

***

### 👨‍💻 Developer & Support

Built with ❤️ for data analysts, dropshippers, and e-commerce professionals.

If you encounter any bugs, need custom adjustments, or want to integrate this API into your internal systems, feel free to open an issue or contact the developer via the Apify platform.

# Actor input Schema

## `productUrls` (type: `array`):

List of product URLs to scrape (Currently supports Amazon only).

## `maxItems` (type: `integer`):

Maximum number of products to process (Limit: 50).

## `proxyConfig` (type: `object`):

Configure Apify Proxy settings to bypass anti-bot protections (Residential proxies are highly recommended for Amazon).

## `retryCount` (type: `integer`):

Maximum number of retries for failed or blocked requests.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.amazon.com/dp/B09G9D7K6S"
  ],
  "maxItems": 20,
  "proxyConfig": {
    "useApifyProxy": true
  },
  "retryCount": 3
}
```

# Actor output Schema

## `dataset` (type: `string`):

JSON lines containing verified price and stock data.

## `keyValueStore` (type: `string`):

Location of output images or configuration files.

# 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 = {
    "productUrls": [
        "https://www.amazon.com/dp/B09G9D7K6S"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dhruboai/price-pulse").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 = { "productUrls": ["https://www.amazon.com/dp/B09G9D7K6S"] }

# Run the Actor and wait for it to finish
run = client.actor("dhruboai/price-pulse").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 '{
  "productUrls": [
    "https://www.amazon.com/dp/B09G9D7K6S"
  ]
}' |
apify call dhruboai/price-pulse --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Price Pulse",
        "description": "A robust Amazon product data scraper. Extracts real-time pricing, currency, and stock availability. Residential proxies are highly recommended for optimal performance.",
        "version": "0.0",
        "x-build-id": "RDFUs5s6js5snGiL8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dhruboai~price-pulse/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dhruboai-price-pulse",
                "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/dhruboai~price-pulse/runs": {
            "post": {
                "operationId": "runs-sync-dhruboai-price-pulse",
                "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/dhruboai~price-pulse/run-sync": {
            "post": {
                "operationId": "run-sync-dhruboai-price-pulse",
                "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": [
                    "productUrls"
                ],
                "properties": {
                    "productUrls": {
                        "title": "Product URLs",
                        "minItems": 1,
                        "maxItems": 50,
                        "type": "array",
                        "description": "List of product URLs to scrape (Currently supports Amazon only).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum Items",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of products to process (Limit: 50).",
                        "default": 20
                    },
                    "proxyConfig": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Configure Apify Proxy settings to bypass anti-bot protections (Residential proxies are highly recommended for Amazon).",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "retryCount": {
                        "title": "Max Retries",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum number of retries for failed or blocked requests.",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
