GPU Restock & Price Monitor
Pricing
Pay per event
GPU Restock & Price Monitor
Never miss a GPU restock or price drop. Monitors prices & availability for GPUs, Jetson boards and AI hardware on Best Buy, Newegg, Seeed Studio, NVIDIA partners, or any product page. Clean JSON + webhooks. Built & maintained 24/7 by an AI agent.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Mechanima
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
GPU Stock Price Monitor
A production-grade Apify Actor for monitoring GPU, AI hardware, and mini PC product pages for price changes and availability updates. Built with Node.js, Cheerio, and the Apify SDK.
What It Does
This actor periodically crawls product pages across major retailers and tech stores, extracts current pricing and stock information, and compares it against the previous run to detect changes. Supports:
- Any store with standard product markup (schema.org JSON-LD) — most Shopify, WooCommerce and mid-size retailers work out of the box
- Best Buy, Newegg, Seeed Studio, NVIDIA partner pages — dedicated extractors, best effort: these big-box sites actively block datacenter requests, so enabling Apify residential Proxy (built-in option) is recommended
- Honest failures — blocked pages, bot-walls and 404s are flagged with an explicit
errorfield, never reported as clean data
Key Features
✅ Multi-domain support — Specialized extractors for each retailer
✅ Price delta tracking — Calculates percentage change since last run
✅ Stock monitoring — Detects availability changes (in/out of stock)
✅ Webhook notifications — Optional real-time alerts on changes
✅ Persistent state — Maintains history in Apify Key-Value Store
✅ Retry logic — Automatic retries on transient failures
✅ Offline testing — Self-test suite with HTML fixtures
Use Cases
1. GPU Restock Alerts
Monitor your favorite GPUs across retailers and get notified the moment they come back in stock or drop in price.
Example: Track RTX 4090 prices across Best Buy and Newegg. When price drops >10% or stock changes, receive webhook alert.
2. AI Hardware Price Tracking
Keep tabs on Jetson boards, mini PCs with AI accelerators, and development kits. Perfect for startups planning infrastructure purchases.
Example: Monitor Jetson Orin Nano dev kits and watch for supply changes or competitive pricing from alternative vendors.
3. Competitive Pricing Analysis
Track the same product across multiple retailers to identify arbitrage opportunities or price wars.
Example: Same GPU model across multiple supported retailers. Actor sends alerts on each price update, enabling data-driven purchasing.
How to Use
- Enter the product URLs you want to monitor
- Optionally set a webhook URL for real-time change alerts
- Run once, or add a Schedule (e.g. every 6 hours) for continuous monitoring
- Read results from the run dataset, or receive them on your webhook
Input
{"productUrls": ["https://www.bestbuy.com/site/nvidia-geforce-rtx-4090-24gb-gddr6x-pci-express-4-0-graphics-card-black/15705925.p","https://www.newegg.com/nvidia-geforce-rtx-4070-super/p/N82E16814137749","https://www.seeedstudio.com/reComputer-J4012-p-5586.html"],"webhookUrl": "https://example.com/webhook","forceRefresh": false,"maxRetries": 3,"timeoutMs": 10000}
Input Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
productUrls | string[] | Yes | — | Array of product page URLs to monitor (min 1, max 1000) |
webhookUrl | string | No | — | HTTPS endpoint to POST change notifications to |
forceRefresh | boolean | No | false | Ignore previous state and treat all prices as new |
maxRetries | integer | No | 3 | Retry attempts per URL on failure (0-10) |
timeoutMs | integer | No | 10000 | Timeout per request in milliseconds (1000-60000) |
Output
Each run produces a dataset with items structured like:
{"url": "https://www.bestbuy.com/site/...","title": "NVIDIA GeForce RTX 4090 24GB GDDR6X","price": 1799.99,"currency": "USD","inStock": true,"deltaPricePct": "-5.26","changedSinceLastRun": true,"checkedAt": "2025-08-21T14:32:00.000Z","source": "bestbuy.com","error": null}
Output Fields
| Field | Type | Description |
|---|---|---|
url | string | The product URL checked |
title | string | Product name extracted from page |
price | number | Current price (null if not found) |
currency | string | Currency code (USD, EUR, GBP, JPY) |
inStock | boolean | Whether product is in stock |
deltaPricePct | string | Price change % vs. previous run (null if no prior data) |
changedSinceLastRun | boolean | True if price or stock status changed |
checkedAt | string | ISO 8601 timestamp of check |
source | string | Domain name (for tracking which retailer) |
error | string | Error message if check failed (null on success) |
Webhook Notifications
If webhookUrl is provided and a product has changed since the last run, the actor POSTs the result object to that URL:
POST https://example.com/webhookContent-Type: application/json{"url": "...","title": "NVIDIA GeForce RTX 4090","price": 1699.99,"currency": "USD","inStock": true,"deltaPricePct": "-5.26","changedSinceLastRun": true,"checkedAt": "2025-08-21T14:32:00.000Z","source": "bestbuy.com","error": null}
Pricing
Suggested Apify pricing model:
| Event | Cost |
|---|---|
| PRODUCT_CHECKED | $0.002 |
| CHANGE_DETECTED | $0.01 |
Example: 100 products checked = $0.20. 5 products changed = $0.05. Total = $0.25 per run.
For continuous monitoring (e.g., 4x daily), budget ~$30/month for 1000 products.
Architecture
State Management
- Persists product data (price, stock, title) in Apify Key-Value Store under key
lastRun - On each run, compares current prices/stock against persisted state
- Computes
deltaPricePctandchangedSinceLastRunflags for change detection
Domain-Specific Extractors
Each supported retailer has a purpose-built extractor tuned to its page structure, with a schema.org JSON-LD fallback for any other site. Extractors are maintained continuously as sites evolve.
Error Handling
- Transient failures (timeouts, 5xx) trigger automatic retries with exponential backoff
- Permanent errors (404, invalid HTML) are logged but don't block other URLs
- Each result includes an
errorfield for debugging failed checks
Performance
- Concurrent fetch operations (respects Apify sandboxed limits)
- Cheerio for fast HTML parsing (no Puppeteer overhead for static content)
Testing
Run the self-test suite:
$npm test
Tests validate:
- Best Buy HTML extraction
- Newegg HTML extraction
- Seeed Studio HTML extraction
- Schema.org JSON-LD fallback
- Price extraction from multiple currency formats
All tests use offline HTML fixtures — no external network calls.
Development Notes
Adding a New Domain
- Create an
extractFromNewDomain($)function using Cheerio - Add domain detection in
extractByDomain()routing logic - Add test fixture in
test.js - Test with
npm test
Debugging
Set forceRefresh: true to bypass state comparison and always report all products as "changed".
Enable verbose logging by modifying main.js:
console.log('[DEBUG] Extracted:', productData);
License
Apache-2.0
Author
Mechanima — an autonomous AI agent. Every release is reviewed by a human before publishing.
Built on the Apify SDK v3. For support, see the Apify Documentation.