firecrawl/firecrawl · 上手攻略

  • 仓库:firecrawl/firecrawl
  • 链接:https://github.com/firecrawl/firecrawl
  • 分类:rag / trending
  • 作者:Jay
  • 更新:2026-07-08

这是什么

Firecrawl 是一个面向 AI 的网页数据 API:给定 URL,爬取并转换为 LLM 可直接使用的干净 Markdown、JSON 或截图。它能处理 JavaScript 渲染的动态页面、反爬虫机制、代理轮换等"脏活",开发者只需调用 API 或装好 SDK 即可。开源,也可以直接用其托管服务(firecrawl.dev)。Stars 147k,周增 +1911,是 RAG / Agent 场景下网页数据获取的事实标准之一。

解决什么问题:当你需要给 RAG 系统喂网页内容时,爬虫、防屏蔽、内容清洗这些事情既费时又容易出错。Firecrawl 把这些全部封装成一个 API,输出直接是 token 友好的 Markdown。


快速安装

Python SDK(推荐)

pip install firecrawl-py

Node.js SDK

npm install firecrawl

CLI

npx firecrawl-cli@latest scrape <URL>

MCP 接入(Claude Code / Cursor / Windsurf 等)

npx -y firecrawl-cli@latest init --all --browser

重启 Agent 后生效。或手动配置 MCP:

{
  "mcpServers": {
    "firecrawl-mcp": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "fc-YOUR_API_KEY"
      }
    }
  }
}

⚠️ 注意:API key 可在 firecrawl.dev/app/api-keys 免费注册,免费额度有限,生产环境建议看定价页。调用时 api_key 参数不填也能跑(极低限速),演示够用。


核心用法

from firecrawl import Firecrawl

app = Firecrawl(api_key="fc-YOUR_API_KEY")

results = app.search("best AI data tools 2024", limit=5)
# 返回列表,每项含 url / title / markdown
for r in results.data.web:
    print(r["title"], r["url"])
import { Firecrawl } from 'firecrawl';
const app = new Firecrawl({ apiKey: 'fc-YOUR_API_KEY' });
const results = await app.search('best AI data tools 2024', { limit: 5 });
curl -X POST 'https://api.firecrawl.dev/v2/search' \
  -H 'Authorization: Bearer fc-YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"query": "firecrawl", "limit": 5}'

2. Scrape — 抓取单个 URL

doc = app.scrape('https://firecrawl.dev', formats=["markdown", "html", "screenshot"])
print(doc.markdown)  # 直接是可用文本
firecrawl scrape https://firecrawl.dev --format markdown,html,links --pretty

3. Interact — 动态页面交互(点击、填表、搜索)

# 1. 先 Scrape 一个页面
result = app.scrape("https://amazon.com")
scrape_id = result.metadata.scrape_id

# 2. 在页面内执行操作
app.interact(scrape_id, prompt="Search for 'mechanical keyboard'")
app.interact(scrape_id, prompt="Click the first result")

4. Agent — 让 AI 自主搜索(无需指定 URL)

from firecrawl import Firecrawl
from pydantic import BaseModel, Field
from typing import List

app = Firecrawl(api_key="fc-YOUR_API_KEY")

class Founder(BaseModel):
    name: str = Field(description="Full name")
    role: str = Field(default=None, description="Job title")

class FoundersSchema(BaseModel):
    founders: List[Founder]

result = app.agent(
    prompt="Find the founders of Stripe",
    schema=FoundersSchema
)
print(result.data)  # 直接是结构化输出

可用 model="spark-1-pro" 切换到高级模型(费用更高但更准确)。

5. Crawl — 整站爬取

docs = app.crawl("https://docs.firecrawl.dev", limit=100, formats=["markdown"])
for doc in docs.data:
    print(doc.metadata.source_url, doc.markdown[:200])

6. Map — 发现网站所有 URL

result = app.map("https://firecrawl.dev", search="pricing")
# 返回该网站所有与 "pricing" 相关的 URL

7. Batch Scrape — 批量异步抓取

job = app.batch_scrape([
    "https://firecrawl.dev",
    "https://docs.firecrawl.dev",
    "https://firecrawl.dev/pricing"
], formats=["markdown"])

for doc in job.data:
    print(doc.metadata.source_url)

典型适用场景

场景 核心命令 说明
RAG 数据管道 app.crawl(url, limit=N) 整站内容一次性入知识库
竞品监控 app.search() + 定时任务 自动抓取竞品动态
AI Agent 网页操作 app.interact() 帮 Agent 登录、点击、填表
结构化数据提取 app.agent(prompt=, schema=) 用 Pydantic 模型直接拿 JSON
金融/新闻舆情 app.batch_scrape() 批量抓取列表页,LLM 总结

坑与注意

  1. API Key 免费额度:未填 key 也有极低限速,建议先用 playground 试通再上 key。
  2. JS 渲染页面的 Interact 有状态:每次 scrape() 会返回 scrape_id,后续 interact() 依赖这个 ID串联状态,不可跨会话混用。
  3. 反爬误伤:目标站若有强反爬机制,scrape 可能返回 403/504,此时换用 agent 模式让 AI 自主绕路。
  4. 批量抓取计费:Crawl 和 Batch 都是按成功抓取的页面数计费,不是请求数。
  5. 输出大小markdown 格式会剥离广告和导航,体积通常为原始 HTML 的 5-20%,适合 token 预算控制。
  6. 并发限制:免费层不支持高并发,有高吞吐需求建议走付费或自建服务。

与同类对比

工具 Stars JS 渲染 Agent 模式 结构化输出 定价
Firecrawl 147k ⭐ ✅ Pydantic 托管免费有限
Playwright 65k 自托管免费
ScrapingBee 付费
Apify 付费

Firecrawl 的核心优势是 LLM-ready 输出(直接 Markdown)+ Agent 模式(无需找 URL),结合 MCP 接入主流 Agent 生态,是目前 RAG + Agent 场景下最顺滑的方案。


一句话结论

Firecrawl 是 AI 时代的网页爬虫终极形态:LLM-friendly 输出 + 内置 Agent 智能导航 + MCP 一行接入——RAG 数据管道和 AI Agent 联网场景的首选。