Monitor any webpage for changes — via API.


Verid extracts the exact field you care about — price, version, stock status — then fires a webhook only when a predicate you define is true. Structured. Quiet by default.

6
Extractor methods
9
Predicate types
Retry w/ backoff
Fig. 1 — The Wire
Monitors
React latest release
active
api.github.com/repos/facebook/react/releases/latest·$.tag_name
v18.2.0
every 60m
ETH / USD price
active
api.coingecko.com/api/v3/simple/price·$.ethereum.usd
$3,198.20
every 5m
npm: typescript
active
registry.npmjs.org/typescript/latest·$.version
5.4.4
every 30m
Delivery feedlive
14:02:11React latest releasev18.2.0v19.0.0200
13:55:44ETH / USD price3,198.203,241.88200
13:41:09npm: typescript5.4.45.4.5200
Corrections as they post: the old value struck, the new value set — the webhook payload, verbatim.
The problem

Every existing approach
optimizes the wrong layer.

You don't want raw HTML. You don't want "the page changed" emails. You want a webhook when a specific value crosses a threshold you care about — and when the change is visual, a pixel diff scoped to the region you chose.

DIY scrapers

Fragile selectors, forever

You write the fetch, the parser, the scheduler, the diff, the retry, the alert. Then the site changes a class name and you maintain it on a Sunday.

No-code monitors

Whole-page noise

"The page changed" alerts trigger on cookie banners, ad rotations, and timestamps. No way to scope the check or gate it on a rule, so you stop reading them.

Scraping APIs

Half the loop

They return structured data, but you still wire up scheduling, state, diffing, and predicates yourself. The annoying part is exactly the part they skip.

Verid is the missing middle: structured extraction, durable state, field-level diff, and predicate-driven delivery in one loop. One API call away.

The loop

One pipeline. Five stages.
Zero glue code.

Every monitor runs the same loop on a schedule you set. You write the config we run the infrastructure.

01

Fetch

Static fetch first. Auto-fallback to a headless browser, then residential proxy if the site fights back.

02

Extract

CSS, XPath, JSONPath, regex, full-page hash, or LLM prompt. Output is always typed fields.

03

Diff

Field-level comparison against the last successful run. Returns exactly which fields changed.

04

Predicate

Did price drop 10%? Did stock return? Did the version match a regex? Quiet unless your rule fires.

05

Deliver

HMAC-signed webhook, Slack, Discord, or email. 6 retries with backoff and a dead-letter queue.

Alert on meaningful state, not raw change.

The reason screenshot-only tools spam you is they fire on any change. Verid only fires when the rule you wrote returns true. Combine them with AND / OR.

  • Price drop
    Competitor price falls 5%+
  • Stock return
    Out-of-stock becomes available
  • Version bump
    A semver field changes
  • Composite
    AND / OR combinations
See all 9 predicate types →
predicate.json
{
  "type": "composite",
  "operator": "AND",
  "conditions": [
    { "type": "field_decreases_by_percent",
      "field": "price", "threshold": 10 },
    { "type": "field_equals",
      "field": "availability",
      "value": "in_stock" }
  ]
}
// → fires only on price drops for in-stock items

Get the alert where your team already works.

When a predicate fires, Verid pushes the before/after diff to the channel you choose - signed, retried, and never silently dropped.

  • HMAC-signed webhooks your endpoint can verify.
  • 6 retries with exponential backoff, then a dead-letter queue.
  • Before / after diff payload, not just "something changed".
POST /your-app/hooks
{
  "monitor": "React latest release",
  "fired": "field_changes",
  "field": "version",
  "before": "19.0.0",
  "after":  "19.1.0",
  "at": "2026-06-25T09:31:00Z"
}
Every request carries an X-Verid-Signatureheader - verify it with your monitor's secret before trusting the payload.
REST API

Create a monitor in seconds.

Full REST API with an OpenAPI 3.1 spec. Works with any HTTP client.

POST /v1/monitors
curl -X POST https://api.verid.dev/v1/monitors \
  -H "Authorization: Bearer vrd_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "React latest release",
    "url": "https://api.github.com/repos/facebook/react/releases/latest",
    "schedule_interval_seconds": 3600,
    "extract_config": {
      "method": "json_path",
      "fields": { "version": "$.tag_name" }
    },
    "diff_predicate": { "type": "field_changes", "field": "version" },
    "deliveries": [{ "type": "webhook", "url": "https://your-app.com/hooks" }]
  }'
Built for developers

Everything else the loop needs,
already wired.

Fetching, state, signing, retries, and templates the infrastructure you'd otherwise build and babysit yourself.

Three-layer fetching

Static fetch → headless browser → residential proxy. Bot-protected and JS-heavy sites escalate automatically.

REST API + Node SDK

Full REST API with an OpenAPI 3.1 spec and an official Node.js SDK. Works with any HTTP client.

Field-level diff history

Every run is compared to the last. See exactly which fields changed and their before / after values.

HMAC-signed webhooks

Each webhook is signed with your monitor’s secret so your endpoint can verify it really came from Verid.

Retries + dead-letter queue

6 automatic retries with exponential backoff. Anything that still fails lands in a dead-letter queue, never silently dropped.

Ready-made templates

Start in seconds with templates for GitHub releases, npm packages, CoinGecko prices, and more.

How Verid compares

The same job, three toolchains.

Verid is the only one that closes the loop instead of handing you the hard part.

Capability
DIY scraper
Screenshot-only tools
Verid
Structured field extraction
Yes (you write it)
Pixel diffs only
Yes 6 methods
Predicate-based alerting
You write it
No
8 predicates + composites
Field-level diff history
You store it
Image diffs only
Per-field before / after
Visual screenshot diff
You build capture + pixel compare
Whole page only
Region-scoped pixel diff
Bot / JS-heavy sites
You add a headless browser + proxies
Limited
Auto-escalates static → browser → proxy
Signed webhook delivery
You write retries
Email / Slack only
HMAC + 6× backoff + DLQ
Time to first alert
Days
Minutes (then noise)
Minutes (and quiet)
Pricing

Start free. Upgrade when you outgrow it.

A permanent free plan with a real monthly budget - no credit card, no time limit. Paid plans add frequency, monitors, history, and proxy bandwidth.

Free
$0
5 monitors
Daily checks (24h minimum)
14-day history
1 delivery endpoint per monitor
Starter
$19 /mo
50 monitors
Hourly checks (1h minimum)
180-day history
3 delivery endpoints per monitor
Editor's Pick
Pro
$49 /mo
250 monitors
15-minute checks
365-day history
10 delivery endpoints per monitor
Scale
$149 /mo
1,500 monitors
5-minute checks
2-year history
25 delivery endpoints per monitor

Frequent questions

Short answers to what people ask before they sign up.

Does Verid handle JavaScript-rendered pages?

Yes. Static fetch runs first; if extraction returns empty fields, the job automatically retries with a headless browser. Bot-protected sites fall through to a residential proxy.

What happens when a site changes its HTML?

If your CSS or XPath selector breaks, the LLM extractor is a fallback you can switch to with a config change describe the field in natural language and re-run. No code deploy.

How is this different from Browserless, Apify, or ScrapingBee?

Those return HTML. You still have to schedule, diff, store state, and define alert rules yourself. Verid is the whole loop in one API call you write the predicate, we run the rest.

How do you avoid alert noise on dynamic pages?

Predicates. Verid only fires deliveries when the rule you defined returns true price dropped 10%, version field changed, stock string matches a regex. Other byte-level changes are ignored.

Is the webhook signed?

Yes. Every webhook is signed with an HMAC using your monitor’s secret. We retry up to 6 times with exponential backoff and dead-letter anything that still fails.

Get started

Start monitoring for free.

5 monitors, the full extraction loop, signed webhooks no credit card, no time limit.