Skip to main content

PHP

Firecrawl PHP SDK は、Web サイトを簡単に Markdown に変換できる Firecrawl API のラッパーです。
3 min read

インストール#

公式PHP SDKは、Firecrawl の monorepo 内にある apps/php-sdk で管理されています。

Firecrawl PHP SDK をインストールするには、Composer で依存関係を追加します。

Note
PHP 8.1 以降が必要です。

Laravel 連携#

SDK は、自動検出に対応した Laravel 向けの充実したサポートを備えています。パッケージをインストールしたら、設定ファイルを公開してください。

次に、.env ファイルにAPIキーを追加してください:

以下の環境変数に対応しています:

変数デフォルト説明
FIRECRAWL_API_KEYお使いのFirecrawl APIキー (必須)
FIRECRAWL_API_URLhttps://api.firecrawl.devAPIのベースURL
FIRECRAWL_TIMEOUT300HTTPリクエストのタイムアウト (秒)
FIRECRAWL_MAX_RETRIES3一時的な障害に対する自動再試行回数
FIRECRAWL_BACKOFF_FACTOR0.5指数バックオフの係数 (秒)

使い方#

  1. firecrawl.dev でAPIキーを取得します
  2. APIキーを FIRECRAWL_API_KEY という名前の環境変数に設定するか、FirecrawlClient::create(apiKey: ...) に渡します

以下は、現在のSDK APIを使った簡単な例です。

Laravel ファサードの使用#

Laravel アプリケーションでは、Firecrawl ファサードまたは依存性注入を利用できます:

URLをスクレイピングする#

単一のURLをスクレイピングするには、scrape メソッドを使用します。

JSON抽出#

JsonFormat を使用して、scrape エンドポイントから構造化された JSON を抽出します:

Web サイトのクロール#

Web サイトをクロールして完了を待つには、crawl を使用します。

クロールを開始する#

結果を待たずにジョブを開始するには、startCrawl を使用します。

クロールのステータスを確認する#

getCrawlStatus を使ってクロールの進行状況を確認します。

クロールのキャンセル#

実行中のクロールは cancelCrawl を使ってキャンセルできます。

クロールエラー#

getCrawlErrors を使って、クロール単位のエラーがあれば取得できます。

Web サイトのマッピング#

map を使ってサイト内のリンクを検出します。

Web を検索#

search を使うと、任意の検索設定で検索できます。

バッチスクレイピング#

batchScrape で複数のURLを並列にスクレイピングします。

非同期処理を手動で制御するには、startBatchScrapegetBatchScrapeStatuscancelBatchScrape を使用します:

エージェント#

agent を使って AI エージェントを実行します。

構造化された出力用のJSON schema:

非同期を手動で制御するには、startAgentgetAgentStatuscancelAgent を使用します:

使用状況とメトリクス#

並列実行数と残りのクレジットを確認する:

Laravel AI SDK ツール#

この SDK には、Laravel AI SDK (laravel/ai) 向けのネイティブツールクラスが用意されており、エージェントは MCP Server や手動の HTTP 呼び出しなしで、Web のスクレイピング、検索、マップ、クロールを行えます。

Note
firecrawl/firecrawl-sdk 1.9.0 以降と、laravel/ai 0.9 以降 (PHP 8.3+、Laravel 12+) が必要です。ツールクラスは laravel/ai がインストールされている場合にのみ読み込まれます。

これらのツールはコンテナから FirecrawlClient を解決するため、既存の config/firecrawl.phpFIRECRAWL_API_KEY の設定をそのまま再利用できます:

利用可能なツール#

ClassTool nameできること
FirecrawlScrapefirecrawl_scrape1 つの URL をスクレイピングし、整形済みの markdown を返します
FirecrawlSearchfirecrawl_searchWeb を検索し、JSON 形式の結果を返します
FirecrawlMapfirecrawl_mapWeb サイト内の URL を見つけます
FirecrawlCrawlfirecrawl_crawl複数のページをクロールして markdown に変換します

ツール名は Firecrawl MCP server と一致しているため、エージェントはどのインターフェースでも同じ用語を使えます。スプレッドヘルパーを使うと、4 つすべてを一度に登録できます:

各ツールは、一時的な認証情報を使う場合やコンテナ外で利用する場合に備えて、明示的にクライアントを受け取ることもできます。FirecrawlTools::all() は、それを4つすべてのツールに渡します:

ツールのパラメータ#

各ツールは、モデル向けの小規模なスキーマを公開しています。エージェントが渡せるパラメータは次のとおりです。

ツールパラメータ説明
firecrawl_scrapeurl (required)スクレイピング対象ページの絶対 URL (スキームを含む)
firecrawl_searchquery (required)検索 query
limit返す結果の最大数。1~20。デフォルトは 5
firecrawl_mapurl (required)マップ対象の Web サイトのベース URL
search検出された URL を関連性で絞り込むための任意の語句
limit返す URL の最大数。1~500。デフォルトは 100
firecrawl_crawlurl (required)クロールの開始元となる URL
limitクロールするページの最大数。1~25。デフォルトは 5

範囲外の limit 値はエラーとして拒否されず、最も近い上限または下限に補正されます。たとえば、検索結果を 99 件要求したモデルには、エラーではなく 20 件が返されます。

ツールの動作#

レート制限、タイムアウト、無効な URL などのツールの失敗は、例外としてスローされるのではなく、人間が読めるエラー文字列としてモデルに返されるため、agent run が致命的に停止せず、適切に処理を継続できます。出力はモデルのコンテキスト内に収まるよう上限が設けられています。スクレイピング結果は 80,000 文字で切り詰められ、クロールしたページは各ページ 15,000 文字までに制限され、結果全体では 100,000 文字の上限があります。また、search と map の結果では、明示的な omitted マーカーを付けて末尾の項目が省略されます。

firecrawl_searchfirecrawl_map は、結果の JSON 配列を返します。firecrawl_scrape は、ページを Markdown として返します。

クロール結果#

firecrawl_crawl はクロールが完了するまで最大55秒待機し、その後、結果が明確にわかる JSON オブジェクトを返します。失敗・キャンセル・部分的なクロールも、暗黙のうちに切り捨てられることはなく、status フィールドを通じてモデルから確認できます。

結果が収まりきらない場合は、2つの任意フィールドが表示されます。omittedPages は出力上限内に収めるために省かれたページ数を示し、note はサーバー上にまだページが存在すること、また、より小さい limit を使うか firecrawl_scrape で特定のページをスクレイピングすべきことをモデルに伝えます。このツールはページネーションを追跡せず、ページネーションがあることを報告するだけなので、大規模なクロールの全ページが必要なエージェントは FirecrawlClient を直接使用してください。

wait の期限が切れた時点でクロールがまだ実行中の場合、ツールはその旨を伝え、そのクロールがサーバー側で引き続き完了する可能性があることをモデルに知らせます。クロール開始には UUID の冪等性キーが付与されるため、HTTP レベルで再試行しても重複したクロールは作成されません。

エージェントがキューに入った job 内で実行される場合は、クロールの limit を小さく保つか、worker の job timeout を延ばしてください。wait、poll の間隔、およびページごとの上限は protected プロパティなので、調整するにはクラスを拡張してください:

Browser#

PHP SDK には、ブラウザサンドボックスを利用するためのヘルパーが含まれています。

セッションの作成#

コードの実行#

スクレイピングに紐づくインタラクティブセッション#

同じリプレイコンテキストで後続のブラウザコードを実行するには、スクレイピングジョブ ID を使用します。

  • interact(...) は、スクレイピングに紐づくブラウザセッションでコードを実行します (初回使用時に初期化されます) 。
  • stopInteractiveBrowser(...) は、作業完了後にインタラクティブセッションを明示的に停止します。

セッションの一覧表示と終了#

設定#

FirecrawlClient::create() は、次のオプションに対応しています。

オプションデフォルト説明
apiKeystringFIRECRAWL_API_KEY 環境変数お使いの Firecrawl APIキー
apiUrlstringhttps://api.firecrawl.dev (または FIRECRAWL_API_URL)API のベース URL
timeoutSecondsfloat300HTTP リクエストのタイムアウト (秒)
maxRetriesint3一時的な障害に対する自動再試行回数
backoffFactorfloat0.5指数バックオフの係数 (秒)
httpClientGuzzleHttp\ClientInterfacetimeout 設定から構築カスタムの Guzzle 互換 HTTP クライアント

カスタムHTTPクライアント#

接続プーリング、ミドルウェア、プロキシ設定、その他のHTTP機能を制御するために、事前に設定したGuzzleHttp\ClientInterface実装を渡せます。これを指定すると、timeoutSeconds設定は無視され、代わりにクライアント側の設定が使用されます。

エラーハンドリング#

SDK は Firecrawl\Exceptions 配下の実行時例外をスローします。

Firecrawl APIキーが必要なAIエージェントの方は、自動オンボーディング手順について firecrawl.dev/agent-onboarding/SKILL.md を参照してください。