Skip to main content
Firecrawl sends webhook events at each stage of a job’s lifecycle, so you can track progress, capture results, and handle failures in real time without polling.

Quick Reference

Payload Structure

All webhook events share this structure:

Crawl Events

crawl.started

Sent when the crawl job begins processing.

crawl.page

Sent for each page scraped. The data array contains the page content and metadata.

crawl.completed

Sent when the crawl job finishes and all pages have been processed.

Batch Scrape Events

batch_scrape.started

Sent when the batch scrape job begins processing.

batch_scrape.page

Sent for each URL scraped. The data array contains the page content and metadata.

batch_scrape.completed

Sent when all URLs in the batch have been processed.

Monitor Events

monitor.page

Sent as each monitored page scrape finishes. This event is emitted from the scrape worker path, so it arrives before the full monitor check is reconciled.
monitor.page

monitor.check.completed

Sent when a monitor check finishes. The data object contains check status and summary counts. Page-level results are only sent through monitor.page events or returned from the monitor check API.
monitor.check.completed
success is true when the check completed without page errors. For partial or failed checks, success is false and error may contain a message.

Extract Events

extract.started

Sent when the extract job begins processing.

extract.completed

Sent when extraction finishes successfully. The data array contains the extracted data and usage info.

extract.failed

Sent when extraction fails. The error field contains the failure reason.

Agent Events

agent.started

Sent when the agent job begins processing.

agent.action

Sent after each tool execution (scrape, search, etc.).
The creditsUsed value in action events is an estimate of the total credits used so far. The final accurate credit count is only available in the completed, failed, or cancelled events.

agent.completed

Sent when the agent finishes successfully. The data array contains the extracted data and total credits used.

agent.failed

Sent when the agent encounters an error. The error field contains the failure reason.

agent.cancelled

Sent when the agent job is cancelled by the user.

Event Filtering

By default, you receive all events. To subscribe to specific events only, use the events array in your webhook config:
This is useful if you only care about job completion and don’t need per-page updates.