Skip to main content

安装

官方 PHP SDK 在 Firecrawl 的 monorepo 中维护,位于 apps/php-sdk 要安装 Firecrawl PHP SDK,请通过 Composer 添加此依赖:
需要 PHP 8.1 或更高版本。

Laravel 集成

该 SDK 提供对 Laravel 的原生支持,并支持自动发现。安装该软件包后,请发布配置文件:
然后将你的 API 密钥添加到 .env 文件中:
支持以下环境变量:

使用方式

  1. firecrawl.dev 获取 API 密钥
  2. 将 API 密钥设置为名为 FIRECRAWL_API_KEY 的环境变量,或通过 FirecrawlClient::create(apiKey: ...) 传入 API 密钥
以下是一个基于当前 SDK API 的简要示例:

使用 Laravel 门面

在 Laravel 应用中,可以使用 Firecrawl 门面,或通过依赖注入:

抓取 URL

如需抓取单个 URL,请使用 scrape 方法。

JSON 提取

通过 scrape 端点,使用 JsonFormat 提取结构化 JSON:

爬取网站

要爬取网站并等待其完成,请使用 crawl

开始爬取

使用 startCrawl 启动任务,无需等待。

查看爬取状态

使用 getCrawlStatus 查看爬取进度。

取消爬取

使用 cancelCrawl 取消正在进行中的爬取。

爬取错误

使用 getCrawlErrors 获取爬取过程中的错误 (如有) 。

网站映射

使用 map 发现网站中的链接。

搜索网页

使用 search 并可选配搜索设置进行搜索。

批量抓取

使用 batchScrape 并行抓取多个 URL。
如需手动控制异步流程,请使用 startBatchScrapegetBatchScrapeStatuscancelBatchScrape

代理

使用 agent 运行 AI 代理。
使用结构化输出的 JSON schema:
如需手动控制异步执行,请使用 startAgentgetAgentStatuscancelAgent

使用方式与指标

查看并发数和剩余额度:

Laravel AI SDK 工具

该 SDK 内置了适用于 Laravel AI SDK (laravel/ai) 的原生工具类,因此代理无需 MCP 服务器 或手动发起 HTTP 调用,即可抓取、搜索、映射和爬取网页。
需要 firecrawl/firecrawl-sdk 1.9.0 或更高版本,以及 laravel/ai 0.9 或更高版本 (PHP 8.3+、Laravel 12+) 。这些工具类仅在安装了 laravel/ai 后才会加载。
这些工具会从容器中解析出 FirecrawlClient,因此你现有的 config/firecrawl.phpFIRECRAWL_API_KEY 配置可直接原样复用:

可用工具

这些工具名称与 Firecrawl MCP 服务器一致,因此代理在不同入口看到的术语也保持统一。可使用 spread helper 一次性注册这四个工具:
每个工具也都支持显式传入客户端,适用于临时凭证或在容器外部使用。FirecrawlTools::all() 会将该客户端传给全部四个工具:

工具参数

每个工具都会提供一个面向模型的小型 schema。以下是代理可传递的参数: 超出范围的 limit 值不会被拒绝,而是会自动调整到最近的边界值,因此当模型请求 99 个搜索结果时,返回的是 20 个,而不是报错。

工具行为

限流、超时和无效 URL 等工具故障不会以抛出异常的形式处理,而是作为可读的错误字符串返回给模型,因此代理运行可以优雅降级。为保持在模型上下文范围内,输出大小会受到限制:scrape 结果会截断至 80,000 个字符;crawl 结果在总结果预算为 100,000 个字符的前提下,每页截断至 15,000 个字符;search 和 map 结果则会移除末尾条目,并用明确的标记说明有内容被省略。 firecrawl_searchfirecrawl_map 返回 JSON 结果数组。firecrawl_scrape 以 markdown 格式返回页面。

抓取结果

firecrawl_crawl 最多会等待 55 秒让抓取完成,随后返回一个明确体现结果的 JSON 对象。失败、已取消或部分完成的抓取结果会通过 status 字段继续对模型可见,而不会被静默截断:
当结果装不下时,会出现两个可选字段:omittedPages 表示为控制在输出预算内而省略的页面数,note 则会告知模型服务器上还有更多页面,并提示它使用更小的 limit,或通过 firecrawl_scrape 抓取特定页面。该工具会报告分页信息,而不会继续跟随分页,因此需要获取大型爬取全部页面的代理应直接使用 FirecrawlClient 如果 wait 到期时爬取仍在进行中,工具会明确说明,并提醒模型该爬取仍可能在服务器端继续完成。启动爬取时会附带一个 UUID 幂等键,因此 HTTP 层面的重试绝不会创建重复的爬取。 如果你的代理运行在排队任务中,请将爬取 limit 保持得较小,或提高 worker 的任务超时时间。wait、poll 频率和每页上限都是受保护属性,因此请通过继承该类来调整它们:

浏览器

PHP SDK 提供了 浏览器 Sandbox 辅助函数。

创建会话

执行代码

与抓取任务绑定的交互式会话

使用抓取任务 ID,在同一重放上下文中运行后续浏览器代码:
  • interact(...) 会在与抓取任务绑定的浏览器会话中运行代码 (首次使用时会自动初始化该会话) 。
  • stopInteractiveBrowser(...) 会在你使用完毕后显式停止该交互式会话。

列出并关闭会话

配置

FirecrawlClient::create() 支持以下选项:

自定义 HTTP 客户端

你可以传入一个预先配置的 GuzzleHttp\ClientInterface 实现,用于控制连接池、中间件、代理设置及其他 HTTP 功能。提供该实现后,timeoutSeconds 设置将被忽略,改为以客户端自身的配置为准。

错误处理

SDK 会抛出位于 Firecrawl\Exceptions 命名空间下的运行时异常。
你是需要 Firecrawl API 密钥的 AI 代理吗?请参见 firecrawl.dev/agent-onboarding/SKILL.md 了解自动化接入说明。