Track competitor prices
without your scraper breaking.

An AI-powered, self-healing web scraper for e-commerce price & stock monitoring. When a site changes its layout, Crawlr repairs its own selectors — so your monitoring never silently dies.

Get started
crawlr — zsh
$ crawlr watch "https://store.example/product/123" --target 25
Watching site #1 (trigger=price_below, target $25, every 60m)

$ crawlr watchlist
 ID  Product              Current  Was    Change   Stock  Status
 1   Wireless Headphones  $219     $249   ▼ 12%   yes    price dropped

Who it's for

If you need to know when something on the web changes, Crawlr is for you.

Competitor price intelligence

Track rivals' prices across many products and react before they undercut you.

Deal & price-drop alerts

Get pinged the moment a product hits your target price.

Back-in-stock monitoring

Never miss a restock on hard-to-get items.

Jobs, real-estate & news

Bundled presets track listings and headlines — or add your own vertical.

Everything you need to monitor a market

Built for continuous, hands-off competitor monitoring.

Self-healing selectors

Detects breakage after a redesign and regenerates selectors automatically — no maintenance.

$

Price & stock tracking

Watch any product's price and availability, with full history and change detection.

!

Flexible alert triggers

Alert on any change, price drops, a target price, or back-in-stock — your choice, per watch.

Rules template

Describe what happens in different circumstances in one editable crawlr.rules.yaml.

Any site, no code

Ships with e-commerce schemas; add new verticals (jobs, real estate) as simple YAML.

Alerts anywhere

Webhook, Slack, and email notifications when something you care about changes.

Runs free & offline

Works with zero API keys via the heuristic engine. Add an OpenAI key only if you want.

Anti-bot resilience

Proxy rotation, robots.txt compliance, request jitter, and JS rendering when needed.

Scales quietly

Concurrent monitoring, a built-in scheduler daemon, and SQLite or Postgres storage.

Why not just pipe pages to an LLM?

Crawlr uses the model only to generate & repair selectors — then extracts deterministically.

 Pipe every page to an LLMCrawlr
Cost per pageLLM call every time✓ once per site, then free
SpeedSlow (model latency)✓ deterministic & fast
Consistent outputNon-deterministic✓ stable selectors
Survives redesignsRe-prompts, re-pays✓ self-heals automatically
Runs offlineNeeds an API key✓ free heuristic mode

Under the hood

A layered pipeline where every stage cross-checks the next — for accuracy and stability.

  1. 01

    Fetch

    Static → auto JS, proxy rotation, robots.txt, request jitter.

  2. 02

    Structured data

    JSON-LD, microdata & OpenGraph — the reliable, redesign-proof source.

  3. 03

    Selectors

    Cached CSS selectors with self-healing regeneration on breakage.

  4. 04

    Consensus

    Merge sources, resolve disagreements, and score per-field confidence.

  5. 05

    Validate

    Types, required fields, and a plausibility guard against bad data.

  6. 06

    Alert

    Only real, meaningful changes reach you — via your chosen trigger.

How to use it

Up and running in under a minute — no API key required.

1

Install

Install in one line with pipx (or pip) — no clone needed.

2

Watch a product

Point Crawlr at a product URL and set an optional target price.

3

Let it monitor

Run the scheduler and get alerted when the price or stock changes.

bash
# 1 — install (one line, no clone needed)
pipx install crawlr

# 2 — watch a product's price and stock
crawlr watch "https://store.example/product/123" --target 25

# 3 — see your watchlist and keep monitoring
crawlr watchlist
crawlr monitor --daemon

Use it as a service

Run the built-in JSON API and drive Crawlr from any app or language.

bash
# start the API (protect it with a key)
CRAWLR_API_KEY=secret crawlr serve --host 0.0.0.0 --port 8000

# watch a product from anywhere
curl -X POST http://localhost:8000/api/watch \
  -H "X-API-Key: secret" \
  -d '{"url":"https://store.example/p/1","trigger":"price_below","target_price":25}'

Built-in schemas: productproduct_list jobsreal_estate news+ custom YAML

FAQ

The quick answers. Full details in the docs.

Do I need an API key?

No. Crawlr runs fully offline using a free heuristic selector engine. An OpenAI or Anthropic key is optional and only improves accuracy on unusual layouts — and even then the model runs once per site, so cost is tiny.

What happens when a site changes its layout?

Crawlr detects when its cached selectors stop matching and automatically regenerates them — so your monitoring keeps working instead of silently breaking.

How do I get alerted?

Choose a trigger per watch — any change, price drop, a target price, or back-in-stock — and connect a webhook, Slack, or email. For richer logic, edit a single crawlr.rules.yaml.

Can it scrape sites other than shops?

Yes. The engine is general-purpose; add new verticals (jobs, real estate, leads) as plain YAML schemas — no code.

Is it legal to use?

Crawlr honors robots.txt by default. You're responsible for respecting each site's terms of service — point it at sites you're allowed to monitor.

Start monitoring in one command.

Free, offline, and self-healing. Install it and watch your first product in under a minute.