Back-in-stock alerts
The gap between 'sold out' and 'available' on a popular product can close and reopen within minutes, and refreshing a page by hand is a losing game. This stock monitoring API checks a product page at the interval you set and reports the exact moment availability changes, so you act while the window is still open.
Who actually loses sleep over stock
Resellers chasing a limited sneaker drop, collectors after a discontinued part, parents hunting a sold-out toy at the holidays, and B2B buyers waiting on a backordered component all share one frustration: the seller rarely announces a restock, it just appears, briefly, and then vanishes into someone else's cart. A programmatic check removes the guesswork of refreshing a tab every few minutes.
What the endpoint actually looks at
A call to POST /web/monitor-stock takes the product URL and reads the page's availability signal — an in-stock label, a disabled add-to-cart button, a quantity field, whatever the page exposes — then compares it against the state recorded on the previous comprobación. Only a genuine change in availability triggers a result, so you are not notified every time the page is simply checked and nothing moved.
A problem as old as scarcity itself
Waiting lists and 'notify me' buttons existed long before APIs did, but they depend entirely on the seller choosing to notify you, on their schedule, using their own criteria for who hears first, if at all. Watching the page directly puts the timing back in your hands instead of a retailer's marketing calendar, which matters most exactly when demand outstrips supply, allocations are tiny, and every minute — sometimes every second — genuinely counts.
Designed to trigger the next step automatically
Each request returns a task_id immediately, with the real result delivered later via a signed webhook — the practical option if a restock should trigger an automated purchase flow or an instant alert — or a signed link valid for 24 hours for lighter, manual use. You decide how often to check: aggressively for a high-demand drop, more relaxed for a slow-moving backorder.
Transparent, usage-based pricing
The cost is $0.040 per request plus $0.001 per comprobación, with no hidden markup and no free tier or trial — access requires prepaid balance, which keeps checks fast and the service free of abuse. A failed check retries automatically up to three times and is never billed if it does not ultimately succeed.
What you can do with it
Limited product drops
Track a sneaker, console, or collectible listing every minute during a launch window and get notified the second it flips to available.
Backordered components
Watch a supplier's part page for restock so procurement can place an order before the next batch sells out again.
Seasonal gift alerts
Monitor a sold-out toy or gadget through the holiday season instead of manually refreshing a retailer's page.
Reseller inventory intelligence
Keep tabs on a competitor's stock status to time your own listing or pricing around their availability gaps.
FAQ
How fast will I know when an item is back in stock?
As fast as your own check interval allows — since monitor-stock runs on demand, checking every minute or two during a launch window catches a restock within that window.
Is stock monitoring free to try?
There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.
How does the API know a product is in stock?
It reads the availability signal exposed on the page itself, such as an in-stock label, a working add-to-cart button, or a visible quantity, and compares it against the previously recorded state.
Can I get notified instantly instead of polling for the result?
Yes, configure a signed webhook and it fires as soon as a comprobación detects a change in availability; a signed link valid for 24 hours is also available.
Does this work for any online store, or only major retailers?
It works on any publicly reachable product page that exposes an availability signal, not just large retailers, since the check reads the page rather than relying on a specific platform's API.
Can I monitor stock for many products at once?
Yes, each product URL is an independent asynchronous task, so bulk monitoring across a full watchlist is simply a matter of triggering monitor-stock for each one from your own scheduler.
What happens if a check fails, for example the page times out?
The task retries automatically up to three times; if it still fails, you receive a clear error rather than a false stock reading, and the failed attempt is not charged.
Is my monitored product data kept afterward?
No, results are deleted after the retention period and are never used for training — they exist only to deliver your stock comparison and webhook.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, and soon from our app, email and Telegram.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/web/monitor-stock \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/web/monitor-stock", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/monitor-stock",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/monitor-stock", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/monitor-stock", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"input": "…"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.monitor_stock",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
422 | task_failed | The task failed after 3 retries. You are never charged for it. |