主视觉(浅色)

欢迎使用 Firecrawl

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

如何使用?

我们提供易用的托管版 API。你可以在这里找到 Playground 和文档。你也可以选择自托管后端。 查看以下资源开始上手: 自托管: 自托管请参考此处的指南。

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")

# Scrape a website:
doc = firecrawl.scrape("https://firecrawl.dev", formats=["markdown", "html"])
print(doc)

响应

各 SDK 将直接返回数据对象。cURL 将按下方所示原样返回有效载荷。
{
  "success": true,
  "data" : {
    "markdown": "Launch Week I is here! [See our Day 2 Release 🚀](https://www.firecrawl.dev/blog/launch-week-i-day-2-doubled-rate-limits)[💥 Get 2 months free...",
    "html": "<!DOCTYPE html><html lang=\"en\" class=\"light\" style=\"color-scheme: light;\"><body class=\"__variable_36bd41 __variable_d7dc5d font-inter ...",
    "metadata": {
      "title": "Home - Firecrawl",
      "description": "Firecrawl crawls and converts any website into clean markdown.",
      "language": "en",
      "keywords": "Firecrawl,Markdown,Data,Mendable,Langchain",
      "robots": "follow, index",
      "ogTitle": "Firecrawl",
      "ogDescription": "Turn any website into LLM-ready data.",
      "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-powered web scraping and data extraction",
        "supports_sso": true,
        "is_open_source": true,
        "is_in_yc": true
      },
      "metadata": {
        "title": "Firecrawl",
        "description": "AI-powered web scraping and data extraction",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "AI-powered web scraping and data extraction",
        "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 - The Web Data API for AI",
        "description": "The web crawling, scraping, and search API for AI. Built for scale. Firecrawl delivers the entire internet to AI agents and builders.",
        "position": 1
      },
      {
        "url": "https://github.com/mendableai/firecrawl",
        "title": "mendableai/firecrawl: Turn entire websites into LLM-ready ... - GitHub",
        "description": "Firecrawl is an API service that takes a URL, crawls it, and converts it into clean markdown or structured data.",
        "position": 2
      },
      ...
    ],
    "images": [
      {
        "title": "Quickstart | 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 startup Firecrawl is ready to pay $1M to hire three AI agents as employees",
        "url": "https://techcrunch.com/2025/05/17/y-combinator-startup-firecrawl-is-ready-to-pay-1m-to-hire-three-ai-agents-as-employees/",
        "snippet": "It's now placed three new ads on YC's job board for “AI agents only” and has set aside a $1 million budget total to make it happen.",
        "date": "3 months ago",
        "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": "Extract the company mission from the page."
    }],
    only_main_content=False,
    timeout=120000
)

print(result)
输出:
JSON
{
    "success": true,
    "data": {
      "json": {
        "company_mission": "AI-powered web scraping and data extraction",
      },
      "metadata": {
        "title": "Firecrawl",
        "description": "AI-powered web scraping and data extraction",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "AI-powered web scraping and data extraction",
        "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": "Our first Launch Week is over! [See the recap 🚀](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": "Home - Firecrawl",
      "description": "Firecrawl crawls and converts any website into clean markdown.",
      "language": "en",
      "keywords": "Firecrawl,Markdown,Data,Mendable,Langchain",
      "robots": "follow, index",
      "ogTitle": "Firecrawl",
      "ogDescription": "Turn any website into LLM-ready data.",
      "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 之前,请先阅读我们的贡献指南