输入 URL 输出干净 Markdown/JSON,支持单页、整站递归、站点地图搜索、结构化数据提取5种模式;开源核心可自托管,免费额度 1000 次/月。

快速回答:Firecrawl 是一个专为 LLM 和 AI Agent 打造的网页抓取 API:传入一个 URL,返回干净的 Markdown 或结构化 JSON,支持 JavaScript 渲染并剥离无关内容。免费额度每月 1,000 credits(约 1,000 次页面读取),无需信用卡,五个端点全部解锁。如需无限免费使用,可自行托管 AGPL-3.0 开源内核。
每个 AI Agent 都会遇到同样的瓶颈:模型推理能力很强,但开放的网络世界满是 HTML 乱码——导航栏、Cookie 弹窗、懒加载的 JS、广告、反爬墙。把原始 HTML 塞进上下文窗口,标记语言就消耗了大量 token。Firecrawl 把这个过程压缩成一次 HTTP 调用:输入 URL,输出 LLM 可直接使用的数据。它是 Agent 工具包的"读取"一半,与搜索 API 配合——搜索负责找到 URL,Firecrawl 负责读取内容。
Firecrawl 不是单个端点——它有五个,每个解决不同形态的网络数据问题:
这就是为什么 Firecrawl 在 2026 年成为 Agent 技术栈中默认的"获取页面"工具,从 CrewAI、LangGraph 到接入 Cursor 和 Claude 的 MCP 服务器。
决定 1,000 credits 能用多远的核心换算关系是 credits 与页面的映射:
| 操作 | 消耗 |
|---|---|
| scrape(抓取单个页面) | 1 credit / 页 |
| crawl(递归爬取) | 1 credit / 页 |
| map(生成 URL 列表) | 1 credit / 50 URLs |
| search(搜索) | 2 credits / 10 条结果;返回内容时另加 1 credit / 页 |
| extract(提取) | 由底层操作决定 |
所以 1,000 credits 实际上相当于每月 1,000 次免费页面读取。用于个人研究 Agent 每天抓取 30 页很宽裕;但如果做 5,000 页的文档库爬取,一次就会耗尽。要清楚自己落在哪个区间。
付费计划将 credits 和并发数一起扩容。价格取自官方定价页的年付费率(月付更高):
| 套餐 | Credits/月 | 并发数 |
|---|---|---|
| Free | 1,000 | 2 |
| Hobby | 5,000 | 5 |
| Standard | 100,000 | 50 |
从 Hobby(5,000)到 Standard(100,000)的跳跃很陡——中间没有挡位——所以常见路径是"免费用于原型开发,Hobby 用于小型线上项目,然后直接跳到 Standard"。如果量级大且稳定,自行托管就不用花一分钱(见下文)。
在 firecrawl.dev 注册,复制你的 fc- 密钥,然后导出:
export FIRECRAWL_API_KEY="fc-YOUR_KEY"
v2 API 基础地址是 https://api.firecrawl.dev/v2/,使用 bearer token:
curl -X POST https://api.firecrawl.dev/v2/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://news.ycombinator.com", "formats": ["markdown"]}'
响应中包含 data.markdown(清理后的页面)和 data.metadata(标题、描述、状态)。Python SDK:
pip install firecrawl-py
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR_KEY")
result = firecrawl.scrape(
"https://news.ycombinator.com",
formats=["markdown", "html"],
)
print(result.markdown[:500])
print(result.metadata.title)
返回的字段名是 snake_case,还有个 AsyncFirecrawl 类提供相同的非阻塞方法。Node.js SDK(npm install firecrawl)暴露同样的 firecrawl.scrape(url, { formats: [...] }) 调用。不需要代理配置,不需要无头浏览器安装——一次调用返回模型可直接使用的文本。
除了 Markdown,还可以在一次调用中请求多种格式——markdown、html、rawHtml、links、screenshot、json。每种都从同一次页面加载中计算,所以添加 links 不会额外消耗 credit。
result = firecrawl.scrape(
"https://example.com/pricing",
formats=["markdown", "links"],
only_main_content=True, # 去掉导航、页脚、侧边栏
)
print(result.links)
Crawl 发现链接页面并逐个抓取——非常适合将文档站点摄入 RAG。它是异步的:启动任务后轮询(或者让 SDK 等待)。
job = firecrawl.crawl(
url="https://docs.firecrawl.dev",
limit=50, # 设置上限,避免一次耗尽 credits
scrape_options={"formats": ["markdown"]},
)
for page in job.data:
print(page.metadata.source_url, len(page.markdown))
注意 credits 消耗:limit=50 最多消耗 50 credits——相当于每月额度的 5%。免费额度一定要设置 limit。
Map 返回 Firecrawl 能找到的所有 URL,速度快,不抓取内容——这是在爬取前了解站点结构最便宜的方式。
res = firecrawl.map(url="https://firecrawl.dev", limit=100)
print(res.links)
# 然后只爬取你关心的子集
高效模式:先 map 出站点,筛选出你想要的 URL 段落(如 /blog/),再抓取这个列表——比盲目递归爬取便宜得多。
与只返回摘要片段的纯搜索 API 不同,Search 可以在同一响应中返回每个结果的完整抓取内容。
results = firecrawl.search(
"best open source vector databases 2026",
limit=5,
scrape_options={"formats": ["markdown"]},
)
for r in results.web:
print(r.title, r.url)
print(r.markdown[:300])
一次往返中同时获得排序后的 URL 和清理后的正文——无需第二次拉取。每次 10 条结果消耗 2 credits,如果你请求内容则另加 1 credit/页。
这是 Firecrawl 超越普通抓取工具的地方:运行一次 LLM 提取,得到匹配 schema 的 JSON——或者只用一个 prompt。
from pydantic import BaseModel
class Product(BaseModel):
name: str
price: float
in_stock: bool
result = firecrawl.scrape(
"https://example.com/product/123",
formats=[{"type": "json", "schema": Product.model_json_schema()}],
)
print(result.json) # {"name": "...", "price": 29.99, "in_stock": true}
或者跳过 schema,用 {"type": "json", "prompt": "Extract the top 5 story titles and points."} 描述你想要的内容。对于 Agent,这把抓取 + 解析 + 验证压缩成一次带类型的结果。
Crawl4AI 是免费方案之王,如果你愿意自己运行 Playwright 的话。Jina Reader(在任意 URL 前加 r.jina.ai/)是最快的单页读取工具,但不能递归爬取也不能 schema 提取。Firecrawl 处于甜蜜点:托管 API 处理反爬和渲染,crawl、map、search、extract 集于一处——当量级上来需要自托管时也有退路。
Firecrawl 内核是 AGPL-3.0 开源的(SDK 是 MIT),GitHub 上有自托管指南。运行 Docker Compose 栈就有自己的实例,每页无成本——只有服务器账单。两个诚实的注意事项:AGPL 是强著佐权(修改它并作为网络服务提供,你就必须在同一许可证下开源你的修改——内部使用不成问题);自托管意味着你要自己维护代理轮换、浏览器池扩容和反爬维护,这些托管 API 都替你处理了。当量级让这笔账算得过来且你有运维能力时,选择自托管。
给助手添加抓取能力最干净的方式是官方 firecrawl-mcp-server。把它加到 Cursor、Claude Desktop、Cline 或任意 MCP 客户端:
{
"mcpServers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": { "FIRECRAWL_API_KEY": "fc-YOUR_KEY" }
}
}
}
对于 RAG,常见模式是"爬取站点 → 分块 → 嵌入 → 存入向量数据库"。Firecrawl 处理爬取;搭配免费的 Cohere 嵌入 API 和免费的向量数据库(如 Qdrant 或 Chroma),就构成了完整的免费摄入栈。
asyncio.gather() 同时发 10 个 scrape,有 8 个会排队或报错。限速到 2 个同时跑,或者升级(Hobby 5 个,Standard 50 个)。only_main_content=True,并做验证(Pydantic 可以免费做)。Firecrawl 真的免费吗?
是的——托管免费额度每月 1,000 credits(约 1,000 次页面抓取),无需信用卡,开源内核可在 AGPL-3.0 下自由自托管、无限制。只有在每月超过 1,000 页且不想自己运维基础设施时才需要付费。
1 个 Firecrawl credit 等于什么?
1 credit 在 scrape、crawl、map 中等于 1 个抓取页面。Search 消耗 2 credits/10 条结果;浏览器操作消耗 2 credits/浏览器分钟。所以 1,000 credits 免费额度实际上相当于每月 1,000 次页面读取。
Firecrawl 返回结构化数据还是只返回文本?
两者都有。默认返回 Markdown 或 HTML。加了带 schema 或自然语言 prompt 的 json 格式,Firecrawl 就会运行 LLM 提取通道,返回类型化的 JSON——名称、价格、日期,随你定义。
Firecrawl vs Crawl4AI——我该用哪个?
当你想要托管式抓取(反爬、浏览器池、重试)且免费版或 Hobby 额度够用时用 Firecrawl 的托管 API。当你想在任何规模下实现零每页成本且愿意自己运行 Playwright 时用 Crawl4AI。如果想要 Firecrawl 的功能集但不想按 credit 付费,也可以自托管。
Firecrawl 把混乱的线上网页变成模型可用的干净结构化数据。免费额度——每月 1,000 次页面读取,无需信用卡,所有端点解锁——足够以零成本构建一个真正的研究 Agent、RAG 管道或监控工具。
原文发表于 toolfreebie.com。