Firecrawl

4.21.0 · active · verified Fri Mar 27

Web scraping API for LLMs — converts any website to clean markdown. Current version is 4.21.0 (Mar 2026). Two separate PyPI packages: firecrawl-py (official SDK) and firecrawl (different package). Class renamed from FirecrawlApp to Firecrawl in v2. Method names changed: scrape_url() → scrape(), crawl_url() → crawl(). Extreme API churn — 0.x to 4.x in one year.

Warnings

Install

Imports

Quickstart

v2+ API. scrape() for single URLs, crawl() blocks until done, start_crawl() for async.

from firecrawl import Firecrawl
from firecrawl.types import ScrapeOptions
import os

# API key from env or direct
firecrawl = Firecrawl(api_key=os.environ.get('FIRECRAWL_API_KEY'))

# Scrape single URL → markdown
result = firecrawl.scrape(
    'https://docs.firecrawl.dev',
    formats=['markdown', 'html']
)
print(result.markdown[:500])
print(result.metadata.title)

# Crawl entire site (blocking, auto-polls)
crawl = firecrawl.crawl(
    'https://docs.firecrawl.dev',
    limit=50,
    scrape_options=ScrapeOptions(formats=['markdown']),
    poll_interval=5
)
for doc in crawl.data:
    print(doc.metadata.source_url, len(doc.markdown or ''))

# Async crawl (non-blocking)
job = firecrawl.start_crawl(
    'https://docs.firecrawl.dev',
    limit=50
)
status = firecrawl.get_crawl_status(job.id)

view raw JSON →