Skip to main content

Firecrawl

Managed web scraping and crawling service purpose-built for LLM consumption. Converts arbitrary web pages into clean markdown or structured JSON. Available as a cloud API or self-hosted.

What it does

Firecrawl handles the full stack of web data extraction:
  • Clean HTML → markdown conversion (removes nav, ads, boilerplate)
  • JavaScript-heavy SPA rendering
  • Multi-page crawling with depth control
  • Structured data extraction via LLM + JSON schema
  • Autonomous web research (async agent mode)
  • Interactive browser sessions via CDP

MCP Integration

Firecrawl exposes an MCP server (firecrawl-mcp) with 14 tools, directly available to Claude Code and any MCP-compatible agent without custom code.
API keys: firecrawl.dev/app/api-keys

Tool Inventory

When to use which:
  • Single page → firecrawl_scrape
  • Discover site structure → firecrawl_map
  • Multi-page crawl → firecrawl_crawl
  • Web search with full page content → firecrawl_search
  • Structured data from known pages → firecrawl_extract with schema
  • Complex multi-source research, unknown URLs → firecrawl_agent (async)
  • JavaScript-heavy SPAs → firecrawl_interact or firecrawl_browser_*

Configuration

Cloud (default): FIRECRAWL_API_KEY. Self-hosted: FIRECRAWL_API_URL instead. Retry env vars: FIRECRAWL_RETRY_MAX_ATTEMPTS, FIRECRAWL_RETRY_INITIAL_DELAY, FIRECRAWL_RETRY_MAX_DELAY, FIRECRAWL_RETRY_BACKOFF_FACTOR. Default: 3 attempts, exponential backoff (1s → 2s → 4s). Credit alerts: FIRECRAWL_CREDIT_WARNING_THRESHOLD, FIRECRAWL_CREDIT_CRITICAL_THRESHOLD.

Comparison to Alternatives

Use Firecrawl when: you need clean structured data, autonomous research, or don’t want to manage browser infrastructure. Use Pydoll when: fingerprint evasion matters (scraping anti-bot-protected sites). Use Playwright MCP when: you need direct browser control for UI testing/interaction. See also ketch — stateless CLI covering scrape/crawl plus web/code/docs search in one binary; narrower per-surface than Firecrawl (no schema extraction or autonomous agent mode) but config-driven backend swap and no daemon/cloud dependency.