Shopify Inventory Monitor
Pricing
from $3.00 / 1,000 variant monitoreds
Shopify Inventory Monitor
Monitor Shopify store inventory, availability, and prices across multiple stores using the public products.json API. Tracks variant-level stock levels, detects out-of-stock items, exports JSON and CSV, and optionally notifies a webhook when inventory changes.
Pricing
from $3.00 / 1,000 variant monitoreds
Rating
0.0
(0)
Developer
Harsh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Monitor Shopify store inventory, availability, and prices across multiple stores using the public products.json API. No browser is required — the Actor uses Crawlee HTTP crawling with retries, logging, and rate limiting.
Features
- Multiple stores — monitor one or many Shopify store or collection URLs in a single run
- Variant-level records — one dataset row per product variant (SKU, price, options)
- Inventory detection — captures
inventory_quantityandinventory_managementwhen exposed by the store - Out-of-stock detection — flags variants that are unavailable or have zero tracked inventory
- JSON output — variant records pushed to the default dataset
- CSV export —
inventory.csvsaved to the key-value store - Change detection — compares against the previous run snapshot (
INVENTORY_SNAPSHOT) - Webhook notifications — optional POST with changes and full records when monitoring completes
- Rate limiting — configurable concurrency, retries, and request delay
Input
| Field | Type | Default | Description |
|---|---|---|---|
storeUrls | string[] | — | Shopify store or collection URLs (required) |
maxProducts | integer | 250 | Max products per store URL |
maxConcurrency | integer | 2 | Max parallel HTTP requests |
minConcurrency | integer | 1 | Min parallel HTTP requests |
requestDelayMs | integer | 500 | Approximate per-request delay |
maxRequestRetries | integer | 3 | Retries for failed requests |
includeOutOfStockOnly | boolean | false | Only output out-of-stock variants |
detectChanges | boolean | true | Compare with previous run snapshot |
webhookUrl | string | — | Optional webhook URL for POST notifications |
saveCsv | boolean | true | Save inventory.csv to key-value store |
Example input
{"storeUrls": ["https://shop.polymer80.com","https://www.allbirds.com"],"maxProducts": 100,"maxConcurrency": 2,"requestDelayMs": 500,"detectChanges": true,"saveCsv": true,"webhookUrl": "https://example.com/webhooks/inventory"}
Local example input is in storage/key_value_stores/default/INPUT.json.
Output
Dataset (JSON)
Each item is a variant inventory record. See examples/example-output.json.
Key-value store
| Key | Description |
|---|---|
inventory.csv | CSV export of all variant records |
OUTPUT | Run summary with change count and metadata |
INVENTORY_SNAPSHOT | Snapshot used for change detection on the next run |
Webhook payload
When webhookUrl is set, the Actor POSTs:
{"event": "inventory.monitor.complete","monitoredAt": "2026-07-05T12:00:00.000Z","totalVariants": 120,"outOfStockCount": 8,"changesDetected": 3,"changes": [],"records": []}
Local development
npm installnpm run lintnpm run buildnpm testapify run --purge
Notes
- Inventory quantities are only available when the store exposes them via the public products API.
- Collection URLs that return 404 automatically fall back to store-wide
products.json. - Schedule this Actor regularly to track stock and price changes over time.
License
ISC