GPU Restock & Price Monitor avatar

GPU Restock & Price Monitor

Pricing

Pay per event

Go to Apify Store
GPU Restock & Price Monitor

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

Mechanima

Maintained by Community

Actor 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 error field, 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

  1. Enter the product URLs you want to monitor
  2. Optionally set a webhook URL for real-time change alerts
  3. Run once, or add a Schedule (e.g. every 6 hours) for continuous monitoring
  4. 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

FieldTypeRequiredDefaultDescription
productUrlsstring[]YesArray of product page URLs to monitor (min 1, max 1000)
webhookUrlstringNoHTTPS endpoint to POST change notifications to
forceRefreshbooleanNofalseIgnore previous state and treat all prices as new
maxRetriesintegerNo3Retry attempts per URL on failure (0-10)
timeoutMsintegerNo10000Timeout 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

FieldTypeDescription
urlstringThe product URL checked
titlestringProduct name extracted from page
pricenumberCurrent price (null if not found)
currencystringCurrency code (USD, EUR, GBP, JPY)
inStockbooleanWhether product is in stock
deltaPricePctstringPrice change % vs. previous run (null if no prior data)
changedSinceLastRunbooleanTrue if price or stock status changed
checkedAtstringISO 8601 timestamp of check
sourcestringDomain name (for tracking which retailer)
errorstringError 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/webhook
Content-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:

EventCost
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 deltaPricePct and changedSinceLastRun flags 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 error field 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

  1. Create an extractFromNewDomain($) function using Cheerio
  2. Add domain detection in extractByDomain() routing logic
  3. Add test fixture in test.js
  4. 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.