Cloud Health Check
Know when a site change breaks a template, before your next run. Checks run in the cloud, so your browser can stay closed.
What a health check does
A check opens the template's page, tries every field, and reports how each one did.
- Each field is marked working or broken, with the value it found.
- The result is kept as history, so you can see when a field first broke.
- Broken fields can be repaired automatically or after your review (see below).
Checks count against your plan's monthly cloud health checks. See Plans & Credits.
Run a check and schedule checks
Both are done from your templates list in the web console.
Check now
Open Dashboard → Templates, pick a template, and click Check now. The result lists every field with its status and current value.
Template health result
Replace with actual extension screenshot
Schedule it
Turn on the schedule for a template to check it automatically. The default is once a day, at 08:00 in your device's time. You can change how often it runs.
Template schedule
Replace with actual extension screenshot
Auto-repair
When a check finds broken fields, ScraperQ can propose new selectors and apply them.
- Manual repair (default): repairs wait for your review. You see the old and new values and accept or reject them.
- Auto repair: confident repairs are applied for you, and you get an email summary of what changed.
Templates built without AI
REST API
Run health checks from your own scripts, CI, or monitoring.
Create an API key
Open Dashboard → API keys, create a key, and copy it. The key is shown once, so store it somewhere safe. Revoke a key at any time from the same page.
Send it in the X-Api-Key header
The base address is https://api.scraperq.com/api/v1. The template's ID is the last part of its page address in the console.
Run a check and wait for the result
GET /cloud/health-checks/templates/{templateId}/check-now starts a check and returns the full summary when it finishes. Options: timeoutSeconds (5 to 300, default 180; the response says so if it timed out), runAutoRepair (true or false) and approvalMode (auto or manual).
curl "https://api.scraperq.com/api/v1/cloud/health-checks/templates/<TEMPLATE_ID>/check-now?timeoutSeconds=180" \ -H "X-Api-Key: <YOUR_API_KEY>"
Start a check without waiting
POST /cloud/health-checks/templates/{templateId}/probe-now queues a check and returns at once. Use a webhook to learn the result.
curl -X POST "https://api.scraperq.com/api/v1/cloud/health-checks/templates/<TEMPLATE_ID>/probe-now" \
-H "X-Api-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "runAutoRepair": true, "approvalMode": "Manual" }'Webhooks
ScraperQ calls your URL when something happens, so you do not have to poll.
Add a webhook under Dashboard → Channels: give it your URL and pick the events you want. Use the test button to send a sample.
| Event | Sent when |
|---|---|
| JobCompleted | A cloud job finishes successfully. |
| JobFailed | A cloud job fails or is cancelled. |
| BatchReceived | A batch of scraped rows arrives. |
| HealthDegraded | A health check finds that a template's fields have degraded. |
What you receive
Each delivery is a POST with these headers: X-ScraperQ-Event (the event name), X-ScraperQ-Delivery (a unique ID) and X-ScraperQ-Signature.
Verify the signature
The signature is sha256= followed by the HMAC-SHA256 of the raw request body, using your webhook's secret, in lowercase hex. Reject requests that do not match.
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody: the request body exactly as received (a string); secret: your webhook's secret
function isFromScraperQ(rawBody, signatureHeader, secret) {
const expected = "sha256=" + createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(expected);
const b = Buffer.from(signatureHeader ?? "");
return a.length === b.length && timingSafeEqual(a, b);
}