webscrape.dev

Recurring Price and Content Monitoring Without Writing a Crawler

How to stand up scheduled change tracking with no-code tools: run cadence, diffing, alert routing, and the point where it needs real infrastructure.

Nathan Kessler
Nathan Kessler··Reviewed
13 min read

Each tool referenced is evaluated against our methodology using public docs, vendor demos, and hands-on testing.

A marketplace listing under an automated repricer can change price several times an hour. Point a standard hourly monitor at it and you are not tracking the price, you are sampling it, and the number in your dashboard is one of several that were true that hour. Nothing about that problem is a scraping problem.

A monitoring build has five distinct parts, and no-code projects usually fail on one of them rather than on the extraction: a stable item key, a diff worth trusting, a cadence matched to the source, alert routing that stays quiet during cosmetic edits, and a history store that can answer a question about last quarter.

Each part below, in order, with the no-code scrapers that handle it and the point where the whole pattern stops working. This assumes nobody on the team wants to write a crawler. Teams with engineers who would rather own the crawl loop should start at choosing a web scraping tool instead.

Start with the item key, not the scraper

If the thing being watched cannot be named, it cannot be diffed. That sounds obvious and gets skipped constantly, because the first monitor anyone builds uses the URL as the key, and a URL holds up until the site reorganizes.

Retail URLs carry session tokens, tracking parameters, variant identifiers and locale prefixes. The same product sits at three addresses. A category redesign moves all three. When that happens, a URL-keyed monitor reports one deleted product and one new product rather than a price change, and the history splits into fragments that no query can rejoin.

Use a merchant identifier instead: SKU, ASIN, GTIN, MPN, whatever the site exposes. Where the site exposes nothing, compose a key from fields that do not move, such as brand, model and pack size, and accept that a fraction will need hand correction.

This is where managed tiers earn their price. Import.io sells the matching as product. Its Aperture page states that "Aperture matches equivalent products across retailer sites, even when titles, pack sizes, images, descriptions, or identifiers vary", alongside MAP comparison and assortment tracking (import.io/aperture, read 27 July 2026). Mozenda, running since 2007, sells a managed data tier where its own staff build and operate the agents. For a large, dirty catalog, buying the matching usually beats building it.

Both are wrong for the opposite case. Three hundred products with clean MPNs already sitting in an ERP do not need AI matching, and paying enterprise rates for it is waste.

A monitored page and a monitored field are different products

Most false alerts trace back to this one choice, made when the tool is picked. No amount of threshold tuning fixes it afterwards.

A page-level monitor hashes or screenshots a rendering and reports that the rendering changed. It fires on cookie banners, rotating hero images, "12 people are viewing this" counters, review counts, recommendation carousels, ad slots, injected timestamps and A/B variants. On a busy retail page, a meaningful share of runs will differ from the previous run for reasons nobody would act on.

A field-level monitor watches one named value, such as price or stock status, and stays silent until that value moves.

Browse AI makes the split visible in its own product. Its site describes scheduling robots to "run hourly, daily, weekly, or monthly to check for changes" and lets users "configure change detection and alerts based on the size of the change" (browse.ai, read 27 July 2026). Change-size sensitivity is a sensible control for a page-level watcher and a poor substitute for a field comparison, because a percentage threshold on a rendering is a statement about pixels, not about price.

The two work better combined than chosen between. A cheap page-level watcher runs often and does one job: decide whether the expensive field extraction is worth running at all. Hexomatic fits that shape, since its value is breadth across a large recipe library and chained automations rather than a precise diff engine. It is worth checking the bill before committing, though. Hexomatic's pricing page separates the base plan from a premium credit add-on covering the higher-cost data sources, including residential proxies and marketplace data (hexomatic.com/pricing, read 27 July 2026), so the sticker plan is not the real cost once those sources are in regular use.

Hexomatic is wrong for a team that needs a small number of high-reliability feeds. Breadth is what it sells; depth on a single feed is somebody else's product.

The rule that follows: page monitors for discovery, on pages nobody extracts from yet. Field monitors for anything that sends an alert.

Cadence: match the interval to the source

There is no correct global interval, because change frequency varies by orders of magnitude across sources. A marketplace listing under an automated repricer and a distributor publishing a quarterly price list are not the same monitoring problem, and no default setting can serve both.

Sample before scheduling. Run the target every fifteen minutes for two or three days, count distinct values, and set the interval from what was observed. Then accept the consequence honestly. On a fast-repricing marketplace an hourly monitor reports the price at 09:00 and the price at 10:00, not the path between them.

Published floors matter here, because they set the ceiling on what any of this can do. Browse AI's pricing page lists minimum monitoring frequency by tier: hourly on Free and Personal, five minutes on Professional, custom on Premium (browse.ai/pricing, read 27 July 2026). A five-minute floor is a plan decision, not a technical one, and it is worth confirming against the tier actually being bought rather than the tier in the marketing copy.

Apify publishes an exact number and the failure mode with it. Its scheduling documentation states that "The minimum interval between runs is 10 seconds; if your next run is scheduled sooner than 10 seconds after the previous run, the next run will be skipped", uses six-field cron expressions covering seconds through day of week, and supports timezones with daylight saving shifts. The same page admits that "runs can be delayed because of a system overload or a server shutting down" (docs.apify.com, read 27 July 2026). Worth knowing, since a monitor that assumes exact firing will eventually record a gap as a flat price.

Cron also buys jitter for free. Stagger minute offsets across schedules so several hundred monitors do not all strike one domain on the hour, which is both politer and less likely to trip a rate limiter.

Roborabbit describes browser automations that "can be scheduled or triggered by events" and routes results through a REST API, Zapier and Custom Feeds (roborabbit.com, read 27 July 2026). It publishes no interval floor on that page, so the cadence question has to be settled on a trial account. Roborabbit is worth naming for a different reason too: it is a small vendor with little independent coverage, which is fine for a weekly competitor sweep and a real concentration risk for a feed the business depends on.

Apify is wrong for the opposite reader. A 10-second cron floor means nothing to a team where nobody writes cron expressions, and the platform assumes comfort with actors, datasets and webhooks.

The diff, and why it fires when it should not

Normalize before comparing. The cheap wins, in rough order of how many false alerts they remove:

Strip currency symbols and thousands separators and compare numbers rather than strings, so $1,299.00 and $1299 stop reading as different prices. Fix a decimal precision and round to it. Lowercase and collapse whitespace on text fields. Drop query parameters when the key derives from a URL. Sort any list before comparing it, because plenty of sites shuffle variant order per request.

Then the one that matters most: treat a missing value as missing, not as a change. A large share of bad price alerts are extraction failures wearing a costume. A blocked request, a consent interstitial, or a lazy-loaded price node that did not resolve before capture, and the monitor reports a 100 percent drop. Add a required-fields check so any run returning a null price is recorded as a failed run and never enters the diff.

This is also where blocking and monitoring meet. A monitor that starts producing nulls on one domain and not others is usually reporting an anti-bot system doing its job, not a broken selector, and why scrapers get blocked is the better place to start debugging than the diff logic.

Two more controls earn their keep. Suppress the first alert after a template change, because a redesign moves every selector at once and produces a wall of simultaneous "changes". And add a hold-down: require two consecutive runs to agree on the new value before the alert ships. A hold-down costs one interval of latency and removes most transient noise.

Kadoa sells this entire layer as the product rather than as settings. Its site describes self-healing workflows, stating that "When a workflow breaks, Kadoa detects it and fixes the code automatically", and source-grounded outputs where "Every value is source-grounded and audit-ready. Trace any data point to see the exact page, paragraph, or cell it came from" (kadoa.com, read 27 July 2026). Provenance at that granularity is genuinely rare in this category and is the reason to look at it. The customer testimonials on the same page, including an 80 percent reduction in scraper maintenance time, are vendor-published claims with no method attached and should be read as marketing.

Kadoa is wrong for anyone who wants to start this afternoon on a credit card. It sits in AI extraction and sells to finance. Its pricing page shows a consumption-based Flex tier for small teams and a contact-sales Enterprise tier, with real-time monitors listed as an Enterprise feature and no numbers published anywhere (kadoa.com/pricing, read 27 July 2026).

Alert routing: severity, thresholds, dedup

Route by severity, not by event. Three tiers cover almost everything. A daily digest for the long tail. A team channel for changes on watched items. A direct page for the small set of changes that cost money, such as a MAP violation or an own listing going out of stock.

Set thresholds as a pair, absolute and relative, joined by AND. Alert when a price moves more than 2 percent and, at the same time, more than one unit of currency. The relative half suppresses rounding noise on expensive items; the absolute half suppresses penny churn on cheap ones. A single relative threshold will page someone at 3am because a $4 accessory moved by 12 cents.

Deduplicate on the item key and the day, not on the event. A repricer that oscillates a product between two values eleven times before lunch should produce one message saying so, not eleven messages.

Then check the plumbing, because the integration tier often sets the real latency. Browse AI routes through email, a REST API, webhooks, and Zapier, Make and Pabbly. Roborabbit routes through its REST API, Zapier and Custom Feeds. Apify routes through webhooks and its API. Kadoa sends real-time updates via Slack, email or webhooks. Anything passing through Zapier needs a look at the plan first: Zapier's pricing page puts Webhooks by Zapier on Professional and above, and lists trigger polling at 15 minutes on Free, 2 minutes on Professional and 1 minute on Team and Enterprise (zapier.com/pricing, read 27 July 2026). A five-minute monitor behind a fifteen-minute poll is a fifteen-minute monitor. Prefer a direct webhook into something you control wherever the tool offers one.

Where the history lives

Alerts are not history. A Slack channel cannot answer what a product cost in the second week of May, and neither can a tool that keeps only the current value plus a change log.

Every tool here can export. Browse AI writes CSV and JSON, syncs to Google Sheets and Airtable, pushes to S3 and exposes a REST API. Apify stores results in datasets and key-value stores that export as JSON, CSV or Excel. Kadoa pushes to S3, Snowflake and BigQuery. Mozenda's site states that customers "Export directly to TSV, CSV, XML, XLSX or JSON through our API" (mozenda.com, read 27 July 2026). Treat all of these as a staging area rather than as the warehouse.

The store itself wants one shape: an append-only observation table, roughly item_key, source_url, field, value, observed_at, run_id, status. Never update a row in place. Write an observation on every run, including runs where nothing changed and runs that failed. A change-only log cannot distinguish a value that held steady from a check that never happened, and that distinction is exactly what gets asked for when the feed misses a competitor promotion.

Google Sheets is a legitimate store for a small monitor and stops being one somewhere in the low hundreds of thousands of rows. Past that, any managed Postgres will do. A few thousand SKUs checked daily does not need a warehouse. A few thousand SKUs checked hourly for a year is tens of millions of rows and does.

How the tools compare on the monitoring build

ToolSchedulingWhat it diffsAlert routingWrong for
Browse AIHourly, daily, weekly, monthly; minimum monitoring frequency hourly on Free and Personal, 5 minutes on ProfessionalExtracted fields, plus change detection tuned by size of changeEmail, webhooks, REST API, Zapier, Make, PabblyExtraction logic the visual trainer cannot express; any self-hosted requirement
HexomaticScheduled workflows across a large prebuilt recipe libraryWhatever the workflow extracts; no dedicated diff engineWorkflow steps and notification channelsTeams wanting a few high-reliability feeds; premium sources sit behind a separate credit add-on
RoborabbitSchedules and event triggers; no interval floor published on the siteWhatever the task extractsREST API, Zapier, Custom FeedsBusiness-critical feeds where vendor track record matters; little independent coverage
ApifySix-field cron, documented 10-second minimum between runs, timezone and DST awareNothing built in; you diff the dataset yourselfWebhooks, API, integrationsNon-technical teams; there is no point-and-click monitor
KadoaReal-time monitors listed as an Enterprise featureStructured fields with source grounding and self-healing pipelinesSlack, email, webhooks; SDKs, REST, MCPSelf-serve buyers; no published prices, sales-led motion
Import.ioRecurring refresh on a regular schedule; no interval publishedNormalized retail fields with AI product matching across variant titles and pack sizesDashboards, alerts, APIs, exports, BI integrationsSmall catalogs and small budgets
MozendaAgent-based recurring runsWhatever the agent harvestsAPI export in five formatsDeveloper teams; it targets business users
Dexi.ioRobot-based collection; no scheduling detail published on its siteRetail price, promotion and assortment fieldsPublishing and delivery stepsBuyers wanting an independent product; its support docs are hosted at help.mozenda.com and Mozenda's own site carries a dexi.io sales address, so treat it as one commercial line

The table is uneven because the products are. Some of these are monitoring tools with scraping attached; the rest are scraping tools with a scheduler bolted on. Knowing which one is on the invoice prevents most of the disappointment. The credit-metering question that runs underneath all of them is covered in scraping API credit pricing, and the broader ceiling on this category is covered in no-code scraper limits.

When it stops being a no-code problem

No vendor will tell you where its own tool stops working, so here are five signals. Any two of them arriving together mean the pattern has been outgrown.

The job has shifted from re-checking a known list to finding new items in a category. That is a crawl with frontier management, not a set of monitors.

Block profiles have diverged. One domain wants residential exit nodes, another rate-limits by ASN, a third serves a consent wall in the EU only. Once handling differs per domain, someone is operating a proxy layer, and that belongs with proxy networks rather than inside a visual builder.

Metered run cost has passed plain request cost. Credit pricing charges for a run whether or not anything changed, so when 95 percent of runs find nothing, the bill is mostly buying null results. A crawler can use conditional requests and cheap pre-checks to skip most of that work.

Runs need priorities. Hot items hourly, cold items weekly, all sharing one request budget per domain, with backoff when a domain starts returning challenges. Independent schedules cannot express a shared budget. A queue can.

Sources need reconciling. The same product on five retailers has to resolve to one canonical row per day, and no monitoring tool will do that modeling.

Crossing that line does not mean abandoning everything. Keep the extraction where it works, move scheduling and dedup into an orchestrator you control, and buy the fetching layer from a web scraping API or run a crawling framework directly.

Apify is the natural intermediate stop. Keep the hosted actors and the marketplace, take the cron scheduler and the webhooks, and write the diff and the history store yourself. Teams often sit there for a year before deciding whether to go further.

Bottom line

The scrape is the easy part of this. Everything expensive happens after the value comes back, and every one of those decisions gets made before a vendor is picked.

Start with a field monitor on a stable key at an interval that was measured rather than guessed. Add normalization and a hold-down before adding targets. Write every observation, including the boring ones, into a store you own. Browse AI, Hexomatic and Roborabbit will carry that shape for a few thousand items. Import.io and Mozenda will do the catalog matching when the identifiers are messy. Apify and Kadoa sit at the harder end for different reasons. And when discovery, blocking and queueing all show up in the same quarter, stop tuning the no-code tool and build the crawler, because by then someone is already operating one without the controls.

Frequently asked

How often should I re-check a product page for price changes?
Measure the source before scheduling against it. Run the target every fifteen minutes for two or three days, count how many distinct values appeared, and set the interval just under the observed rate of change. Marketplace listings driven by automated repricers move faster than most budgets can sample, so an hourly check there is a sampling instrument rather than full coverage, and any lowest-price metric built on it should say so. Brand-owned stores and distributor price lists usually settle at daily. Terms, shipping and policy pages change monthly at most.
How do I avoid false alerts from cosmetic page changes?
Stop diffing the page. A screenshot or full-text comparison fires on cookie banners, rotating hero images, review counts, recommendation carousels and A/B variants, none of which are actionable. Extract the named field and compare that value instead. Normalize before comparing: strip currency symbols and separators, compare numbers rather than strings, and collapse whitespace on text. Then add a hold-down so two consecutive runs must agree before an alert leaves the system, and record a missing value as a failed run rather than as a change.
Can no-code monitoring track thousands of SKUs?
A few thousand, usually yes. Tens of thousands across many domains, usually not well. The binding constraint is rarely the URL count. It is metered runs against a low hit rate, since a run costs the same whether or not the value moved, and Browse AI's pricing page notes that harder sites consume more credits per run than easy ones. Above that, per-domain block behavior starts to diverge and a visual builder cannot express priority queueing against a shared politeness budget.
Where should monitoring history be stored?
Somewhere you own, in an append-only table keyed by item, field and observation time. The tool's dataset is a staging area. Browse AI exports CSV and JSON and syncs to Google Sheets, Airtable and S3; Apify keeps datasets and key-value stores; Kadoa pushes to S3, Snowflake and BigQuery; Mozenda exports TSV, CSV, XML, XLSX and JSON through its API. Write an observation on every run, including the ones where nothing changed, because a change-only log cannot distinguish a flat price from a check that never ran.
When does change monitoring need a real crawler?
When the job shifts from re-checking a known list to discovering new items, when per-domain blocking forces you to manage proxies and sessions directly, or when metered runs cost more than plain requests would. The clearest signal is queueing. Once hot items need hourly checks, cold items need weekly checks, and both must share one request budget per domain with backoff on challenges, independent schedules cannot express that. Move scheduling and dedup into your own orchestrator and buy the fetching from a scraping API.

Weekly briefing – tool launches, legal shifts, market data.