Loading...

文章背景图

Firecrawl:面向 AI 智能体的网页检索/抓取/交互开源上下文 API|部署与使用全指南

2026-11-06
0
- 字
- 分钟
|

Firecrawl 官方 Logo

Firecrawl:面向 AI 智能体的网页检索/抓取/交互开源上下文 API|部署与使用全指南

Firecrawl 是 MendableAI(现组织名 firecrawl)开源的「把网页变成 LLM 可读上下文」的 API 服务,官方定位为 The context API for AI agents。它把搜索、单页抓取、整站爬取、URL 地图、批量抓取、浏览器内交互(点击/滚动/输入/等待)和 PDF/DOCX 解析统一在一套 HTTP 接口后面,自带代理轮换、反爬绕过、JS 渲染和 Markdown/JSON 结构化输出。除官方托管云外,核心服务按 AGPL-3.0 开源,可自托管。

1. 项目简介与定位

Firecrawl 解决的是「AI 智能体 / RAG 系统如何稳定、低 token 地拿到干净网页正文」这一问题。它不是一个给人看的爬虫框架,而是一个 HTTP API:你把 URL 交给它,它返回 Markdown、结构化 JSON、截图或提取字段。

1.1 核心信息一览

项目 内容
名称 Firecrawl
仓库 https://github.com/firecrawl/firecrawl (原始入口 MendableAI/firecrawl 已重定向至 firecrawl 组织)
定位 AI 智能体上下文 API:搜索 / 抓取 / 整站爬取 / 浏览器交互 / 文档解析
许可证 核心服务 AGPL-3.0;各语言 SDK 与部分 UI 组件 MIT
主要语言 TypeScript(Node.js)
部署方式 官方云 SaaS(api.firecrawl.dev)+ 源码自托管(Node.js + pnpm + Redis + PostgreSQL + RabbitMQ)
默认云 API 端点 https://api.firecrawl.dev
在线 Playground https://firecrawl.dev/playground

1.2 适用场景

  • 给 LLM / RAG 流水线喂「已经洗干净的 Markdown」,而不是让模型去读一坨 HTML。
  • 让 Agent 在不知道具体 URL 的情况下,用一句 prompt 自动搜索、点进多个页面、抽取结构化字段。
  • 批量把一个文档站或知识库整站爬成 Markdown,做向量库索引。
  • 用 interact 接口在无头浏览器里完成「搜索关键词 → 点第一个结果 → 抓价格」这类多步操作。

1.3 能力边界(官方口径)

  • 官方宣称覆盖 96% 的 Web(含 JS 重度页面),P95 延迟 3.4s。
  • 默认遵守 robots.txt;官方原文:By default, Firecrawl respects robots.txt directives.
  • 开源版与云版存在功能差异,下图来自官方 README:

开源版 vs 云版能力差异(官方 README 截图)

2. 开源协议

核心服务采用 GNU Affero General Public License v3.0(AGPL-3.0);仓库内的 SDK(Python / Node.js / Go / Java / Rust / Ruby / .NET / PHP / Elixir)以及部分 UI 组件采用 MIT License。具体子目录以该目录下 LICENSE 文件为准。

AGPL-3.0 意味着:如果你把 Firecrawl 核心服务作为网络服务对外提供,必须向你的用户公开修改后的源码。仅把它当成内部工具调用、不分发服务端,通常不触发开源义务;但商用 SaaS 对外暴露前,请法务确认。

3. 官方仓库与链接

4. 前置要求

4.1 仅使用官方云 API(推荐入门)

  • 任意一台能访问外网的机器。
  • 任意一种语言:Python ≥ 3.8 / Node.js ≥ 18 / Go / Java / Rust / Ruby / .NET / PHP / Elixir。
  • 在 https://firecrawl.dev 注册账号拿到 fc- 开头的 API Key。

4.2 源码自托管(来自官方 CONTRIBUTING.md)

  • Node.js 22(官方本地开发指南指定版本)。
  • pnpm 11.4.0。
  • Redis:需要单独常驻运行。
  • PostgreSQL 与 RabbitMQ:由 harness / Docker Compose 拉起,不需要手动安装。
  • 操作系统:macOS / Linux(Windows 推荐 WSL2)。
  • 磁盘:建议 ≥ 20GB,用于 Chromium 浏览器与缓存。

5. 安装部署

5.1 方式一:直接用官方云 API(零部署)

注册拿 Key 后,装任意一个 SDK 即可。以下命令原文抄自官方 README。

Python:

pip install firecrawl

Node.js:

npm install firecrawl

Go:

go get github.com/firecrawl/firecrawl/apps/go-sdk

Ruby:

gem install firecrawl-sdk

.NET:

dotnet add package firecrawl-sdk

PHP:

composer require firecrawl/firecrawl-sdk

5.2 方式二:源码自托管(本地开发模式)

官方 CONTRIBUTING.md 给出的最小启动路径:

git clone https://github.com/firecrawl/firecrawl.git
cd firecrawl/apps/api
pnpm install
pnpm start

pnpm start 会构建 Firecrawl 并同时启动 API、worker 以及本地依赖容器;按官方文档另外单独把 Redis 跑起来。完整的自托管(不修改产品代码、直接部署到自己基础设施)流程见 https://docs.firecrawl.dev/contributing/self-host ,其中包含 Docker Compose 与环境变量清单。

官方明确提醒:本地开发使用 apps/api/.env,Docker Compose 自托管使用仓库根目录配置文件,两者的环境文件不要互相拷贝。

5.3 方式三:作为 MCP Server 挂到 Agent

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

或者在 MCP 客户端配置里加:

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

6. 最小示例代码

6.1 抓取单个 URL 为 Markdown(Python)

from firecrawl import Firecrawl

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

doc = app.scrape("https://firecrawl.dev", formats=["markdown"])
print(doc.markdown)

6.2 一句话让 Agent 自己去找数据(Python)

from firecrawl import Firecrawl

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

result = app.agent(prompt="Find the founders of Stripe")
print(result.data)

指定 effort 控制推理预算(原文表格):

effort 适用场景
low 单站点简单查询
medium 几个页面的多步任务
high 深度研究、复杂导航、关键数据

所有 effort 等级底层都跑 spark-2 模型,effort 只改推理预算,不改模型。

6.3 整站爬取(cURL)

curl -X POST 'https://api.firecrawl.dev/v2/crawl' \
  -H 'Authorization: Bearer fc-YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://docs.firecrawl.dev",
    "limit": 100,
    "scrapeOptions": { "formats": ["markdown"] }
  }'

返回一个 job id,再 GET 轮询 https://api.firecrawl.dev/v2/crawl/<id> 直到 status: completed。

6.4 CLI 一键抓取

npm install -g firecrawl-cli   # 或使用 npx
firecrawl scrape https://firecrawl.dev
firecrawl search "firecrawl" --limit 5

7. 配置项说明

7.1 SDK 客户端

配置 说明
api_key 以 fc- 开头,必填;也可通过环境变量 FIRECRAWL_API_KEY 注入
API 端点 默认 https://api.firecrawl.dev;自托管时改成自己的服务地址

7.2 Scrape 常用选项(README 列举)

选项 取值 含义
formats markdown / html / screenshot / json 返回哪些格式,可多选
only_main_content bool 只保留正文,去掉导航/页脚
actions 数组 在抓内容前先执行点击/滚动/输入/等待等浏览器动作

7.3 Agent 选项

选项 含义
prompt 自然语言描述你要找什么
urls 可选,把 Agent 限定在指定几个页面内
schema 用 Pydantic 模型约束输出为结构化 JSON
effort low / medium / high

7.4 自托管环境变量

完整变量表以官方 Self-Hosting 指南为准;CONTRIBUTING.md 明确提到 apps/api/.env 与根目录 Compose 配置是两套,不要混用。

8. 常见问题

Q1:免费额度多少?需要绑卡吗? 官方云在 https://firecrawl.dev 注册即送试用额度,具体配额以官网 Pricing 页为准。

Q2:抓不动的网站怎么办? 官方在 README 中列出的优先顺序:先看目标站点是不是要登录 / 付费墙;再用 actions 模拟用户操作;最后才考虑代理。自托管模式下反爬能力弱于云版(云版自带轮换代理池)。

Q3:可以拿来批量抓电商价格吗? 技术上可以,但官方 README 末尾声明:It is the sole responsibility of end users to respect websites' policies when scraping. 请先看目标站点 ToS 与 robots.txt。

Q4:本地起服务报缺 Redis? CONTRIBUTING.md 明确写:Redis 需要单独常驻运行,harness 只负责 PostgreSQL 与 RabbitMQ。

Q5:spark-1-pro / spark-1-mini 还能用吗? README 原文:旧名字为了向后兼容仍被接受,但已废弃,实际都会跑 spark-2。

9. 与同类工具对比

工具 形态 输出 反爬/代理 适合谁
Firecrawl HTTP API(云 + 自托管) Markdown / JSON / 截图,Agent 模式 云版自带轮换代理与浏览器池 AI 应用 / RAG 团队,想少写爬虫代码
Crawlee(Python/TS) 爬虫框架库 自定义存储(Dataset / Key-Value Store) 自带会话与代理轮换,但要自己接 工程师想完全掌控抓取逻辑
Browserless 无头浏览器托管 原始 HTML / 截图 / PDF 不直接做内容清洗 已经有 Puppeteer/Playwright 脚本,只想托管浏览器
Jina Reader (r.jina.ai) URL→Markdown 代理服务 Markdown,带 frontmatter 云版自带 给 LLM 喂单页正文,一行 URL 前缀搞定
Trafilatura Python 库 + CLI 正文文本 / XML / JSON 不带浏览器,纯 HTTP 离线 HTML 批量清洗、语料构建

10. 许可

  • 核心服务:AGPL-3.0。
  • SDK 与部分 UI:MIT。
  • 第三方组件(Chromium、Redis、PostgreSQL、RabbitMQ)遵循各自许可证。
  • 使用官方云服务时,还需接受 firecrawl.dev 自身的服务条款。

11. 责任使用声明

使用 Firecrawl(无论云版还是自托管)抓取网页时,请务必遵守以下原则:

  1. 遵守目标网站的 robots.txt 与服务条款(ToS),官方默认即按 robots.txt 工作,不要为了绕过而关闭。
  2. 控制并发、合理加延时,不要对小型站点造成流量压力。
  3. 不要绕过登录墙、付费墙或验证码去获取本应对付费用户开放的内容。
  4. 不要批量抓取个人隐私数据(手机号、邮箱、身份证、住址等)。
  5. 仅将公开数据用于合法的研究、产品功能与个人学习目的。
  6. 尊重原作者版权,二次发布抓取内容时遵守原站点的转载授权要求。
评论交流

文章目录