跳转到主要内容
主视觉(浅色)

欢迎使用 Firecrawl

Firecrawl 是一项 API 服务,可接收 URL、进行爬取,并将内容转换为干净的 Markdown。我们会爬取所有可访问的子页面,并为每个页面提供干净的 Markdown。无需提供 sitemap。

如何使用?

我们在托管版本中提供易用的 API。你可以在此处找到 Playground 和文档。你也可以选择自托管后端。 查看以下资源以开始: 想要新的 SDK 或集成?欢迎在 GitHub 提交issue告诉我们。

API Key

要使用 API,你需要在 Firecrawl 注册并获取一个 API Key。

功能

  • Scrape: 抓取一个 URL,并以适用于 LLM 的格式获取其内容(Markdown、摘要、通过 JSON 模式 提供的结构化数据、截图、HTML)
  • Crawl: 抓取网页上的所有 URL,并以适用于 LLM 的格式返回内容
  • Map: 输入一个网站,极速获取该网站的所有 URL
  • Search: 搜索全网,并获取结果的完整内容
  • Extract: 使用 AI 从单页、多页或整站提取结构化数据。

强大功能

  • LLM 就绪的格式:Markdown、摘要、结构化数据、截图、HTML、链接、元数据
  • 棘手事项:代理、反爬/反机器人机制、动态内容(JS 渲染)、输出解析、编排
  • 极速表现:数秒内返回结果——为速度和高吞吐量场景而生。
  • 可定制性:排除特定标签、通过自定义请求头爬取需认证的内容、设置最大爬取深度等……
  • 媒体解析:PDF、DOCX、图像。
  • 可靠性优先:无论多难,都能获取你所需的数据。
  • 操作:在提取数据前可执行点击、滚动、输入、等待等
你可以在我们的文档中了解 Firecrawl 的全部功能及其使用方法

安装 Firecrawl

# 使用 pip 安装 firecrawl-py

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

抓取

要抓取单个 URL,请使用 scrape 方法。该方法接收 URL 作为参数,并以字典形式返回抓取的数据。
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

# 抓取网站:
doc = firecrawl.scrape("https://firecrawl.dev", formats=["markdown", "html"])
print(doc)

响应

各 SDK 将直接返回数据对象。cURL 将按下方所示原样返回有效载荷。
{
  "success": true,
  "data" : {
    "markdown": "Launch Week I 开始了![查看我们第 2 天的发布 🚀](https://www.firecrawl.dev/blog/launch-week-i-day-2-doubled-rate-limits)[💥 获享 2 个月免费...",
    "html": "<!DOCTYPE html><html lang=\"en\" class=\"light\" style=\"color-scheme: light;\"><body class=\"__variable_36bd41 __variable_d7dc5d font-inter ...",
    "metadata": {
      "title": "首页 - Firecrawl",
      "description": "Firecrawl 可抓取并将任何网站转换为干净的 Markdown。",
      "language": "en",
      "keywords": "Firecrawl,Markdown,Data,Mendable,Langchain",
      "robots": "follow, index",
      "ogTitle": "Firecrawl",
      "ogDescription": "将任意网站转换为可直接用于 LLM 的数据。",
      "ogUrl": "https://www.firecrawl.dev/",
      "ogImage": "https://www.firecrawl.dev/og.png?123",
      "ogLocaleAlternate": [],
      "ogSiteName": "Firecrawl",
      "sourceURL": "https://firecrawl.dev",
      "statusCode": 200
    }
  }
}

爬取

爬取功能可让你自动发现并提取某个 URL 及其所有可访问子页面的内容。使用我们的 SDK,只需调用爬取方法——系统会提交爬取任务、等待其完成,并返回整个站点的完整结果。

用法

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-你的API密钥")

docs = firecrawl.crawl(url="https://docs.firecrawl.dev", limit=10)
print(docs)
如果你直接调用我们的 API、使用 cURL,或在 SDK 中使用 start crawl 函数,将返回一个 ID,你可以据此查询爬取任务的状态。
{
  "success": true,
  "id": "123-456-789",
  "url": "https://api.firecrawl.dev/v2/crawl/123-456-789"
}

获取爬取进度

用于检查爬取任务的状态并获取其结果。
status = firecrawl.get_crawl_status("<crawl-id>")
print(status)

响应

响应会因爬取状态而异。对于未完成的任务或超过 10MB 的大型响应,会提供一个 next URL 参数。你需要请求该 URL 以获取下一段 10MB 的数据。若没有 next 参数,则表示爬取数据已结束。
{
  "status": "抓取中",
  "total": 36,
  "completed": 10,
  "creditsUsed": 10,
  "expiresAt": "2024-00-00T00:00:00.000Z",
  "next": "https://api.firecrawl.dev/v2/crawl/123-456-789?skip=10",
  "data": [
    {
      "markdown": "[Firecrawl 文档首页![浅色标志](https://mintlify.s3-us-west-1.amazonaws.com/firecrawl/logo/light.svg)!...",
      "html": "<!DOCTYPE html><html lang=\"en\" class=\"js-focus-visible lg:[--scroll-mt:9.5rem]\" data-js-focus-visible=\"\">...",
      "metadata": {
        "title": "使用 Groq Llama 3 构建“网站聊天” | Firecrawl",
        "language": "en",
        "sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
        "description": "了解如何使用 Firecrawl、Groq Llama 3 和 Langchain 构建一个“网站聊天”机器人。",
        "ogLocaleAlternate": [],
        "statusCode": 200
      }
    },
    ...
  ]
}

JSON 模式

借助 JSON 模式,你可以轻松从任意 URL 提取结构化数据。我们支持 pydantic 架构,进一步简化你的使用。以下是使用方式:
from firecrawl import Firecrawl
from pydantic import BaseModel
app = Firecrawl(api_key="fc-YOUR-API-KEY")

class JsonSchema(BaseModel):
    company_mission: str
    supports_sso: bool
    is_open_source: bool
    is_in_yc: bool

result = app.scrape(
    'https://firecrawl.dev',
    formats=[{
      "type": "json",
      "schema": JsonSchema
    }],
    only_main_content=False,
    timeout=120000
)

print(result)
输出:
JSON
{
    "success": true,
    "data": {
      "json": {
        "company_mission": "AI 赋能的网页抓取与数据抽取",
        "supports_sso": true,
        "is_open_source": true,
        "is_in_yc": true
      },
      "metadata": {
        "title": "Firecrawl",
        "description": "AI 赋能的网页抓取与数据抽取",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "AI 赋能的网页抓取与数据抽取",
        "ogUrl": "https://firecrawl.dev/",
        "ogImage": "https://firecrawl.dev/og.png",
        "ogLocaleAlternate": [],
        "ogSiteName": "Firecrawl",
        "sourceURL": "https://firecrawl.dev/"
      },
    }
}
Firecrawl 的搜索 API 支持你进行网页搜索,并可在一次操作中可选地抓取搜索结果。
  • 选择特定输出格式(Markdown、HTML、链接、截图)
  • 选择特定来源(网页、新闻、图片)
  • 通过可自定义参数(如位置等)进行网页搜索
详见Search Endpoint API Reference
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

results = firecrawl.search(
    query="Firecrawl",
    limit=3,
)
print(results)

响应

SDK 将直接返回数据对象;cURL 将返回完整的有效负载。
JSON
{
  "success": true,
  "data": {
    "web": [
      {
        "url": "https://www.firecrawl.dev/",
        "title": "Firecrawl - 面向 AI 的 Web 数据 API",
        "description": "用于 AI 的网页爬取、抓取与搜索 API。为规模而建。Firecrawl 将整个互联网送达 AI 代理与开发者。",
        "position": 1
      },
      {
        "url": "https://github.com/mendableai/firecrawl",
        "title": "mendableai/firecrawl:将整站转换为可供 LLM 使用的内容 - GitHub",
        "description": "Firecrawl 是一项 API 服务,接收一个 URL,对其进行爬取,并将其转换为干净的 Markdown 或结构化数据。",
        "position": 2
      },
      ...
    ],
    "images": [
      {
        "title": "快速上手 | Firecrawl",
        "imageUrl": "https://mintlify.s3.us-west-1.amazonaws.com/firecrawl/logo/logo.png",
        "imageWidth": 5814,
        "imageHeight": 1200,
        "url": "https://docs.firecrawl.dev/",
        "position": 1
      },
      ...
    ],
    "news": [
      {
        "title": "Y Combinator 创业公司 Firecrawl 准备出资 100 万美元雇用三名 AI 代理作为员工",
        "url": "https://techcrunch.com/2025/05/17/y-combinator-startup-firecrawl-is-ready-to-pay-1m-to-hire-three-ai-agents-as-employees/",
        "snippet": "目前它在 YC 的招聘板发布了三则“仅限 AI 代理”的新职位,并为此预留了总计 100 万美元的预算。",
        "date": "3 个月前"
        "position": 1
      },
      ...
    ]
  }
}

无需 schema 的抽取

现在只需向端点传入一个 prompt,即可在没有 schema 的情况下进行抽取。LLM 会自行决定数据结构。
from firecrawl import Firecrawl

app = Firecrawl(api_key="fc-YOUR-API-KEY")

result = app.scrape(
    'https://firecrawl.dev',
    formats=[{
      "type": "json",
      "prompt": "从页面中提取公司使命。"
    }],
    only_main_content=False,
    timeout=120000
)

print(result)
输出:
JSON
{
    "success": true,
    "data": {
      "json": {
        "company_mission": "AI 驱动的网页抓取与数据抽取",
      },
      "metadata": {
        "title": "Firecrawl",
        "description": "AI 驱动的网页抓取与数据抽取",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "AI 驱动的网页抓取与数据抽取",
        "ogUrl": "https://firecrawl.dev/",
        "ogImage": "https://firecrawl.dev/og.png",
        "ogLocaleAlternate": [],
        "ogSiteName": "Firecrawl",
        "sourceURL": "https://firecrawl.dev/"
      },
    }
}

使用操作与页面交互

Firecrawl 允许你在抓取页面内容之前在网页上执行各种操作。这对于处理动态内容、在页面间导航或访问需要用户交互的内容尤其有用。 下面是一个示例,展示如何使用操作访问 google.com,搜索 Firecrawl,点击第一个结果,并进行截图。 在执行其他操作前后,几乎总是需要使用 wait 操作,以留出足够的页面加载时间。

示例

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

doc = firecrawl.scrape('https://example.com/login', {
  formats=['markdown'],
  actions=[
    { type: 'write', text: 'john@example.com' },
    { type: 'press', key: 'Tab' },
    { type: 'write', text: 'secret' },
    { type: 'click', selector: 'button[type="submit"]' },
    { type: 'wait', milliseconds: 1500 },
    { type: 'screenshot', fullPage: true },
  ],
});

print(doc.markdown, doc.screenshot);

输出

{
  "success": true,
  "data": {
    "markdown": "我们的首次 Launch Week 已圆满结束![查看回顾 🚀](blog/firecrawl-launch-week-1-recap)...",
    "actions": {
      "screenshots": [
        "https://alttmdsdujxrfnakrkyi.supabase.co/storage/v1/object/public/media/screenshot-75ef2d87-31e0-4349-a478-fb432a29e241.png"
      ],
      "scrapes": [
        {
          "url": "https://www.firecrawl.dev/",
          "html": "<html><body><h1>Firecrawl</h1></body></html>"
        }
      ]
    },
    "metadata": {
      "title": "首页 - Firecrawl",
      "description": "Firecrawl 可抓取并将任意网站转换为干净的 Markdown。",
      "language": "en",
      "keywords": "Firecrawl,Markdown,数据,Mendable,LangChain",
      "robots": "follow, index",
      "ogTitle": "Firecrawl",
      "ogDescription": "将任意网站转换为适配 LLM 的数据。",
      "ogUrl": "https://www.firecrawl.dev/",
      "ogImage": "https://www.firecrawl.dev/og.png?123",
      "ogLocaleAlternate": [],
      "ogSiteName": "Firecrawl"
      "sourceURL": "http://google.com",
      "statusCode": 200
    }
  }
}

开源 vs 云端

Firecrawl 是一个开源项目,采用 AGPL-3.0 许可证 为提供最佳产品体验,我们在开源版本的同时提供托管版 Firecrawl。云端方案使我们能够持续创新,并为所有用户提供高质量、可持续的服务。 Firecrawl Cloud 可在 firecrawl.dev 使用,并提供一系列开源版本中不具备的功能:
Firecrawl Cloud vs Open Source

参与贡献

我们欢迎你的贡献!在提交 pull request 之前,请先阅读我们的贡献指南