# スクレイピング後にページをInteract (/ja/features/interact)

<!-- agent-signals: reading_time_min: 16 · est_tokens: 10444 · updated: 2026-07-31 -->

ページをスクレイピングしてクリーンなデータを取得し、その後 `/interact` を呼び出して、そのページ上でアクションを開始します: ボタンのクリック、フォームへの入力、動的コンテンツの抽出、さらに深いページへの移動が可能です。やりたいことを記述するだけでもよく、完全に制御したい場合はコードを書くこともできます。

<div className="firecrawl-cta-box">
  <div style="{ display: &#x22;flex&#x22;, alignItems: &#x22;flex-start&#x22;, gap: &#x22;8px&#x22;, marginBottom: &#x22;8px&#x22; }">
    <Icon icon="<svg xmlns=&#x22;http://www.w3.org/2000/svg&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22;><path d=&#x22;M8 7L16 7&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M8 11L12 11&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M13 21.5V21C13 18.1716 13 16.7574 13.8787 15.8787C14.7574 15 16.1716 15 19 15H19.5M20 13.3431V10C20 6.22876 20 4.34315 18.8284 3.17157C17.6569 2 15.7712 2 12 2C8.22877 2 6.34315 2 5.17157 3.17157C4 4.34314 4 6.22876 4 10L4 14.5442C4 17.7892 4 19.4117 4.88607 20.5107C5.06508 20.7327 5.26731 20.9349 5.48933 21.1139C6.58831 22 8.21082 22 11.4558 22C12.1614 22 12.5141 22 12.8372 21.886C12.9044 21.8623 12.9702 21.835 13.0345 21.8043C13.3436 21.6564 13.593 21.407 14.0919 20.9081L18.8284 16.1716C19.4065 15.5935 19.6955 15.3045 19.8478 14.9369C20 14.5694 20 14.1606 20 13.3431Z&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/></svg>" color="#ff4d00" size="22" />

    <div className="firecrawl-cta-title" style="{ margin: 0 }">
      <span style="{ color: &#x22;#ff4d00&#x22; }">
        報奨金：5,000クレジット
      </span>

      <span style="{ fontWeight: 400 }">
         /interact に関する質の高いフィードバックに進呈
      </span>
    </div>
  </div>

  <p className="firecrawl-cta-description">
    対象となるには、Firecrawl Feedback Assistant との内容の濃いインタビュー (よく考えられた具体的なユースケースなど) を完了してください。所要時間は数分で、いつでも中断できます。人間にもエージェントにも対応しており (リンクをエージェント用ハーネスに貼り付けるだけです！) 、/interact を使ったことがない場合でも、ご意見をお聞かせください。
  </p>

  <a href="&#x22;https://www.firecrawl.dev/survey/ogu30?src=&#x22; + (props.src || &#x22;docs-interact&#x22;)" className="firecrawl-cta-btn-primary firecrawl-cta-btn-inline">
    インタビューを開始
  </a>

  <p className="firecrawl-cta-description" style="{ fontSize: &#x22;12px&#x22;, fontStyle: &#x22;italic&#x22;, margin: &#x22;12px 0 0 0&#x22; }">
    報奨金の対象となるには、メールアドレスを入力してください。インタビューは毎週末に品質を確認します。
  </p>
</div>

<div id="choose-the-right-interaction-model">
  ## 適切な操作モデルを選択 [#適切な操作モデルを選択]
</div>

| 必要なこと                           | 使用するもの                                | 正規ドキュメント                                                                                                                                                                                                                                                                                                                |
| ------------------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 最初にスクレイピングせず、独立したブラウザセッションを開始する | Browser Sandbox / 独立した Interact セッション | [Browser Sandbox](/ja/features/browser), [Create Browser Session](/ja/api-reference/endpoint/browser-create), [Execute Browser Code](/ja/api-reference/endpoint/browser-execute), [List Browser Sessions](/ja/api-reference/endpoint/browser-list), [Delete Browser Session](/ja/api-reference/endpoint/browser-delete) |
| `scrapeId` を使ってスクレイピング結果から続行する  | スクレイピング後に Interact                    | [Execute Interact](/ja/api-reference/endpoint/scrape-execute), [Stop Interact](/ja/api-reference/endpoint/scrape-browser-delete)                                                                                                                                                                                        |

ワークフローが `POST /v2/scrape` で始まり、レスポンスに `data.metadata.scrapeId` が含まれる場合は、スクレイピングに紐づいた Interact を使用します。独自のライフサイクルを持つ独立したセッションが必要な場合は、Browser Sandbox を使用します。

<CardGroup cols="3">
  <Card title="AIプロンプト" icon="<svg xmlns=&#x22;http://www.w3.org/2000/svg&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22;><path d=&#x22;M8 7L16 7&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M8 11L12 11&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M13 21.5V21C13 18.1716 13 16.7574 13.8787 15.8787C14.7574 15 16.1716 15 19 15H19.5M20 13.3431V10C20 6.22876 20 4.34315 18.8284 3.17157C17.6569 2 15.7712 2 12 2C8.22877 2 6.34315 2 5.17157 3.17157C4 4.34314 4 6.22876 4 10L4 14.5442C4 17.7892 4 19.4117 4.88607 20.5107C5.06508 20.7327 5.26731 20.9349 5.48933 21.1139C6.58831 22 8.21082 22 11.4558 22C12.1614 22 12.5141 22 12.8372 21.886C12.9044 21.8623 12.9702 21.835 13.0345 21.8043C13.3436 21.6564 13.593 21.407 14.0919 20.9081L18.8284 16.1716C19.4065 15.5935 19.6955 15.3045 19.8478 14.9369C20 14.5694 20 14.1606 20 13.3431Z&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/></svg>">
    ページ上で実行したいアクションを記述します
  </Card>

  <Card title="コード実行" icon="<svg xmlns=&#x22;http://www.w3.org/2000/svg&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22;><path d=&#x22;M16 6.99998L19.0664 9.64296C20.3554 10.7541 21 11.3096 21 12C21 12.6903 20.3555 13.2459 19.0664 14.357L16 17&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M8 6.99998L4.93365 9.64296C3.64455 10.7541 3 11.3096 3 12C3 12.6903 3.64455 13.2459 4.93365 14.357L8 17&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/></svg>">
    Playwright や agent-browser を使って、安全にコード実行で操作できます
  </Card>

  <Card title="ライブビュー" icon="<svg xmlns=&#x22;http://www.w3.org/2000/svg&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22;><path d=&#x22;M2 8C2 8 6.47715 3 12 3C17.5228 3 22 8 22 8&#x22; stroke=&#x22;currentColor&#x22; stroke-linecap=&#x22;round&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M21.544 13.045C21.848 13.4713 22 13.6845 22 14C22 14.3155 21.848 14.5287 21.544 14.955C20.1779 16.8706 16.6892 21 12 21C7.31078 21 3.8221 16.8706 2.45604 14.955C2.15201 14.5287 2 14.3155 2 14C2 13.6845 2.15201 13.4713 2.45604 13.045C3.8221 11.1294 7.31078 7 12 7C16.6892 7 20.1779 11.1294 21.544 13.045Z&#x22; stroke=&#x22;currentColor&#x22; stroke-width=&#x22;1.5&#x22;/><path d=&#x22;M15 14C15 12.3431 13.6569 11 12 11C10.3431 11 9 12.3431 9 14C9 15.6569 10.3431 17 12 17C13.6569 17 15 15.6569 15 14Z&#x22; stroke=&#x22;currentColor&#x22; stroke-width=&#x22;1.5&#x22;/></svg>">
    埋め込み可能なストリームを通じて、ブラウザーをリアルタイムで確認したり操作したりできます
  </Card>
</CardGroup>

<div id="how-it-works">
  ## 動作の仕組み [#動作の仕組み]
</div>

1. `POST /v2/scrape` で URL を**スクレイピング**します。レスポンスには `data.metadata.scrapeId` に `scrapeId` が含まれます。ブラウザの状態を保持したい場合は、このリクエストで `profile` を渡します。
2. `prompt` または Playwright の `code` を指定して `POST /v2/scrape/{scrapeId}/interact` を呼び出し、**Interact**します。ここでは `profile` を渡さないでください。Interact セッションはスクレイピングジョブから `profile` を引き継ぎます。
3. 完了したら、`DELETE /v2/scrape/{scrapeId}/interact` でセッションを**停止**します。書き込み可能な `profile` では、セッションの停止時に変更が保存されます。

<div id="quick-start">
  ## クイックスタート [#クイックスタート]
</div>

ページをスクレイピングし、操作し、セッションを停止します:

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      app = Firecrawl(
        # 開始にAPIキーは不要です — より高いレート制限のために追加してください:
        # api_key="fc-YOUR-API-KEY",
      )

      # 1. Amazonのホームページをスクレイピング
      result = app.scrape("https://www.amazon.com", formats=["markdown"])
      scrape_id = result.metadata.scrape_id

      # 2. インタラクト — 商品を検索して価格を取得
      app.interact(scrape_id, prompt="Search for iPhone 16 Pro Max")
      response = app.interact(scrape_id, prompt="Click on the first result and tell me the price")
      print(response.output)

      # 3. セッションを停止
      app.stop_interaction(scrape_id)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const app = new Firecrawl({
        // 開始にAPIキーは不要です — レート制限を引き上げるには追加してください:
        // apiKey: 'fc-YOUR-API-KEY',
      });

      // 1. Scrape Amazon's homepage
      const result = await app.scrape('https://www.amazon.com', { formats: ['markdown'] });
      const scrapeId = result.metadata?.scrapeId;

      // 2. Interact — search for a product and get its price
      await app.interact(scrapeId, { prompt: 'Search for iPhone 16 Pro Max' });
      const response = await app.interact(scrapeId, { prompt: 'Click on the first result and tell me the price' });
      console.log(response.output);

      // 3. Stop the session
      await app.stopInteraction(scrapeId);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # 1. Amazonのホームページをスクレイピングする
      # 開始時にAPI keyは不要 — より高いレート制限を利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
        -H "Content-Type: application/json" \
        -d '{"url": "https://www.amazon.com", "formats": ["markdown"]}')

      SCRAPE_ID=$(echo $RESPONSE | jq -r '.data.metadata.scrapeId')

      # 2. インタラクト — 商品を検索して価格を取得する
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{"prompt": "Search for iPhone 16 Pro Max"}'

      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{"prompt": "Click on the first result and tell me the price"}'

      # 3. セッションを停止する
      curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact"
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # 1. AmazonのホームページをスクレイピングするスクレイピングIDは自動的に保存されます）
      firecrawl scrape https://www.amazon.com

      # 2. 操作する — 商品を検索して価格を取得する
      firecrawl interact "Search for iPhone 16 Pro Max"
      firecrawl interact "Click on the first result and tell me the price"

      # 3. セッションを停止する
      firecrawl interact stop
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

```json title="Response"
{
  "success": true,
  "cdpUrl": "wss://browser.firecrawl.dev/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "output": "The iPhone 16 Pro Max (256GB) is priced at $1,199.00.",
  "exitCode": 0,
  "killed": false
}
```

<div id="interact-via-prompting">
  ## プロンプトで操作する [#プロンプトで操作する]
</div>

ページを操作する最も簡単な方法です。やりたいことを自然言語で記述するだけで、自動的にクリック、入力、スクロール、データの抽出を行います。

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      response = app.interact(scrape_id, prompt="What are the customer reviews saying about battery life?")
      print(response.output)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      const response = await app.interact(scrapeId, {
        prompt: 'What are the customer reviews saying about battery life?',
      });
      console.log(response.output);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # 開始するためにAPIキーは不要です — より高いrate limitsを利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{
          "prompt": "What are the customer reviews saying about battery life?"
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      firecrawl interact "What are the customer reviews saying about battery life?"
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

レスポンスには、エージェントの回答が含まれる `output` フィールドがあります。

```json title="Response"
{
  "success": true,
  "cdpUrl": "wss://browser.firecrawl.dev/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "output": "Customers are generally positive about battery life. Most reviewers report 8-10 hours of use on a single charge. A few noted it drains faster with heavy multitasking.",
  "stdout": "...",
  "result": "...",
  "stderr": "",
  "exitCode": 0,
  "killed": false
}
```

<div id="keep-prompts-small-and-focused">
  ### プロンプトは小さく、焦点を絞る [#プロンプトは小さく焦点を絞る]
</div>

プロンプトは、それぞれが**単一の明確なタスク**であるときに最も効果を発揮します。エージェントに複雑な複数ステップのワークフローを一度に実行させるのではなく、個別の `interact` 呼び出しに分けてください。各呼び出しは同じブラウザセッションを再利用するため、それまでの状態が引き継がれます。

<div id="running-code">
  ## コードの実行 [#コードの実行]
</div>

より細かく制御したい場合は、ブラウザサンドボックスでコードを直接実行できます。`page` 変数 (Playwright の Page オブジェクト) は Node.js と Python で利用できます。Bash モードには [agent-browser](https://github.com/vercel-labs/agent-browser) がプリインストールされています。セッション内でスクリーンショットを撮ることもできます: Node.js では `(await page.screenshot()).toString("base64")`、Python では `await page.screenshot(path="/tmp/screenshot.png")`、Bash では `agent-browser screenshot` を使用してください。

<div id="nodejs-playwright">
  ### Node.js (Playwright) [#nodejs-playwright]
</div>

デフォルトの言語です。Playwright のコードを直接記述できます。`page` はすでにブラウザに接続されています。

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      response = app.interact(scrape_id, code="""
      // ボタンをクリックしてナビゲーションを待機
      await page.click('#next-page');
      await page.waitForLoadState('networkidle');

      // 新しいページからコンテンツを取得
      const title = await page.title();
      const content = await page.$eval('.article-body', el => el.textContent);
      JSON.stringify({ title, content });
      """)
      print(response.result)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      const response = await app.interact(scrapeId, {
        code: `
          // ボタンをクリックしてナビゲーションを待機する
          await page.click('#next-page');
          await page.waitForLoadState('networkidle');

          // 新しいページからコンテンツを抽出する
          const title = await page.title();
          const content = await page.$eval('.article-body', el => el.textContent);
          JSON.stringify({ title, content });
        `,
      });
      console.log(response.result);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # 開始するためにAPI keyは不要です — より高いrate limitsを利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{
          "code": "await page.click(\"#next-page\"); await page.waitForLoadState(\"networkidle\"); const title = await page.title(); JSON.stringify({ title });",
          "language": "node",
          "timeout": 30
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # 最後のスクレイピングを自動的に使用する
      firecrawl interact -c "
        await page.click('#next-page');
        await page.waitForLoadState('networkidle');
        const title = await page.title();
        const content = await page.\$eval('.article-body', el => el.textContent);
        JSON.stringify({ title, content });
      "

      # またはスクレイピングIDを明示的に渡す
      # firecrawl interact <scrape-id> -c "await page.title()"
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="python">
  ### Python [#python]
</div>

Playwright の Python API を使う場合は、`language` を `"python"` に設定します。

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      response = app.interact(
          scrape_id,
          code="""
      import json

      await page.click('#load-more')
      await page.wait_for_load_state('networkidle')

      items = await page.query_selector_all('.item')
      data = []
      for item in items:
          text = await item.text_content()
          data.append(text.strip())

      print(json.dumps(data))
      """,
          language="python",
      )
      print(response.stdout)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      const response = await app.interact(scrapeId, {
        code: `
      import json

      await page.click('#load-more')
      await page.wait_for_load_state('networkidle')

      items = await page.query_selector_all('.item')
      data = []
      for item in items:
          text = await item.text_content()
          data.append(text.strip())

      print(json.dumps(data))
      `,
        language: 'python',
      });
      console.log(response.stdout);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # 開始にAPIキーは不要です — より高いrate limitsを利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{
          "code": "import json\nawait page.click(\"#load-more\")\nawait page.wait_for_load_state(\"networkidle\")\nitems = await page.query_selector_all(\".item\")\ndata = [await i.text_content() for i in items]\nprint(json.dumps(data))",
          "language": "python"
        }'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      firecrawl interact --python -c "
      import json
      await page.click('#load-more')
      await page.wait_for_load_state('networkidle')
      items = await page.query_selector_all('.item')
      data = [await i.text_content() for i in items]
      print(json.dumps(data))
      "
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="bash-agent-browser">
  ### Bash (agent-browser) [#bash-agent-browser]
</div>

[agent-browser](https://github.com/vercel-labs/agent-browser) は、60 以上のコマンドがプリインストールされたサンドボックス内の CLI です。要素参照 (`@e1`, `@e2`, ...) 付きのアクセシビリティツリーを提供し、LLM による自動化に最適です。

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      # インタラクティブな要素を確認するためにスナップショットを取得する
      snapshot = app.interact(
          scrape_id,
          code="agent-browser snapshot -i",
          language="bash",
      )
      print(snapshot.stdout)
      # 出力:
      # [document]
      #   @e1 [input type="text"] "Search..."
      #   @e2 [button] "Search"
      #   @e3 [link] "About"

      # @refs を使用して要素を操作する
      app.interact(
          scrape_id,
          code='agent-browser fill @e1 "firecrawl" && agent-browser click @e2',
          language="bash",
      )
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      // インタラクティブな要素を確認するためにスナップショットを取得する
      const snapshot = await app.interact(scrapeId, {
        code: 'agent-browser snapshot -i',
        language: 'bash',
      });
      console.log(snapshot.stdout);
      // Output:
      // [document]
      //   @e1 [input type="text"] "Search..."
      //   @e2 [button] "Search"
      //   @e3 [link] "About"

      // @refs を使用して要素を操作する
      await app.interact(scrapeId, {
        code: 'agent-browser fill @e1 "firecrawl" && agent-browser click @e2',
        language: 'bash',
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # インタラクティブな要素を確認するためにスナップショットを取得する
      # 開始するにはAPIキーは不要です — より高いレート制限を利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{"code": "agent-browser snapshot -i", "language": "bash"}'

      # Interact with elements using @refs
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{"code": "agent-browser fill @e1 \"firecrawl\" && agent-browser click @e2", "language": "bash"}'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # インタラクティブな要素を確認するためにスナップショットを取得する
      firecrawl interact --bash -c "agent-browser snapshot -i"

      # @refs を使用して要素を操作する
      firecrawl interact --bash -c 'agent-browser fill @e1 "firecrawl" && agent-browser click @e2'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

一般的な agent-browser コマンド:

| コマンド                      | 説明                    |
| ------------------------- | --------------------- |
| `snapshot`                | 要素参照付きの完全なアクセシビリティツリー |
| `snapshot -i`             | インタラクティブな要素のみ         |
| `click @e1`               | 参照で要素をクリック            |
| `fill @e1 "text"`         | フィールドをクリアしてテキストを入力    |
| `type @e1 "text"`         | クリアせずにテキストを入力         |
| `press Enter`             | キーボードのキーを押す           |
| `scroll down 500`         | 500 ピクセル下にスクロール       |
| `get text @e1`            | テキストコンテンツを取得          |
| `get url`                 | 現在の URL を取得           |
| `wait @e1`                | 要素が表示されるまで待機          |
| `wait --load networkidle` | ネットワークがアイドル状態になるまで待機  |
| `find text "X" click`     | テキストで要素を見つけてクリック      |
| `screenshot`              | 現在のページのスクリーンショットを撮る   |
| `eval "js code"`          | ページ内で JavaScript を実行  |

<div id="live-view">
  ## ライブビュー [#ライブビュー]
</div>

すべての Interact レスポンスでは、埋め込んでブラウザをリアルタイムで確認できる `liveViewUrl` が返されます。デバッグやデモ、ブラウザ駆動の UI の構築に便利です。

```json title="Response"
{
  "success": true,
  "cdpUrl": "wss://browser.firecrawl.dev/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "stdout": "",
  "result": "...",
  "exitCode": 0
}
```

```html
<iframe src="LIVE_VIEW_URL" width="100%" height="600" />
```

<div id="interactive-live-view">
  ### インタラクティブ ライブビュー [#インタラクティブ-ライブビュー]
</div>

レスポンスには `interactiveLiveViewUrl` も含まれます。閲覧専用の標準ライブビューとは異なり、インタラクティブ ライブビューでは、埋め込みストリームを通じてユーザーがブラウザセッションを直接クリック、入力、操作できます。これは、ログインフローや、エンドユーザーがブラウザを操作する必要があるガイド付きワークフローなど、ユーザー向けのブラウザUIを構築する場合に役立ちます。

```html
<iframe src="INTERACTIVE_LIVE_VIEW_URL" width="100%" height="600" />
```

<div id="cdp-url">
  ### CDP URL [#cdp-url]
</div>

すべてのInteractレスポンスでは、`cdpUrl` も返されます。これは、ブラウザセッション用の生の Chrome DevTools Protocol (CDP) WebSocket URL です。これを使うと、Playwright、Puppeteer、または任意のCDPクライアントからライブセッションに直接接続し、自分のコードでブラウザを操作できます。

```js
import { chromium } from "playwright";

const browser = await chromium.connectOverCDP(cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0];
```

<div id="session-lifecycle">
  ## セッションのライフサイクル [#セッションのライフサイクル]
</div>

<div id="creation">
  ### 作成 [#作成]
</div>

最初の `POST /v2/scrape/{scrapeId}/interact` 呼び出しで、スクレイピングセッションが継続され、インタラクションが開始されます。

<div id="reuse">
  ### 再利用 [#再利用]
</div>

同じ`scrapeId`に対する後続のinteract呼び出しでは、既存のセッションが再利用されます。browserは開いたままで、呼び出し間でも状態が維持されるため、複数のインタラクションを連続して実行できます。

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      # 最初の呼び出し: タブをクリック
      app.interact(scrape_id, code="await page.click('#tab-2')")

      # 2回目の呼び出し: タブは引き続き選択されたままで、その内容を抽出
      result = app.interact(scrape_id, code="await page.$eval('#tab-2-content', el => el.textContent)")
      print(result.result)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      // 最初の呼び出し: タブをクリック
      await app.interact(scrapeId, { code: "await page.click('#tab-2')" });

      // 2回目の呼び出し: タブは引き続き選択されたままで、その内容を抽出
      const result = await app.interact(scrapeId, {
        code: "await page.$eval('#tab-2-content', el => el.textContent)",
      });
      console.log(result.result);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # 最初の呼び出し: タブをクリック
      firecrawl interact -c "await page.click('#tab-2')"

      # 2回目の呼び出し: タブは引き続き選択されたままで、その内容を抽出
      firecrawl interact -c "await page.\$eval('#tab-2-content', el => el.textContent)"
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="cleanup">
  ### クリーンアップ [#クリーンアップ]
</div>

使用が終わったら、明示的にセッションを停止してください:

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      app.stop_interaction(scrape_id)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      await app.stopInteraction(scrapeId);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # 開始にAPI keyは不要です — より高いrate limitsを利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact"
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # 最後のスクレイピングセッションを停止する
      firecrawl interact stop

      # またはIDで特定のセッションを停止する
      # firecrawl interact stop <scrape-id>
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

セッションは、TTL (default: 10分) または非アクティブ timeout (default: 5分) に基づいて自動的に期限切れになります。

<Warning>
  不要な課金を避けるため、使用後は必ずセッションを停止してください。Credits は秒単位で按分されます。
</Warning>

<div id="persistent-profiles-with-scrape-interact">
  ## Scrape + Interact での永続プロファイル [#scrape--interact-での永続プロファイル]
</div>

デフォルトでは、各スクレイピング + interact セッションはクリーンなブラウザで開始されます。`profile` を使うと、スクレイピング間でブラウザの状態 (cookies、localStorage、sessions) を保存して再利用できます。これは、ログイン状態を維持したり、設定を保持したりするのに便利です。

最初の `POST /v2/scrape` リクエストに `profile` オブジェクトを渡します。`POST /v2/scrape/{scrapeId}/interact` には `profile` を渡さないでください。interact セッションは、scrape ジョブのブラウザセッションとプロファイル設定を再利用します。書き込み可能なプロファイルの変更を保存できるように、`DELETE /v2/scrape/{scrapeId}/interact` で interact セッションを停止してください。

```bash title="cURL"
curl -X POST "https://api.firecrawl.dev/v2/scrape" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "profile": {
      "name": "my-profile",
      "saveChanges": true
    }
  }'

curl -X POST "https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Click the login button"
  }'

curl -X DELETE "https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact" \
  -H "Authorization: Bearer fc-YOUR_API_KEY"
```

プロファイルのライフサイクルは次のとおりです。

1. `profile.name` と `saveChanges: true` を指定してスクレイピングを作成します。
2. 返された `scrapeId` に対して、プロンプトまたはコードで操作を実行します。
3. セッションを停止して、cookies、localStorage、その他のブラウザの状態を保存します。
4. 後続のスクレイピングを同じ `profile.name` で開始します。変更を書き戻さずに既存の状態だけを読み取りたい場合は、`saveChanges: false` を使用します。

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="cli+curl+node+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="CLI">
        CLI
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      app = Firecrawl(
        # 開始にAPI keyは不要です — より高いレート制限のために追加してください:
        # api_key="fc-YOUR-API-KEY",
      )

      # セッション1: プロファイルでスクレイピングし、ログインして停止（状態は保存される）
      result = app.scrape(
          "https://app.example.com/login",
          formats=["markdown"],
          profile={"name": "my-app", "save_changes": True},
      )
      scrape_id = result.metadata.scrape_id

      app.interact(scrape_id, prompt="Fill in user@example.com and password, then click Login")
      app.stop_interaction(scrape_id)

      # セッション2: 同じプロファイルで読み取り専用モードでスクレイピング — すでにログイン済み
      result = app.scrape(
          "https://app.example.com/dashboard",
          formats=["markdown"],
          profile={"name": "my-app", "save_changes": False},
      )
      scrape_id = result.metadata.scrape_id

      response = app.interact(scrape_id, prompt="Extract the dashboard data")
      print(response.output)
      app.stop_interaction(scrape_id)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const app = new Firecrawl({
        // 開始にAPIキーは不要です — より高いレート制限のために追加してください:
        // apiKey: 'fc-YOUR-API-KEY',
      });

      // Session 1: Scrape with a profile, log in, then stop (state is saved)
      const result1 = await app.scrape('https://app.example.com/login', {
        formats: ['markdown'],
        profile: { name: 'my-app', saveChanges: true },
      });
      const scrapeId1 = result1.metadata?.scrapeId;

      await app.interact(scrapeId1, { prompt: 'Fill in user@example.com and password, then click Login' });
      await app.stopInteraction(scrapeId1);

      // セッション2: 同じプロファイルで読み取り専用モードでスクレイピング — すでにログイン済み
      const result2 = await app.scrape('https://app.example.com/dashboard', {
        formats: ['markdown'],
        profile: { name: 'my-app', saveChanges: false },
      });
      const scrapeId2 = result2.metadata?.scrapeId;

      const response = await app.interact(scrapeId2, { prompt: 'Extract the dashboard data' });
      console.log(response.output);
      await app.stopInteraction(scrapeId2);
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      # Session 1: Scrape with a profile
      # 開始にAPI キーは不要 — より高いレート制限を利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
      RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
        -H "Content-Type: application/json" \
        -d '{
          "url": "https://app.example.com/login",
          "formats": ["markdown"],
          "profile": { "name": "my-app", "saveChanges": true }
        }')

      SCRAPE_ID=$(echo $RESPONSE | jq -r '.data.metadata.scrapeId')

      # Log in via interact
      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{"prompt": "Fill in user@example.com and password, then click Login"}'

      # 停止 — 状態はプロファイルに保存される
      curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact"

      # セッション2: 読み取り専用モードで同じプロファイルを使用して再度スクレイピング — すでにログイン済み
      RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
        -H "Content-Type: application/json" \
        -d '{
          "url": "https://app.example.com/dashboard",
          "formats": ["markdown"],
          "profile": { "name": "my-app", "saveChanges": false }
        }')

      SCRAPE_ID=$(echo $RESPONSE | jq -r '.data.metadata.scrapeId')

      curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
        -H "Content-Type: application/json" \
        -d '{"prompt": "Extract the dashboard data"}'
      ```
    </CodeBlockTab>

    <CodeBlockTab value="CLI">
      ```bash  
      # セッション1: プロファイルでスクレイピングし、ログインして停止する（状態は保存される）
      firecrawl scrape https://app.example.com/login --profile my-app
      firecrawl interact "Fill in user@example.com and password, then click Login"
      firecrawl interact stop

      # セッション2: 同じプロファイルでスクレイピング — すでにログイン済み
      firecrawl scrape https://app.example.com/dashboard --profile my-app
      firecrawl interact "Extract the dashboard data"
      firecrawl interact stop

      # 読み取り専用: 変更を保存せずにプロファイルの状態を読み込む
      firecrawl scrape https://app.example.com/dashboard --profile my-app --no-save-changes
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

| パラメータ         | デフォルト  | 説明                                                                                                                        |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| `name`        | None   | 永続プロファイルの名前です。同じ名前のスクレイピングはブラウザの状態を共有します。                                                                                 |
| `saveChanges` | `true` | `true` の場合、interact セッションの停止時にブラウザの状態がプロファイルに保存されます。既存のデータを読み込み、変更を書き戻さないようにするには、`false` に設定します。これは、複数の同時リーダーが必要な場合に便利です。 |

<Note>
  一度にプロファイルへ保存できるセッションは 1 つだけです。別のセッションがすでに保存中の場合は、`409` エラーが返されます。`saveChanges: false` で同じプロファイルを開くことはできますし、後でもう一度試すこともできます。
</Note>

ブラウザの状態は、interact セッションが停止したときに保存されます。プロファイルを再利用できるよう、完了したら必ずセッションを停止してください。

<div id="validate-persistence">
  ### 永続化の検証 [#永続化の検証]
</div>

実際のログインフローに頼らずに永続化をテストするには、1つ目のセッションで `localStorage` に値を書き込み、そのセッションを停止したあと、同じプロファイルを使う2つ目のセッションでその値を読み取ります。

```bash title="cURL"
# セッション1: ブラウザの状態を書き込んで保存する
RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "profile": { "name": "profile-validation", "saveChanges": true }
  }')

SCRAPE_ID=$(echo "$RESPONSE" | jq -r ".data.metadata.scrapeId")

curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "await page.evaluate(() => { localStorage.setItem(\"firecrawlProfileCheck\", \"saved\"); document.cookie = \"firecrawl_profile_check=saved; path=/; max-age=3600\"; return localStorage.getItem(\"firecrawlProfileCheck\"); });"
  }'

curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY"

# セッション2: 同じプロファイルを読み取り専用モードで読み込み、値を検証する
RESPONSE=$(curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "profile": { "name": "profile-validation", "saveChanges": false }
  }')

SCRAPE_ID=$(echo "$RESPONSE" | jq -r ".data.metadata.scrapeId")

curl -s -X POST "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "await page.evaluate(() => ({ localStorage: localStorage.getItem(\"firecrawlProfileCheck\"), cookie: document.cookie.includes(\"firecrawl_profile_check=saved\") }));"
  }'

curl -s -X DELETE "https://api.firecrawl.dev/v2/scrape/$SCRAPE_ID/interact" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY"
```

2回目のInteractレスポンスでは、`localStorage` が `"saved"`、`cookie` が `true` と表示されるはずです。

<Info>
  API 経由で作成したプロファイルは、まだ Dashboard > Interact > Profiles に表示されない場合があります。現在、Dashboard では API で作成された永続プロファイルの完全な一覧は確認できません。
</Info>

<div id="when-to-use-what">
  ## 使い分けの目安 [#使い分けの目安]
</div>

| ユースケース              | 推奨                            | 理由                    |
| ------------------- | ----------------------------- | --------------------- |
| Web search          | [Search](/ja/features/search) | 専用の検索エンドポイント          |
| URL から整形されたコンテンツを取得 | [Scrape](/ja/features/scrape) | API 呼び出し 1 回で、セッション不要 |
| ページ上でクリック、入力、移動を行う  | **Interact** (prompt)         | 英語で指示するだけ             |
| 操作の先にあるデータを抽出する     | **Interact** (prompt)         | セレクタ不要                |
| 複雑なスクレイピングロジック      | **Interact** (code)           | Playwright を完全に制御可能   |

<Info>
  **Interact と Browser Sandbox の違い**: Interact は [Browser Sandbox](/ja/features/browser) と同じインフラ上に構築されていますが、最も一般的なパターン、つまりページをスクレイピングしてからさらに深く進む場合に、より使いやすいインターフェースを提供します。Browser Sandbox は、特定のスクレイピングに紐づかない独立したブラウザセッションが必要な場合に適しています。
</Info>

<div id="pricing">
  ## 料金 [#料金]
</div>

* **コードのみ** (`prompt` なし): セッション1分あたり2 credits
* **AI プロンプト あり**: セッション1分あたり7 credits
* **スクレイピング**: スクレイピング自体の請求は別途行われます (スクレイピング1回あたり1 credit に加え、format ごとのコスト) 。

<div id="api-reference">
  ## API リファレンス [#api-リファレンス]
</div>

* [Execute Interact](/ja/api-reference/endpoint/scrape-execute): `POST /v2/scrape/{scrapeId}/interact`
* [Stop Interact](/ja/api-reference/endpoint/scrape-browser-delete): `DELETE /v2/scrape/{scrapeId}/interact`

<div id="request-body-post">
  ### リクエスト本文 (POST) [#リクエスト本文-post]
</div>

| フィールド      | 型        | デフォルト    | 説明                                                                        |
| ---------- | -------- | -------- | ------------------------------------------------------------------------- |
| `prompt`   | `string` | なし       | AIエージェント向けの自然言語タスクです。`code` が設定されていない場合は必須です。最大10,000文字。                  |
| `code`     | `string` | なし       | 実行するコード (Node.js、Python、または Bash) 。`prompt` が設定されていない場合は必須です。最大100,000文字。 |
| `language` | `string` | `"node"` | `"node"`、`"python"`、または `"bash"`。`code` を使用する場合にのみ指定します。                  |
| `timeout`  | `number` | `30`     | タイムアウト時間 (秒)  (1～300) 。                                                   |
| `origin`   | `string` | なし       | アクティビティ追跡用の呼び出し元識別子。                                                      |

<div id="response">
  ### レスポンス [#レスポンス]
</div>

| Field                    | Description                                                                                                |
| ------------------------ | ---------------------------------------------------------------------------------------------------------- |
| `success`                | エラーなく実行が完了した場合は `true`                                                                                     |
| `cdpUrl`                 | ブラウザセッション用の生の Chrome DevTools Protocol (CDP) WebSocket URL。Playwright、Puppeteer、または任意の CDP クライアントで直接接続できます |
| `liveViewUrl`            | ブラウザセッション用の読み取り専用のライブビュー URL                                                                               |
| `interactiveLiveViewUrl` | インタラクティブ ライブビュー URL (閲覧者がブラウザを操作できます)                                                                      |
| `output`                 | プロンプトに対するエージェントの自然言語での回答。`prompt` を使用している場合にのみ含まれます。                                                       |
| `stdout`                 | コード実行時の標準出力                                                                                                |
| `result`                 | サンドボックスからの生の戻り値。`code` の場合: 最後に評価された式。`prompt` の場合: エージェントが `output` の生成に使用した生のページスナップショット。                |
| `stderr`                 | 標準エラー出力                                                                                                    |
| `exitCode`               | 終了コード (`0` = 成功)                                                                                           |
| `killed`                 | タイムアウトにより実行が終了した場合は `true`                                                                                 |

***

フィードバックやサポートが必要な場合は、[help@firecrawl.com](mailto:help@firecrawl.com) にメールするか、[Discord](https://discord.gg/firecrawl) でお問い合わせください。
