All skills
firecrawl avatar

/firecrawl-monitor

@06e2fd5 official
by firecrawlfirecrawl/cli643 stars
110

Alert by webhook/email on web changes — use for "monitor/watch/track/alert me when": recurring checks on known URLs (prefer over repeated one-off scrapes) or web-wide watches for new results (queries + goal).

Use this Skill: https://skilld.dev/gh/firecrawl/cli/firecrawl-monitor

This session only. Nothing lands on disk.

SKILL.md

≈57 tokens always: the name and description. ≈1.3k when used: this file. ≈1.8k more on demand in 2 files.

firecrawl monitor

Detect when content on a website changes and get notified by webhook or email. Firecrawl handles fetching, diffing, judging, and notifying server-side. Each page in a check is labeled same, new, changed, removed, or error.

Pick a target mode by what you're watching:

Mode Flags Watches
Single page --page <url> one URL, for changes
URL batch --scrape-urls <url,url,...> several URLs, for changes
Whole site --crawl-url <root-url> every page a crawl discovers, for changes
Web search --queries <q,...> + --goal the whole web, for new results matching the goal

The first three watch URLs you already have. Web search runs your queries each check and alerts on results it hasn't seen before (labeled new once, same on later checks); --goal is required with --queries.

Quick start

# Single page, natural-language schedule, email alert
firecrawl monitor create --name "Blog" --schedule "every 30 minutes" \
  --goal "Alert when a new blog post is published." \
  --page https://example.com/blog \
  --email alerts@example.com

# Web monitor — search the whole web for NEW results matching a goal
firecrawl monitor create --name "Competitor launches" --schedule "daily at 9:00" \
  --queries "competitor product launch,competitor funding round" \
  --goal "Alert when a competitor announces a new product or raises funding." \
  --search-window 7d --max-results 20 \
  --email alerts@example.com

# Webhook notifications
firecrawl monitor create --name "Docs webhook" --schedule "every 30 minutes" \
  --goal "Alert when docs content changes." \
  --page https://example.com/docs \
  --webhook-url https://example.com/hook \
  --webhook-events monitor.page,monitor.check.completed

# Manage and inspect
firecrawl monitor list --limit 20
firecrawl monitor get <monitorId>
firecrawl monitor run <monitorId>             # trigger a check now
firecrawl monitor checks <monitorId>          # list all checks
firecrawl monitor check <monitorId> <checkId> --page-status changed
firecrawl monitor update <monitorId> --state paused
firecrawl monitor delete <monitorId>

Subcommands: create | list | get | update | delete | run | checks | check. Run firecrawl monitor <subcommand> --help for the full option list.

Done when: create returns a monitor ID and a smoke-test run + check confirms the expected target, state, and notification configuration.

Read goals.md when writing or refining --goal (and --queries for web monitors). Read json-tracking.md when the user cares about specific structured fields (price, headline, stock flag) and wants per-field diffs.

Constraints & tips

  • Each check uses credits for its underlying scrape, crawl, or search, plus optional judging. See Monitoring pricing.
  • Minimum schedule interval is 5 minutes. Monitoring is not available for zero-data-retention teams.
  • Prefer one monitor over repeated one-off scrapes whenever the user wants the same URL checked more than once.
  • Silence temporarily with update --state paused; reserve delete for monitors that are permanently done. (--state is an update flag; --status is the global CLI status flag.)
  • Filter check pages with --page-status changed (or new, removed, error) to skip the noise from same pages.
  • firecrawl monitor run <id> triggers a check immediately — useful for smoke-testing a monitor right after creating it.
  • --retention-days controls how long snapshots are kept for diffing. Lower it for high-frequency monitors to save storage.
  • External email recipients must opt in. First time they're added, Firecrawl sends a confirmation email and they only receive alerts after they confirm. Team-owned addresses are auto-confirmed. Once a recipient unsubscribes, they must be re-added by the owner for a fresh confirmation email.
  • On HTTP 429 / rate-limit errors, back off once: wait ~30s and retry once. If it persists, stop, report the rate limit as the blocking reason, and delete any monitors created for this task. Never retry in a loop.
  • Monitor-triggered scrapes default maxAge to 0 — every check performs a fresh scrape unless scrapeOptions.maxAge is set explicitly in a JSON payload.

See also

Source: SKILL.md on GitHub

1 warning28d3 checks · Risk SAFE
  • Gen Agent Trust Hub28d

    This skill facilitates automated website monitoring and change detection through the Firecrawl service. It allows for the configuration of recurring web scrapes or searches with notifications delivered via webhook or email. The primary security consideration is the inherent risk of indirect prompt injection, as the tool processes and analyzes untrusted content from the public web.

  • Socket28d

    No alerts

  • Snyk28d

    Risk: MEDIUM · 1 issue

Signed by skilld at 06e2fd5. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 14 hours ago.

Activeupdated last month
What it can do
Runs commands
All 2 allowed tools
Bash(firecrawl *)Bash(npx firecrawl-cli *)
  • firecrawl
  • monitoring
  • web-scraping
  • change-detection
  • webhooks
  • notifications
  • pricing-tracking
  • content-monitoring

README badge

README badge for firecrawl/cli/firecrawl-monitor

Monitors website content for changes and sends notifications via webhook or email, with AI-powered filtering to ignore formatting and tracking noise. Use this for tracking pricing changes, new job postings, docs updates, competitor sites, or any URL where you need alerts when content actually changes rather than repeated manual checks.

Generated from the current SKILL.md.

Does this work with webhook notifications or just email?
Both. Use `--webhook-url` with `--webhook-events monitor.page,monitor.check.completed` for webhooks, or `--email` for email summaries. Webhooks fire as each page finishes and after the full check is reconciled.
What's the minimum check interval?
15 minutes. Schedules can be natural-language (`every 30 minutes`, `hourly`, `daily`) or cron expressions.
How does the AI change judge decide whether a page actually changed?
You set a `--goal` in plain language (e.g. 'Alert when pricing changes'). The judge ignores formatting, whitespace, timestamps, tracking params, and unrelated page chrome, firing notifications only on substantive content changes matching your goal.
Can I monitor multiple pages in one monitor?
Yes. Use `--scrape-urls` for a comma-separated list, or `--crawl-url` to monitor every page discovered on a site. Each page in a check gets labeled `same`, `new`, `changed`, `removed`, or `error`.
Does this support structured per-field diffs instead of markdown diffs?
Yes, via JSON-mode change tracking. Pass a JSON body with a schema and extraction prompt to `monitor create`, and you'll get keyed diffs like `plans[0].price: '$19/mo' → '$24/mo'` instead of unified diff.

Generated from the current SKILL.md. These answers refresh after source changes.