英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
🔥 火爬
用于大规模搜索、抓取和与网络交互的 API。🔥 这个网络数据 API 可以找到来源、提取内容,并将其转化为干净的 Markdown 或结构化数据,你的代理可以使用。开源并可作为托管服务使用。
噓,嘿,你,加入我们的观星者吧 :)
为什么选择 Firecrawl?
- 行业领先的可靠性:覆盖 96% 的网页,包括 JavaScript 密集的页面——无需代理烦恼,只需干净数据(查看基准测试)
- 极速:在数百万页面中,P95 延迟为 3.4 秒,专为实时代理和动态应用构建
- 适合 LLM 的输出:干净的 Markdown、结构化 JSON、截图等——消耗更少 token,构建更好的 AI 应用
- 我们处理难题:轮换代理、编排、速率限制、JS 阻挡的内容等——零配置
- 代理就绪:通过一条命令将 Firecrawl 连接到任何 AI 代理或 MCP 客户端
- 媒体解析:解析并提取网页托管的 PDF、DOCX 等内容
- 操作:点击、滚动、输入、等待和按下操作后提取内容
- 开源:透明且协作开发——加入我们的社区
功能概述
核心端点
| 功能 | 描述 |
|---|---|
| 搜索 | 在网络上搜索并获取结果的完整页面内容 |
| 抓取 | 将任何 URL 转换为 Markdown、HTML、截图或结构化 JSON |
| 交互 | 抓取页面,然后使用 AI 提示或代码与其交互 |
更多
| 功能 | 描述 |
|---|---|
| 代理 | 自动数据收集,只需描述你的需求 |
| 抓取 | 使用单次请求抓取网站的所有网址 |
| 地图 | 立即发现网站上的所有网址 |
| 批量抓取 | 异步抓取成千上万的网址 |
快速开始
在 firecrawl.dev 注册以获取您的 API 密钥。尝试 playground 以测试它。
搜索
在网络上搜索并获取结果的完整内容。
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
search_result = app.search("firecrawl", limit=5)
Node.js / cURL / 命令行界面 (CLI)
Node.js
从 'firecrawl' 导入 { Firecrawl };
const app = new Firecrawl({apiKey: "fc-你的_API_KEY"});
app.search("firecrawl", { limit: 5 })
cURL
curl -X POST 'https://api.firecrawl.dev/v2/search' \
-H '授权: Bearer fc-你的_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "firecrawl",
"limit": 5
}'
命令行界面 (CLI)
firecrawl 搜索 "firecrawl" --limit 5
输出:
[
{
"url": "https://firecrawl.dev",
"title": "Firecrawl",
"markdown": "Turn websites into..."
},
{
"url": "https://docs.firecrawl.dev",
"title": "Firecrawl Docs",
"markdown": "# Getting Started..."
}
]
抓取
从任何网站获取适用于大语言模型的数据 — Markdown、JSON、截图等。
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
result = app.scrape('firecrawl.dev')
Node.js / cURL / 命令行界面 (CLI)
Node.js
从 'firecrawl' 导入 { Firecrawl };
const app = new Firecrawl({ apiKey: "fc-你的_API_KEY" });
app.scrape('firecrawl.dev')
cURL
curl -X POST 'https://api.firecrawl.dev/v2/scrape' \
-H '授权: Bearer fc-你的_API_KEY'
-H 'Content-Type: application/json' \
-d '{
"url": "firecrawl.dev"
}'
CLI
firecrawl scrape https://firecrawl.dev
firecrawl https://firecrawl.dev --only-main-content
输出:
# Firecrawl
Firecrawl helps AI agents search, scrape, and interact with the web.
## Features
- Search: Find information across the web
- Scrape: Clean data from any page
- Interact: Click, navigate, and operate pages
- Agent: Autonomous data gathering
互动
抓取页面,然后使用AI提示或代码与其交互。
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
result = app.scrape("https://amazon.com")
scrape_id = result.metadata.scrape_id
app.interact(scrape_id, prompt="Search for 'mechanical keyboard'")
app.interact(scrape_id, prompt="Click the first result")
Node.js / cURL / 命令行工具
Node.js
从 'firecrawl' 导入 { Firecrawl };
const app = new Firecrawl({apiKey: "fc-你的_API_KEY"});
const result = await app.scrape("https://amazon.com");
await app.interact(result.metadata.scrapeId, { prompt: "搜索 '机械键盘'" })
});
await app.interact(result.metadata.scrapeId, { prompt: "点击第一个结果"
});
cURL
# 1. 抓取页面
curl -X POST 'https://api.firecrawl.dev/v2/scrape' \
-H '授权: Bearer fc-YOUR_API_KEY' "}
-H '内容类型: application/json' \
-d '{"url": "https://amazon.com"}'
# 2. 与页面交互(使用第1步的 scrapeId)
curl -X POST 'https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact' \
-H '授权: Bearer fc-YOUR_API_KEY' "}
-H '内容类型: application/json' \
-d '{"prompt": "搜索机械键盘"}'
命令行界面
firecrawl scrape https://amazon.com
firecrawl interact exec --prompt "搜索 '机械键盘'"
firecrawl interact exec --prompt "点击第一个结果"
输出:
{
"success": true,
"output": "Keyboard available at $100",
"liveViewUrl": "https://liveview.firecrawl.dev/..."
}
为您的代理提供动力
在几分钟内将 Firecrawl 连接到任何 AI 代理或 MCP 客户端。
技能
只需一条命令即可让您的代理轻松访问实时网络数据。
npx -y firecrawl-cli@latest init --all --browser
安装后重启你的代理。可与 Claude Code、Antigravity、OpenCode 等一起使用。
MCP
几秒钟内将任何支持 MCP 的客户端连接到网络。
{
"mcpServers": {
"firecrawl-mcp": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "fc-YOUR_API_KEY"
}
}
}
}
代理入职
你是一个AI代理吗?获取此技能以注册你的用户,获取API密钥,并开始使用Firecrawl构建项目。
curl -s https://firecrawl.dev/agent-onboarding/SKILL.md
查看Skill CLI 文档以获取所有可用命令。对于 MCP,请参见firecrawl-mcp-server。
更多端点
代理
从网络获取数据的最简单方法。 描述你的需求,我们的 AI 代理会搜索、浏览并获取数据。不需要提供 URL。
代理是我们 /extract 端点的升级版:更快、更可靠,而且无需你事先知道 URL。
curl -X POST 'https://api.firecrawl.dev/v2/agent' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"prompt": "Find the pricing plans for Notion"
}'
回应:
{
"success": true,
"data": {
"result": "Notion offers the following pricing plans:\n\n1. Free - $0/month...\n2. Plus - $10/seat/month...\n3. Business - $18/seat/month...",
"sources": ["https://www.notion.so/pricing"]
}
}
具有结构化输出的代理
使用模式获取结构化数据:
from firecrawl import Firecrawl
from pydantic import BaseModel, Field
from typing import List, Optional
app = Firecrawl(api_key="fc-YOUR_API_KEY")
class Founder(BaseModel):
name: str = Field(description="Full name of the founder")
role: Optional[str] = Field(None, description="Role or position")
class FoundersSchema(BaseModel):
founders: List[Founder] = Field(description="List of founders")
result = app.agent(
prompt="Find the founders of Firecrawl",
schema=FoundersSchema
)
print(result.data)
{
"founders": [
{"name": "Eric Ciarla", "role": "Co-founder"},
{"name": "Nicolas Camara", "role": "Co-founder"},
{"name": "Caleb Peffer", "role": "Co-founder"}
]
}
带有 URL 的代理(可选)
将代理集中在特定页面上:
result = app.agent(
urls=["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
prompt="Compare the features and pricing information"
)
努力选择
设置代理在任务上花费的推理量:
| 努力 | 最适合 |
|---|---|
low |
在一个网站上的简单查询 |
medium |
少数几页上的多步骤任务 |
high |
深度研究,复杂导航,关键数据 |
result = app.agent(
prompt="Compare enterprise features across Firecrawl, Apify, and ScrapingBee",
effort="high"
)
每个努力级别都会运行 spark-2 模型。努力级别改变的是推理预算,而不是模型。
模型选择(旧版)
model 仍然可用,并且继续受到支持。发送 model 或 effort,不要同时发送。如果请求同时包含这两个字段,会返回 400 错误。
| 模型 | 成本 | 最适合 |
|---|---|---|
spark-1-mini |
便宜 60% | 大多数任务 |
spark-1-pro(默认) |
标准 | 复杂研究,关键数据收集 |
spark-2 |
查看 定价 | 运行 effort 的模型 |
result = app.agent(
prompt="Compare enterprise features across Firecrawl, Apify, and ScrapingBee",
model="spark-1-pro"
)
一个没有 model 且没有 effort 的请求将运行 spark-1-pro。
何时使用 Pro:
- 对多个网站的数据进行比较
- 从具有复杂导航或身份验证的网站中提取信息
- 研究任务中,代理需要探索多条路径
- 关键数据,对准确性要求极高
在我们的 Agent 文档 中了解更多关于 Spark 模型的信息。
爬取
爬取整个网站并获取所有页面的内容。
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"]
}
}'
返回一个作业ID:
{
"success": true,
"id": "123-456-789",
"url": "https://api.firecrawl.dev/v2/crawl/123-456-789"
}
检查爬网状态
curl -X GET 'https://api.firecrawl.dev/v2/crawl/123-456-789' \
-H 'Authorization: Bearer fc-YOUR_API_KEY'
{
"status": "completed",
"total": 50,
"completed": 50,
"creditsUsed": 50,
"data": [
{
"markdown": "# Page Title\n\nContent...",
"metadata": {"title": "Page Title", "sourceURL": "https://..."}
}
]
}
注意: SDKs 会自动处理轮询,以提供更好的开发者体验。
地图
立即发现网站上的所有 URL。
curl -X POST 'https://api.firecrawl.dev/v2/map' \
-H 'Authorization: Bearer fc-YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"url": "https://firecrawl.dev"}'
回应:
{
"success": true,
"links": [
{"url": "https://firecrawl.dev", "title": "Firecrawl", "description": "Turn websites into LLM-ready data"},
{"url": "https://firecrawl.dev/pricing", "title": "Pricing", "description": "Firecrawl pricing plans"},
{"url": "https://firecrawl.dev/blog", "title": "Blog", "description": "Firecrawl blog"}
]
}
带搜索的地图
在网站中查找特定网址:
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
result = app.map("https://firecrawl.dev", search="pricing")
# Returns URLs ordered by relevance to "pricing"
批量抓取
一次抓取多个网址:
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
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)
SDKs
我们的SDK提供了一种方便的方式来使用所有Firecrawl功能,并自动处理异步操作的轮询。
Python
安装SDK:
pip install firecrawl-py
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
# Scrape a single URL
doc = app.scrape("https://firecrawl.dev", formats=["markdown"])
print(doc.markdown)
# Use the Agent for autonomous data gathering
result = app.agent(prompt="Find the founders of Stripe")
print(result.data)
# Crawl a website (automatically waits for completion)
docs = app.crawl("https://docs.firecrawl.dev", limit=50)
for doc in docs.data:
print(doc.metadata.source_url, doc.markdown[:100])
# Search the web
results = app.search("best AI data tools 2024", limit=10)
print(results)
Node.js
安装 SDK:
npm install firecrawl
import { Firecrawl } from 'firecrawl';
const app = new Firecrawl({ apiKey: 'fc-YOUR_API_KEY' });
// Scrape a single URL
const doc = await app.scrape('https://firecrawl.dev', { formats: ['markdown'] });
console.log(doc.markdown);
// Use the Agent for autonomous data gathering
const result = await app.agent({ prompt: 'Find the founders of Stripe' });
console.log(result.data);
// Crawl a website (automatically waits for completion)
const docs = await app.crawl('https://docs.firecrawl.dev', { limit: 50 });
docs.data.forEach(doc => {
console.log(doc.metadata.sourceURL, doc.markdown.substring(0, 100));
});
// Search the web
const results = await app.search('best AI data tools 2024', { limit: 10 });
results.data.web.forEach(result => {
console.log(`${result.title}: ${result.url}`);
});
去
Install SDK:
go get github.com/firecrawl/firecrawl/apps/go-sdk
package main
import (
"context"
"fmt"
"log"
firecrawl "github.com/firecrawl/firecrawl/apps/go-sdk"
"github.com/firecrawl/firecrawl/apps/go-sdk/option"
)
func main() {
// Create a client (reads FIRECRAWL_API_KEY from environment)
client, err := firecrawl.NewClient(option.WithAPIKey("fc-YOUR_API_KEY"))
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Scrape a single URL
doc, err := client.Scrape(ctx, "https://firecrawl.dev", &firecrawl.ScrapeOptions{
Formats: []string{"markdown"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(doc.Markdown)
// Use the Agent for autonomous data gathering
agent, err := client.Agent(ctx, &firecrawl.AgentOptions{
Prompt: "Find the founders of Stripe",
})
if err != nil {
log.Fatal(err)
}
fmt.Println(agent.Data)
// Crawl a website (automatically waits for completion)
job, err := client.Crawl(ctx, "https://docs.firecrawl.dev", &firecrawl.CrawlOptions{
Limit: firecrawl.Int(50),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Crawled %d pages\n", len(job.Data))
// Search the web
results, err := client.Search(ctx, "best AI data tools 2024", &firecrawl.SearchOptions{
Limit: firecrawl.Int(10),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(results)
}
Java
添加依赖项(Gradle/Maven):
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.firecrawl:firecrawl-java-sdk:2.0'
}
import dev.firecrawl.client.FirecrawlClient;
import dev.firecrawl.model.*;
FirecrawlClient client = new FirecrawlClient(
System.getenv("FIRECRAWL_API_KEY"), null, null
);
// Scrape a single URL
ScrapeParams scrapeParams = new ScrapeParams();
scrapeParams.setFormats(new String[]{"markdown"});
FirecrawlDocument doc = client.scrapeURL("https://firecrawl.dev", scrapeParams);
System.out.println(doc.getMarkdown());
// Use the Agent for autonomous data gathering
AgentParams agentParams = new AgentParams("Find the founders of Stripe");
AgentResponse start = client.createAgent(agentParams);
AgentStatusResponse result = client.getAgentStatus(start.getId());
System.out.println(result.getData());
// Crawl a website (polls until completion)
CrawlParams crawlParams = new CrawlParams();
crawlParams.setLimit(50);
CrawlStatusResponse job = client.crawlURL("https://docs.firecrawl.dev", crawlParams, null, 10);
for (FirecrawlDocument page : job.getData()) {
System.out.println(page.getMetadata().get("sourceURL"));
}
// Search the web
SearchParams searchParams = new SearchParams("best AI data tools 2024");
searchParams.setLimit(10);
SearchResponse results = client.search(searchParams);
for (SearchResult r : results.getResults()) {
System.out.println(r.getTitle() + ": " + r.getUrl());
}
灵丹
添加依赖项:
def deps do
[
{:firecrawl, "~> 1.0"}
]
end
# Scrape a URL
{:ok, response} = Firecrawl.scrape_and_extract_from_url(
url: "https://firecrawl.dev",
formats: ["markdown"]
)
# Crawl a website
{:ok, response} = Firecrawl.crawl_urls(
url: "https://docs.firecrawl.dev",
limit: 50
)
# Search the web
{:ok, response} = Firecrawl.search_and_scrape(
query: "best AI data tools 2024",
limit: 10
)
# Map URLs
{:ok, response} = Firecrawl.map_urls(url: "https://example.com")
生锈
添加依赖项:
[dependencies]
firecrawl = "2"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
use firecrawl::{Client, ScrapeOptions, Format, CrawlOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new("fc-YOUR_API_KEY")?;
// Scrape a URL
let document = client.scrape("https://firecrawl.dev", None).await?;
println!("{:?}", document.markdown);
// Crawl a website
let options = CrawlOptions {
limit: Some(50),
..Default::default()
};
let result = client.crawl("https://docs.firecrawl.dev", options).await?;
println!("Crawled {} pages", result.data.len());
// Search the web
let response = client.search("best web scraping tools 2024", None).await?;
println!("{:?}", response.data);
Ok(())
}
红宝石
Install SDK:
gem install firecrawl-sdk
require "firecrawl"
client = Firecrawl::Client.new(api_key: "fc-YOUR_API_KEY")
# Scrape a single URL
doc = client.scrape("https://firecrawl.dev",
Firecrawl::Models::ScrapeOptions.new(formats: ["markdown"]))
puts doc.markdown
# Use the Agent for autonomous data gathering
result = client.agent(
Firecrawl::Models::AgentOptions.new(prompt: "Find the founders of Stripe"))
puts result.data
# Crawl a website (automatically waits for completion)
job = client.crawl("https://docs.firecrawl.dev",
Firecrawl::Models::CrawlOptions.new(limit: 50))
job.data.each { |d| puts d.metadata.source_url }
# Search the web
results = client.search("best AI data tools 2024",
Firecrawl::Models::SearchOptions.new(limit: 10))
puts results
.NET
安装 SDK:
dotnet add package firecrawl-sdk
using Firecrawl;
using Firecrawl.Models;
var client = new FirecrawlClient("fc-YOUR_API_KEY");
// Scrape a single URL
var doc = await client.ScrapeAsync("https://firecrawl.dev",
new ScrapeOptions { Formats = new List<object> { "markdown" } });
Console.WriteLine(doc.Markdown);
// Crawl a website (automatically waits for completion)
var job = await client.CrawlAsync("https://docs.firecrawl.dev",
new CrawlOptions { Limit = 50 });
Console.WriteLine($"Crawled {job.Data.Count} pages");
// Search the web
var results = await client.SearchAsync("best AI data tools 2024",
new SearchOptions { Limit = 10 });
Console.WriteLine(results);
PHP
安装 SDK:
composer require firecrawl/firecrawl-sdk
<?php
use Firecrawl\Client\FirecrawlClient;
use Firecrawl\Models\ScrapeOptions;
use Firecrawl\Models\CrawlOptions;
use Firecrawl\Models\SearchOptions;
$client = FirecrawlClient::create(apiKey: 'fc-YOUR_API_KEY');
// Scrape a single URL
$doc = $client->scrape('https://firecrawl.dev', ScrapeOptions::with(
formats: ['markdown'],
));
echo $doc->getMarkdown();
// Crawl a website (automatically waits for completion)
$job = $client->crawl('https://docs.firecrawl.dev', CrawlOptions::with(limit: 50));
foreach ($job->getData() as $page) {
echo $page->getMetadata()['sourceURL'] . "\n";
}
// Search the web
$results = $client->search('best AI data tools 2024', SearchOptions::with(limit: 10));
print_r($results);
集成
代理与 AI 工具
- Firecrawl 技能目录 — 使用
npx skills add firecrawl/skills安装 - Firecrawl CLI
- Firecrawl MCP
构建技能(将 Firecrawl 集成到产品代码中)在此仓库的 skills/ 中编写,并通过 CI 同步到目录。贡献技能?CLI 技能(包括研究/开发者索引技能) → 提交 PR 到 firecrawl/cli。构建/SDK 技能 → 提交 PR 到此仓库(skills/)。工作流技能 → 提交 PR 到 firecrawl/firecrawl-workflows。目录(firecrawl/skills)为只读 — 永远不要直接提交 PR。
平台
缺少你喜欢的工具? 打开一个 issue 告诉我们!
资源
开源与云服务
Firecrawl 是在 AGPL-3.0 许可证下开源的。firecrawl.dev 的云版本包含额外的功能:
要在本地运行,请参阅 贡献指南。要自行托管,请参阅 自托管指南。
贡献
我们欢迎贡献!在提交拉取请求之前,请阅读我们的贡献指南。
许可
该项目主要在GNU Affero通用公共许可证v3.0 (AGPL-3.0)下授权。SDK和一些UI组件在MIT许可证下授权。具体目录中的LICENSE文件中查看详情。
终端用户在抓取网站时遵守网站政策是其唯一责任。 建议用户遵守适用的隐私政策和使用条款。默认情况下,Firecrawl 会遵守 robots.txt 指令。使用 Firecrawl 即表示您同意遵守这些条件。
- 本文标题:firecrawl - The web data API to search
- 本文链接:https://www.cn121.com/automation/firecrawl-firecrawl.html
- 原项目:firecrawl/firecrawl 版权归原作者 firecrawl 及贡献者所有
- 收录信息:本站于 2026-09-21 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 AGPL-3.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 firecrawl/firecrawl。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。