CASE STUDY6 Min Read · 18 May 2026

HOW WE BUILT A BOT THAT TRACKS PRICE CHANGES ON AN E-COMMERCE SITE IN 15 MINUTES

YŞ
Yusuf ŞalFounder & Systems Architect
𝕏
Figure 1.1: The first prototype of the single-node DOM watcher, on the lab desk.

Our journey to a zero-maintenance price tracker built on a single DOM hash check and an instant webhook, with no heavyweight headless browsers and no SaaS dashboards costing hundreds of dollars.

The Problem: Missing Price Changes Costs Real Revenue

In retail and e-commerce, hourly and even minute-by-minute price updates move sales volume directly. In the e-commerce operation we looked at, competitors' promotions were being noticed 40 minutes late on average. And when we surveyed the price-tracking SaaS tools on the market, the picture was a familiar one:

  • Bloated cost: Licence models asking $149 a month to watch just 50 SKUs.
  • Needless weight: Clunky architectures that spin up a full headless Chrome in the background just to read a single number.
  • Late alerts: Sync loops that run every 6 hours instead of every 15 minutes.

“Watching only the relevant DOM node of the page, instead of running heavyweight browser engines, cut server costs by 98%.”

Architecture: A Single-Node DOM Watcher Instead of a Headless Browser

90% of the target sites render their product details with static SSR (Server-Side Rendering). The price tag sits at a known place in the DOM hierarchy: span.price__current-value. Rendering the whole page, fetching the images and executing the JavaScript is a pure waste of resources.

We built a micro-pipeline that downloads only the raw HTML stream (24KB of compressed data on average), parses the relevant selector and keeps a SHA-256 cryptographic digest (hash) of the resulting text in a local key-value table. The webhook fires the millisecond the hash changes.

Code: A Simple Webhook and Hash Check

price_detector.py
python 3.12
# Incapon Micro-Crawler v1.0.4
async def check_price_diff(target_url, selector, cached_hash):
    html = await fetch_lightweight(target_url)
    node = html.select_one(selector)

    if not node:
        return "Node not found"

    current_val = node.text.strip()
    element_hash = sha256(current_val.encode("utf-8")).hexdigest()

    if element_hash != cached_hash:
        await webhook.send(
            payload={"event": "price_drop", "value": current_val}
        )
        return element_hash

    return cached_hash

Cron (15 min)

Cloudflare Worker

Edge Lambda

0.08 s execution

Slack / Webhook

Instant Alert

Figure 1: The zero-latency node-watching workflow.

Unit Cost: Why Did We Spend Only $0.18?

At the heart of Incapon's craft philosophy lies unit cost transparency. If a piece of software charges you while it is not running, there is an inefficiency hiding in its architecture.

Line ItemUsageAmount
Edge Worker Invocations43,200 Requests / Month$0.00 (Free Tier)
KV Hash Store250 Records (15KB)$0.00
Outbound Bandwidth1.03 GB Total Download$0.18
TOTAL MONTHLY OPERATING BILL$0.18

Building and launching this system took exactly 15 minutes. Within the first 48 hours it caught a competitor's 20% flash sale, started at 03:00 at night, within a minute, and let the company tune its catalogue price in response.

CUSTOM SOLUTION LAB

Got a Process Like This Too?

Tell us about the tedious manual task that costs your team at least 30 minutes every day; we will design a working in-browser micro tool for it in 48 hours.

Delivered in 48 HoursZero Server LeakageFixed Price Guarantee

© 2026 Incapon Labs. Code optimised by hand.