Product & Price Drop Tracker
Pricing
Pay per usage
Product & Price Drop Tracker
Monitor product prices and get alerted when they drop below your target. Tracks price history, stock status, and sends webhook notifications on price drops.
Monitor product prices on any e-commerce website and get notified when prices drop below your target threshold.
Features
- Multi-product monitoring — Track prices for multiple products in a single run
- Automatic price detection — Intelligent price extraction using common CSS selectors (.price, [data-price], [itemprop="price"], meta tags, and more)
- Custom CSS selectors — Specify a custom selector if auto-detection doesn't work
- Price history tracking — Persists prices between runs using Apify key-value store
- Target price alerts — Get notified only when the price drops to or below your target
- Stock status detection — Detects "In Stock", "Out of Stock", and add-to-cart availability
- Webhook notifications — POST price drop alerts to any HTTP endpoint
- Smart output — Configurable to report only price drops or all check results
- Graceful shutdown — Handles abort signals cleanly to save costs
Input
| Field | Type | Required | Description |
|---|---|---|---|
products | array of objects | ✓ | List of products to monitor |
notificationType | string | "changes_only" (default) or "all_runs" | |
webhookUrl | string | URL for price drop webhook notifications |
Product Object
| Field | Type | Required | Description |
|---|---|---|---|
url | string | ✓ | Full URL of the product page |
name | string | ✓ | Friendly label for the product |
targetPrice | number | ✓ | Alert when price drops to or below this amount |
selector | string | Custom CSS selector for the price element (optional) |
Example Input
{"products": [{"url": "https://www.amazon.com/dp/B0ABCDEFGH","name": "Sony WH-1000XM5 Headphones","targetPrice": 299.99,"selector": ".a-price-whole"},{"url": "https://www.bestbuy.com/site/some-product","name": "Some Electronics","targetPrice": 150.00}],"notificationType": "changes_only","webhookUrl": "https://hooks.example.com/price-alert"}
Output / Dataset Fields
| Field | Description |
|---|---|
timestamp | ISO 8601 timestamp of the check |
name | Product label |
url | Product URL |
currentPrice | Current price extracted (or null) |
previousPrice | Price from the previous run (or null) |
targetPrice | Target price threshold |
priceDropped | Boolean — true if price dropped below target |
dropAmount | Dollar amount of the drop |
dropPercent | Percentage drop |
inStock | Boolean — true/false/null (unknown) |
error | Error message if the check failed |
A summary record with _summary: true is appended at the end of each run.
Price Detection
The Actor uses a multi-strategy approach to extract prices:
- Custom selector — If provided, this is tried first
- Common selectors —
.price,[data-price],[itemprop="price"],meta[property="product:price:amount"],.product-price,.sale-price,.current-price, etc. - Class/id heuristics — Elements with "price" in their class or id
- Amazon-specific —
.a-price-whole,.a-offscreen - Text fallback — Scans text content for price-like patterns
Supported Price Formats
$1,234.56— US/UK format with comma thousands separator€1.234,56— European format with dot thousands separator and comma decimal£99.99— Various currency symbols- Plain numbers with 0-2 decimal places
Notifications
Webhook Payload
When a price drop is detected, the Actor POSTs to the configured webhook URL:
{"event": "price_dropped","product": "Sony WH-1000XM5 Headphones","url": "https://...","currentPrice": 278.00,"previousPrice": 349.99,"targetPrice": 299.99,"dropAmount": 71.99,"dropPercent": 20.6,"checkedAt": "2026-07-04T12:00:00+00:00","inStock": true}
Notification Types
| Mode | Behavior |
|---|---|
changes_only | Only pushes price drops and first-time checks to the dataset |
all_runs | Pushes every check result to the dataset |
State Persistence
Price history is stored in a named key-value store (price-drop-tracker-state) keyed by price-state-{md5(url+|+selector)}. This means prices are tracked across runs — each run compares against the previous run's price.
Use Cases
- Deal hunting — Get notified when products hit your desired price
- Competitor price monitoring — Track competitor pricing over time
- Price drop alerts — Set up recurring runs (e.g., every hour) and receive webhooks when prices drop
- Inventory monitoring — Track stock availability alongside pricing
Local Development
# Install dependenciespython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt# Run locallyAPIFY_ACTOR_PYTHON_VENV_PATH=.venv apify run --purge# Push to Apify cloudapify push
Pricing
This Actor uses pay-per-event pricing at $0.01 per run — one flat charge per execution regardless of how many products you check.