# Competitor Price Tracker (`luis.pinto/competitor-price-tracker`) Actor

Track competitor product prices on Amazon, Walmart, Shopify, Best Buy and more. Each run scrapes the latest prices and updates a Notion, Sheets, or Airtable table via Apify MCP Connectors. Export data, run via API, schedule and monitor runs, or integrate with other tools.

- **URL**: https://apify.com/luis.pinto/competitor-price-tracker.md
- **Developed by:** [Luis Pinto](https://apify.com/luis.pinto) (community)
- **Categories:** Agents, Automation, E-commerce
- **Stats:** 10 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.70 / 1,000 products

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

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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Competitor Price Tracker

**Track competitor prices across Amazon, Walmart, Shopify, Best Buy, and any site, synced to Notion, Sheets, or Airtable on every run.**

***

### What does Competitor Price Tracker do?

Competitor Price Tracker scrapes competitor product URLs through the Apify [E-Commerce Scraping Tool](https://apify.com/apify/e-commerce-scraping-tool), then writes or updates a destination database (Notion, Google Sheets, Airtable, or any Model Context Protocol (MCP) connected workspace) you pick at runtime.

- 🔗 Any public product URL: Amazon, Walmart, Best Buy, Shopify, DTC sites
- 📊 Reads and writes to Notion, Sheets, Airtable, or any MCP server
- 🤖 Deterministic dedup so reruns never duplicate rows
- 🏗️ First run creates the database; later runs only insert what changed

**Start with 10 to 50 URLs and one Notion page.**

***

### What data does Competitor Price Tracker track?

| Product data | Commercial info | Run metadata |
|---|---|---|
| 📝 Product title | 💰 Price and currency | 🕐 Scraped timestamp |
| 🔗 Product URL | 📦 In-stock status | ✅ Per-URL status |
| 🏷️ Product identifier | 📉 Pre- vs. post-dedup counts | 💬 LLM summary |

The destination database is the source of truth. Competitor Price Tracker stores no prior prices on the Apify platform, so the destination table doubles as the price history. **Keep it in a workspace the team opens daily.**

***

### Can I track competitor prices on Amazon, Shopify, Walmart, and other sites?

Yes. Competitor Price Tracker works on any public product page via the Apify E-Commerce Scraping Tool:

- **Marketplaces**: Amazon, Walmart, eBay, Target, Best Buy, Costco, Kroger, Rakuten, Allegro, Kaufland
- **Storefronts**: Shopify, WooCommerce, BigCommerce, Magento, Salesforce Commerce Cloud
- **Specialty**: Zalando, ASOS, Etsy, Wayfair, IKEA, Flipkart, SHEIN, Lazada

Pages behind login, paywalls, or cart-only pricing are not supported. **Test one URL first.**

***

### How does Competitor Price Tracker work?

1. You paste product URLs and pick a destination MCP Connector.
2. Competitor Price Tracker calls the Apify E-Commerce Scraping Tool and pulls title, price, currency, and stock per URL.
3. JavaScript reads existing rows from the destination and deduplicates the fresh scrape.
4. JavaScript inserts only new or changed rows back through the Connector.
5. An LLM writes a "what changed" summary, and creates the schema on first run.

The LLM only handles schema and the summary, so runs are fast. **Destination = human artifact, dataset = audit log.**

***

### Why use Competitor Price Tracker?

| Feature | Competitors (DIY, Visualping-class SaaS) | Competitor Price Tracker |
|---|---|---|
| Destination | Your DB or proprietary dashboard | Notion, Sheets, Airtable, or any MCP workspace |
| Change detection | Custom diffs or screenshot diffs | Deterministic JavaScript dedup |
| URL coverage | Single-site or hand-rolled | Any public page via Apify E-Commerce Scraping Tool |
| Scheduling | Cron jobs you maintain | Apify Scheduler: hourly, daily, weekly |
| Cost model | Monthly subscription plus infra | Pay-per-event, free to install |
| MCP and AI agent native | Not available | MCP-native, callable from any AI agent |

**If the team already has Notion or Sheets, Competitor Price Tracker removes the "where does this data live" question.**

***

### What can you do with competitor pricing data?

- **DTC competitor watch**: product teams track 20 to 50 SKUs daily
- **MAP compliance**: brand managers run weekly checks; resellers below minimum advertised price land in the summary
- **Seller monitoring**: pricing analysts watch Amazon third-party sellers hourly during Prime Day
- **Promotion timing**: marketing flags drops over 15% via `customInstructions`
- **Pricing analytics**: pipe the destination into Looker Studio or Metabase

**Pick one use case, ship it, add more.**

***

### How to use Competitor Price Tracker?

1. Create a free [Apify account](https://apify.com).
2. In Apify Console, open **Settings > API & Integrations > MCP Connectors** and connect Notion, Sheets, Airtable, or any MCP server.
3. Open Competitor Price Tracker in Apify Store and click **Try for free**.
4. Paste 5 to 20 URLs into **Competitor product URLs**.
5. Pick your Connector in **Destination MCP Connector**.
6. (Notion) Paste a URL into **Notion parent page URL** for deterministic placement.
7. (Optional) Add **Custom instructions for the AI**, e.g. `Flag any price drop over 10% as urgent`.
8. Click **Start**. A 20-URL run finishes in 1 to 3 minutes.
9. Open the resulting database and share it.
10. Schedule: hourly for electronics, daily for most catalogs, weekly for furniture.

**First run: 5 URLs into a throwaway page. Confirm the schema before production.**

***

### How much will it cost?

Competitor Price Tracker uses Apify pay-per-event pricing and is free to install. You pay for Apify compute, E-Commerce Scraping Tool calls (one per URL), and LLM tokens (via the Apify OpenRouter Actor). No API keys required. Most runs cost cents. See the **Pricing** tab. **Run 10 URLs once, check the cost, pick cadence.**

***

### ⬇️ Input

| Field | Type | Required | Description |
|---|---|---|---|
| `productUrls` | string\[] | Yes | Competitor URLs. 10 to 200 per run. |
| `mcpConnector` | string | Recommended | Destination Connector ID. Notion, Sheets, Airtable, or any MCP server with table tools. |
| `notionParentPageUrl` | string | Optional | Notion page the database lives under. Recommended for Notion. |
| `customInstructions` | string | Optional | Extra instructions for the summary LLM. Under 200 chars. |

```json
{
  "productUrls": [
    "https://www.amazon.com/dp/B0CHX2F5QT",
    "https://www.bestbuy.com/site/6525492.p"
  ],
  "mcpConnector": "conn_YOUR_NOTION_CONNECTOR_ID",
  "notionParentPageUrl": "https://www.notion.so/yourworkspace/Tracking-abc",
  "customInstructions": "Flag any price drop over 10% as urgent."
}
```

**Always pass `notionParentPageUrl` for Notion.**

***

### ⬆️ Output

The primary artifact is the destination database the MCP Connector writes to. The Apify dataset also gets one record per run with metadata, pre-dedup counts, and the LLM summary.

```json
{
  "runId": "abc123",
  "startedAt": "2026-04-12T08:00:00.000Z",
  "durationMs": 134000,
  "preDedupCount": 2,
  "postDedupInsertedCount": 1,
  "llmSummary": "iPhone 15 Pro dropped USD 50 on Amazon. Best Buy unchanged."
}
```

**Build dashboards on the destination table, not the Apify dataset.**

***

### How to run Competitor Price Tracker via the Apify API

Start a run with one POST. Get `YOUR_APIFY_TOKEN` from **Settings > Integrations** in Apify Console.

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/luis.pinto~competitor-price-tracker/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "productUrls": ["https://www.amazon.com/dp/B0CHX2F5QT"],
    "mcpConnector": "conn_YOUR_NOTION_CONNECTOR_ID"
  }'
```

The response includes a `runId` you can poll. **Wire this into Zapier, n8n, Make, or any webhook orchestrator.**

***

### Limitations

- **No login or cart-reveal pricing**: only publicly visible prices. Member-only, paywalled, and cart-only pricing is unreachable.
- **Canonicalized URLs**: the Apify E-Commerce Scraping Tool normalizes URLs, so the URL written to your database may differ from the one you pasted (shorter, no tracking parameters). Dedup keys off the canonical URL.
- **Table-capable MCP Connector required**: Notion databases, Sheets, and Airtable bases work. Document-only Connectors do not.

**Match URLs in reporting against the canonical URL in the output.**

***

### Are there other tools for competitor monitoring on Apify?

- **[Apify E-Commerce Scraping Tool](https://apify.com/apify/e-commerce-scraping-tool)**: the underlying scraper. Use directly for raw data.
- **[Amazon Product Scraper](https://apify.com/junglee/amazon-product-scraper)**: deep Amazon extraction.
- **[Google Shopping Scraper](https://apify.com/emastra/google-shopping-scraper)**: price comparisons from Google Shopping.

**Use Competitor Price Tracker for tracking.**

***

### FAQ

**Can I track prices on Amazon, Walmart, Shopify, Best Buy, and Etsy?**
Yes. Confirmed: Amazon, Walmart, eBay, Target, Best Buy, Costco, Shopify, WooCommerce, BigCommerce, Magento, Zalando, ASOS, Etsy, Wayfair, IKEA.

**Can I track prices behind login?**
No. Competitor Price Tracker only reads publicly visible product pages.

**Can I get historical price data?**
Yes. The destination database is the price history; Competitor Price Tracker appends changed rows on every run.

**How often should I schedule runs?**
Hourly for fast-moving categories (electronics, promotions). Daily for most catalogs. Weekly for furniture.

**Can I use Competitor Price Tracker with Zapier, n8n, Make, Slack, or Google Sheets?**
Yes. Start runs via the Apify API from Zapier, n8n, or Make, react to changes in the destination, and post summaries into Slack with a webhook on the run-finished event.

**Can I use Competitor Price Tracker through an MCP Server?**
Yes. Results are written into your MCP-connected workspace, and Competitor Price Tracker is callable from any MCP-enabled AI agent via the Apify Actors MCP Server.

**Can I use Competitor Price Tracker with the Apify API?**
Yes. See "How to run Competitor Price Tracker via the Apify API" above.

**Is scraping competitor prices legal?**
Generally yes for publicly visible pricing. US and EU case law has held public pricing is not protected against automated access. Review each site's terms, avoid personal data, and never scrape behind authentication.

***

### Your feedback

Found a bug or have a feature request? Open an issue on the **[Issues tab](https://console.apify.com/actors/luis.pinto~competitor-price-tracker/issues)**.

# Actor input Schema

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

Competitor product URLs to track. Each URL is sent to Apify's E-Commerce Scraping Tool to extract title, price, currency, stock, and rating. Works with any product page on a public e-commerce site (Amazon, Shopify stores, Best Buy, Walmart, DTC sites, and others). Accepts URLs with or without https://. Recommended: 10 to 200 URLs per run. Either this OR sourceDatasetId is required. sourceDatasetId wins when both are set.

## `sourceDatasetId` (type: `string`):

Apify dataset ID of an EXISTING E-Commerce Scraping Tool run. When provided, the Actor skips scraping and reads products directly from this dataset. Use this for composability: scrape once on a schedule, sync to multiple destinations, or chain Actors via webhooks. Either this OR productUrls is required. Overrides productUrls when both are set.

## `mcpConnector` (type: `string`):

MCP Connector pointing at the Notion workspace where the tracking table lives. Authorize a Notion Connector under Apify Console > Settings > API & Integrations > MCP Connectors, then add it to the parent page where the table should live. Required. The v0.2.0 orchestrator only supports Notion as a destination; Sheets and Airtable are on the roadmap.

## `notionParentPageUrl` (type: `string`):

URL of the Notion page where the Competitor Price Tracker table should live. Strongly recommended. Without this, the search has to scan the workspace and may pick the wrong location. Create a Notion page (for example 'Apify Demos'), add the Apify integration via the page menu > Connections, then paste the URL here. Required to create the table on the first run.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.amazon.com/Apple-iPhone-15-Pro-256GB/dp/B0CHX2F5QT",
    "https://www.bestbuy.com/site/apple-iphone-15-pro-256gb-natural-titanium-unlocked/6525492.p"
  ]
}
```

# Actor output Schema

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

No description

# 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/Apple-iPhone-15-Pro-256GB/dp/B0CHX2F5QT",
        "https://www.bestbuy.com/site/apple-iphone-15-pro-256gb-natural-titanium-unlocked/6525492.p"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("luis.pinto/competitor-price-tracker").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/Apple-iPhone-15-Pro-256GB/dp/B0CHX2F5QT",
        "https://www.bestbuy.com/site/apple-iphone-15-pro-256gb-natural-titanium-unlocked/6525492.p",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("luis.pinto/competitor-price-tracker").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/Apple-iPhone-15-Pro-256GB/dp/B0CHX2F5QT",
    "https://www.bestbuy.com/site/apple-iphone-15-pro-256gb-natural-titanium-unlocked/6525492.p"
  ]
}' |
apify call luis.pinto/competitor-price-tracker --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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