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.
Free, no signup. Paste any public URL and see the live diff.
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.
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.
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.
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.
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.
Fetch
Static fetch first. Auto-fallback to a headless browser, then residential proxy if the site fights back.
Extract
CSS, XPath, JSONPath, regex, full-page hash, or LLM prompt. Output is always typed fields.
Diff
Field-level comparison against the last successful run. Returns exactly which fields changed.
Predicate
Did price drop 10%? Did stock return? Did the version match a regex? Quiet unless your rule fires.
Deliver
HMAC-signed webhook, Slack, Discord, or email. 6 retries with backoff and a dead-letter queue.
Turn any page into typed fields.
Six ways to pull the exact value you care about. Output is always structured, never raw HTML.
CSS selectors
Target any element by class, id, or attribute path - the fastest way to pull a value.
Read the guide →MethodXPath
Walk the DOM tree for elements CSS can’t reach, like “the price next to In stock”.
Read the guide →MethodJSONPath
Pull a single field straight out of a JSON API response without parsing the payload.
Read the guide →MethodRegex
Match a pattern inside raw text or HTML when the markup is inconsistent.
Read the guide →MethodFull-page hash
Hash the whole rendered page to catch any change at all - no selector required.
Read the guide →Lead storyAI extraction
Describe the field in plain English and let the LLM find it when selectors break.
Read the guide →Selectors for structured pages, AI for the ones that break them, and a static fetch that escalates to a headless browser on its own. Browse all extraction guides →
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 dropCompetitor price falls 5%+
- Stock returnOut-of-stock becomes available
- Version bumpA semver field changes
- CompositeAND / OR combinations
{
"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 itemsGet 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".
Signed webhooks
HMAC-signed POST to your endpoint. 6 retries, exponential backoff, dead-letter queue.
Slack
Drop the before/after diff into any channel the moment a predicate fires.
Discord
Same field-level alert, routed to a Discord webhook for your community or team.
A plain, readable summary of what changed - no dashboard login required.
{
"monitor": "React latest release",
"fired": "field_changes",
"field": "version",
"before": "19.0.0",
"after": "19.1.0",
"at": "2026-06-25T09:31:00Z"
}Create a monitor in seconds.
Full REST API with an OpenAPI 3.1 spec. Works with any HTTP client.
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" }]
}'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.
The same job, three toolchains.
Verid is the only one that closes the loop instead of handing you the hard part.
Google Alerts watches the news.
Verid watches the page.
Google Alerts emails you when a keyword turns up in something Google indexed. It can't read a price, a version number, a stock status, or a JSON field, and there is no API to create alerts from code. Verid monitors the URL itself and POSTs a signed webhook the moment your rule is true.
How to set up an alert in 3 steps.
No feed to find, no keyword guesswork. You name the page, the field, and the rule.
- 01
Point Verid at a URL
Paste the page or JSON endpoint you want to watch and pick a check interval, from once a day on the free plan down to every 5 minutes on paid plans.
- 02
Pick the field to extract
Choose a CSS selector, XPath, JSONPath, regex, full-page hash, or an AI prompt so the monitor returns a typed field such as price, version, or availability instead of raw HTML.
- 03
Write the rule and the destination
Set a predicate such as "price drops 10%" or "version changes", then choose a signed webhook, Slack, Discord, or email. Verid stays quiet on every run where the rule is false.
Already on a change monitor? Verid picks up where they stop: Visualping and Distill diff whole pages and mail you the result, ChangeTower and Talkwalker Alerts stop at keyword mentions, IFTTT needs a feed to already exist, and the Wayback Machine only shows you what changed long after it did. See how delivery works →
What people monitor with Verid.
Real workflows the community runs on a schedule each one a copy-paste starting point.
Competitive pricing
Track competitor product pages with CSS extraction and trigger repricing the moment prices change.
Explore use case →SERP monitoring
Watch Google ranks, AI Overviews, and featured snippets for the keywords you care about.
Explore use case →Dependency releases
Watch GitHub, npm, and PyPI releases with JSONPath. Get notified before CI breaks.
Explore use case →Regulatory filings
Monitor government portals and official registers for new filings with full-page hashing.
Explore use case →Inventory restocks
Watch product pages for "In Stock" status changes using CSS selectors and regex matching.
Explore use case →API contract drift
Poll upstream APIs every 5 minutes and catch breaking schema changes before production does.
Explore use case →The question you searched,
answered in one config.
Eight of the things people ask us to watch, each with the extractor and the rule that does it. Every answer links to the full walkthrough.
How do I get notified when a website changes?
Create a monitor with the page URL, pick an extractor for the part you care about, and set a rule. Verid re-checks on your interval, diffs the result against the previous run, and notifies you only when the rule matches - not on every cookie banner or timestamp.
How do I track competitor prices automatically?
Point a CSS or XPath extractor at the price element on each competitor product page, then gate delivery on a percentage-drop predicate. The webhook carries the old and the new price, so repricing can run straight off the payload instead of a nightly scrape.
How do I check SERP rankings from a different location?
The search URL is the input, so you set hl, gl, and uule yourself and run one monitor per market. Verid renders the results page, extracts positions, titles, and AI Overview blocks, and alerts you when any of them move.
How do I set up back-in-stock alerts?
Extract the availability string with a CSS selector or regex, then fire only when that field equals your in-stock value. You hear about the restock itself and stay quiet through every unrelated edit to the product page.
How do I monitor policy or regulatory changes?
Full-page hashing catches any change on a register, tender board, or policy landing page without writing a selector first. Run it daily, deliver to email or Slack, and you get a plain summary of what moved on pages that publish without notice.
How do I get alerted when WHOIS or domain ownership changes?
Monitor a WHOIS or RDAP lookup endpoint and use JSONPath to pull registrar, nameservers, and expiry into named fields. A change predicate on any of them turns a silent transfer or expiry into a webhook you can act on.
How do I watch a price or number inside a JSON API?
Give the endpoint to a JSONPath extractor and name the fields you want. No scraper, no HTML parsing: the monitor stores the last value, compares the new one, and fires on the threshold you set for crypto, stocks, or FX rates.
How do I follow a site that has no RSS feed?
Watch the sitemap or the listing page instead. Verid extracts the current set of URLs or list items, diffs it against the last run, and sends the new entries as they appear - the feed the site never published.
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.
Learn the patterns.
Guides and deep dives on extracting, diffing, and alerting on web data.
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.
Is Verid a Google Alerts alternative?
For anything beyond keyword mentions, yes. Google Alerts only reports newly indexed news and blog results and has no public API. Verid monitors the URL you choose, extracts a named field such as price or version, and delivers a signed webhook, Slack, Discord, or email alert when your rule fires.
Do I need to write code to set up an alert?
No. You can create a monitor in the dashboard by pasting a URL, picking an extractor, and choosing a rule and a destination. The REST API and Node SDK exist for when you want to create or manage monitors programmatically.