# Price Tracker — Track Product Prices Across Any E-Commerce Site (`thirdwatch/price-tracker`) Actor

Track product prices from Amazon, Flipkart, Shopify, eBay, Walmart, AliExpress, and any e-commerce site. Extracts price, original price, discount, availability, rating, brand. Supports 20+ Amazon domains. Schedule daily runs for price monitoring. 15x cheaper than alternatives.

- **URL**: https://apify.com/thirdwatch/price-tracker.md
- **Developed by:** [Thirdwatch](https://apify.com/thirdwatch) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 27 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 results

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/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

## Price Tracker — Track Product Prices Across Any E-Commerce Site

> **Thirdwatch portfolio:** 8,800+ users across 140+ public Actors, 2M+ records delivered, >95% run success. [Explore all Thirdwatch Actors](https://apify.com/thirdwatch).

### What you get

Track product prices from Amazon, Flipkart, Shopify, Walmart, eBay, AliExpress, Etsy, Target, and thousands of other e-commerce sites. Extract current price, original price, discount percentage, availability, rating, brand, and more from any product URL.

### What does Price Tracker do?

Price Tracker takes a list of product page URLs and extracts structured pricing data from each one, using whichever product information the site already publishes. This makes it work on virtually any e-commerce site, not just the major platforms.

### Why use this over alternatives?

- **Significantly cheaper** than the leading competitor, per result
- **Universal** — works on any site that publishes product data, not just a handful of platforms
- **20+ Amazon domains** — US, UK, India, Germany, France, Japan, Australia, Brazil, UAE, and more
- **Indian e-commerce** — Flipkart, Myntra, AJIO, Snapdeal, Meesho, Nykaa support
- **Discount tracking** — extracts both current price and original price, calculates discount percentage
- **Scheduling-ready** — run daily or hourly to build price history over time

### Supported platforms

Works on any e-commerce site that publishes structured product data. Tested and optimized for:

| Platform | Notes |
|----------|-------|
| Amazon (20+ domains) | .com, .in, .co.uk, .de, .fr, .it, .es, .ca, .co.jp, .com.au, .com.br, .ae, .sa, and more |
| Flipkart | Indian e-commerce leader |
| Shopify stores | Any Shopify-powered store |
| Walmart | US retail |
| eBay | Global marketplace |
| Etsy | Handmade and vintage |
| Target | US retail |
| AliExpress | Global wholesale |
| Myntra | Indian fashion |
| AJIO | Indian fashion |
| Snapdeal | Indian marketplace |
| WooCommerce stores | Any WooCommerce site |
| Any other site | Works if the site publishes structured product data |

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `urls` | array of strings | Yes | — | Product page URLs to extract prices from (each must start with `http://` or `https://`) |
| `maxRetries` | integer (0-10) | No | 3 | Extra attempts per URL when a site refuses the connection. Pages that load without a price, or that do not exist, are not retried |
| `proxyCountry` | string | No | US | ISO country code determining which country the request appears to come from. Use the country where the site operates for best results. |

#### Example input

```json
{
    "urls": [
        "https://www.amazon.com/dp/B0BSHF7WHW",
        "https://www.amazon.in/dp/B0BSHF7WHW",
        "https://www.flipkart.com/apple-iphone-15/p/itm123",
        "https://www.walmart.com/ip/Apple-AirPods-Pro/1752657021",
        "https://myshopifystore.com/products/cool-gadget"
    ],
    "maxRetries": 3,
    "proxyCountry": "US"
}
```

### Output

Each product URL produces one result with the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `url` | string | Original product URL |
| `productName` | string | Product title |
| `price` | number | Current selling price |
| `originalPrice` | number | Original/list price before discount (if available) |
| `currency` | string | Currency code (USD, INR, GBP, EUR, etc.) |
| `discount` | string | Discount percentage (e.g., "20%") |
| `availability` | string | "In Stock" or "Out of Stock" |
| `rating` | number | Product rating (e.g., 4.5) |
| `reviewCount` | integer | Number of reviews |
| `imageUrl` | string | Product image URL |
| `brand` | string | Brand or manufacturer name |
| `platform` | string | Detected platform (amazon, shopify, flipkart, generic, etc.) |
| `priceSource` | string | Amazon only: `buy_box` for the featured offer, `other_sellers` when Amazon shows no featured offer and the lowest listed seller offer is reported instead |
| `scrapedAt` | string | ISO 8601 timestamp of extraction |
| `success` | boolean | Whether extraction succeeded |
| `error` | string | Error message if failed, null otherwise |

#### Example output

```json
{
    "url": "https://www.amazon.com/dp/B0BSHF7WHW",
    "productName": "Apple AirPods Pro (2nd Generation)",
    "price": 189.99,
    "originalPrice": 249.99,
    "currency": "USD",
    "discount": "24%",
    "availability": "In Stock",
    "rating": 4.7,
    "reviewCount": 98453,
    "imageUrl": "https://m.media-amazon.com/images/I/61SUj2aKoEL._AC_SL1500_.jpg",
    "brand": "Apple",
    "platform": "amazon",
    "priceSource": "buy_box",
    "scrapedAt": "2026-05-20T11:30:00.000Z",
    "success": true,
    "error": null
}
```

### Use cases

#### Competitor price monitoring

Track competitor product prices daily. Schedule this actor to run every morning and export results to Google Sheets or your pricing dashboard.

#### MAP compliance

Monitor whether resellers are maintaining minimum advertised pricing across marketplaces. Track the same product across Amazon, Walmart, and individual retailer sites.

#### Dropshipping margin tracking

Compare supplier prices on AliExpress or Alibaba against your retail prices on Shopify. Detect when supplier price changes erode your margins.

#### Cross-region price comparison

Track the same Amazon product across US (.com), UK (.co.uk), India (.in), Germany (.de), and Japan (.co.jp) to identify regional pricing differences.

#### Price history and trend analysis

Schedule daily runs to build a price history dataset. Combine with Apify's dataset export to visualize trends in your BI tool.

This actor uses Pay-Per-Event pricing — you only pay for successfully extracted results. Compared to Forward Workstation's Competitor Price Tracker and Apify's E-commerce Scraping Tool, this actor costs significantly less per result.

### How to schedule price monitoring

1. Run this actor once to verify it works with your URLs
2. Go to **Schedules** in the Apify Console
3. Create a new schedule with your desired frequency (daily, hourly, weekly)
4. Set this actor as the target with your product URLs as input
5. Results accumulate in the dataset — export to Google Sheets, webhook to Slack, or consume via API

### Integration

Results are available via:

- **Apify API** — fetch results programmatically from any language
- **Webhooks** — get notified when a run completes
- **Google Sheets** — direct export integration
- **Zapier / Make / n8n** — connect to 1000+ apps
- **CSV / JSON / Excel** — download from the Apify Console

### Limitations

- Sites behind login walls or requiring authentication are not supported
- Amazon products that are currently unavailable, or that no seller is offering, have no price to report and are listed in `ERRORS` instead of being charged. When Amazon shows no featured offer but other sellers list the product, the lowest listed offer is returned with `priceSource: "other_sellers"`
- eBay and Etsy currently refuse automated access to most product pages, so those URLs usually end up in `ERRORS` (not charged)
- If the run's time limit is close, remaining URLs are skipped and listed in `ERRORS` so that the results already collected are always saved
- URLs that return no price (unsupported site, removed product, protected page) are not charged. Each one is listed with its reason in the run's `ERRORS` key-value record, and the run still finishes successfully
- Some sites with stronger automated-access protections may fail to return data
- Sites without any embedded product information cannot be extracted from
- Currency detection depends on the site's own data — some small sites may not include it
- Price Tracker extracts the current snapshot. Build price history by scheduling repeated runs.

### Related Actors

- [AJIO Scraper - India Fashion Products, Prices, Ratings](https://apify.com/thirdwatch/ajio-scraper) — Thirdwatch
- [AliExpress Scraper - Search Products, Prices & Ratings](https://apify.com/thirdwatch/aliexpress-product-scraper) — Thirdwatch
- [Amazon Best Sellers Scraper - Top 100 Ranked Products](https://apify.com/thirdwatch/amazon-bestsellers-scraper) — Thirdwatch

Last verified: 2026-10

More scrapers at [thirdwatch.dev](https://thirdwatch.dev).

# Actor input Schema

## `urls` (type: `array`):

Product page URLs to track prices for (each must start with http:// or https://). Supports Amazon (all 20+ country domains), Flipkart, Shopify stores, Walmart, AliExpress, Etsy, Target, and any e-commerce site with structured product data. URLs that return no price are not charged.

## `maxRetries` (type: `integer`):

Number of retry attempts per URL on failure. Increase for heavily-protected sites.

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

ISO country code determining which country the request appears to come from. Use the country where the e-commerce site operates for best results (e.g. IN for amazon.in/flipkart.com, US for amazon.com).

## Actor input object example

```json
{
  "urls": [
    "https://colourpop.com/products/every-shade-of-starlight"
  ],
  "maxRetries": 3,
  "proxyCountry": "US"
}
```

# Actor output Schema

## `results` (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 = {
    "urls": [
        "https://colourpop.com/products/every-shade-of-starlight"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("thirdwatch/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 = { "urls": ["https://colourpop.com/products/every-shade-of-starlight"] }

# Run the Actor and wait for it to finish
run = client.actor("thirdwatch/price-tracker").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 '{
  "urls": [
    "https://colourpop.com/products/every-shade-of-starlight"
  ]
}' |
apify call thirdwatch/price-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,thirdwatch/price-tracker"
        }
    }
}
```

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/qSNRickVQPVZQ7ec3/builds/SLTbD1pLm7a1APbVg/openapi.json
