安装
需要 PHP 8.1 或更高版本。
Laravel 集成
.env 文件中:
使用方式
- 从 firecrawl.dev 获取 API 密钥
- 将 API 密钥设置为名为
FIRECRAWL_API_KEY的环境变量,或通过FirecrawlClient::create(apiKey: ...)传入 API 密钥
使用 Laravel 门面
Firecrawl 门面,或通过依赖注入:
抓取 URL
scrape 方法。
JSON 提取
scrape 端点,使用 JsonFormat 提取结构化 JSON:
爬取网站
crawl。
开始爬取
startCrawl 启动任务,无需等待。
查看爬取状态
getCrawlStatus 查看爬取进度。
取消爬取
cancelCrawl 取消正在进行中的爬取。
爬取错误
getCrawlErrors 获取爬取过程中的错误 (如有) 。
网站映射
map 发现网站中的链接。
搜索网页
search 并可选配搜索设置进行搜索。
批量抓取
batchScrape 并行抓取多个 URL。
startBatchScrape、getBatchScrapeStatus 和 cancelBatchScrape:
代理
agent 运行 AI 代理。
startAgent、getAgentStatus 和 cancelAgent:
使用方式与指标
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.php 和 FIRECRAWL_API_KEY 配置可直接原样复用:
可用工具
这些工具名称与 Firecrawl MCP 服务器一致,因此代理在不同入口看到的术语也保持统一。可使用 spread helper 一次性注册这四个工具:
FirecrawlTools::all() 会将该客户端传给全部四个工具:
工具参数
超出范围的
limit 值不会被拒绝,而是会自动调整到最近的边界值,因此当模型请求 99 个搜索结果时,返回的是 20 个,而不是报错。
工具行为
firecrawl_search 和 firecrawl_map 返回 JSON 结果数组。firecrawl_scrape 以 markdown 格式返回页面。
抓取结果
firecrawl_crawl 最多会等待 55 秒让抓取完成,随后返回一个明确体现结果的 JSON 对象。失败、已取消或部分完成的抓取结果会通过 status 字段继续对模型可见,而不会被静默截断:
omittedPages 表示为控制在输出预算内而省略的页面数,note 则会告知模型服务器上还有更多页面,并提示它使用更小的 limit,或通过 firecrawl_scrape 抓取特定页面。该工具会报告分页信息,而不会继续跟随分页,因此需要获取大型爬取全部页面的代理应直接使用 FirecrawlClient。
如果 wait 到期时爬取仍在进行中,工具会明确说明,并提醒模型该爬取仍可能在服务器端继续完成。启动爬取时会附带一个 UUID 幂等键,因此 HTTP 层面的重试绝不会创建重复的爬取。
如果你的代理运行在排队任务中,请将爬取 limit 保持得较小,或提高 worker 的任务超时时间。wait、poll 频率和每页上限都是受保护属性,因此请通过继承该类来调整它们:
浏览器
创建会话
执行代码
与抓取任务绑定的交互式会话
interact(...)会在与抓取任务绑定的浏览器会话中运行代码 (首次使用时会自动初始化该会话) 。stopInteractiveBrowser(...)会在你使用完毕后显式停止该交互式会话。
列出并关闭会话
配置
FirecrawlClient::create() 支持以下选项:
自定义 HTTP 客户端
GuzzleHttp\ClientInterface 实现,用于控制连接池、中间件、代理设置及其他 HTTP 功能。提供该实现后,timeoutSeconds 设置将被忽略,改为以客户端自身的配置为准。
错误处理
Firecrawl\Exceptions 命名空间下的运行时异常。
你是需要 Firecrawl API 密钥的 AI 代理吗?请参见 firecrawl.dev/agent-onboarding/SKILL.md 了解自动化接入说明。

