> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# はじめに

> ウェブを検索し、あらゆるページをスクレイピングして操作できます、すべてを1つのAPIで。

export const McpClientSelector = () => {
  const writeClipboard = async text => {
    try {
      await navigator.clipboard.writeText(text);
      return true;
    } catch {
      const textarea = document.createElement("textarea");
      textarea.value = text;
      textarea.setAttribute("readonly", "");
      textarea.style.position = "fixed";
      textarea.style.top = "-9999px";
      document.body.appendChild(textarea);
      textarea.select();
      let copied = false;
      try {
        copied = document.execCommand("copy");
      } catch {
        copied = false;
      }
      document.body.removeChild(textarea);
      return copied;
    }
  };
  const mcpUrl = "https://mcp.firecrawl.dev/v2/mcp";
  const cursorInstallUrl = "cursor://anysphere.cursor-deeplink/mcp/install?name=firecrawl&config=eyJ1cmwiOiJodHRwczovL21jcC5maXJlY3Jhd2wuZGV2L3YyL21jcCJ9";
  const cursorConfig = `{
  "mcpServers": {
    "firecrawl": {
      "url": "${mcpUrl}"
    }
  }
}`;
  const opencodeConfig = `{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "firecrawl": {
      "type": "remote",
      "url": "${mcpUrl}",
      "enabled": true
    }
  }
}`;
  const clients = [{
    id: "claude-code",
    name: "Claude Code",
    detail: "Run in terminal",
    icon: "/images/agent-clients/claude-code.svg",
    iconClassName: "",
    command: `claude mcp add --transport http firecrawl ${mcpUrl}`,
    description: "Run this in your terminal to add Firecrawl as a remote MCP server in Claude Code.",
    hint: <>
          Then run <code>/mcp</code> and confirm <strong>firecrawl</strong> is connected.
        </>
  }, {
    id: "codex",
    name: "Codex",
    detail: "Run in terminal",
    icon: "/images/agent-clients/codex.svg",
    iconClassName: "",
    command: `codex mcp add firecrawl --url ${mcpUrl}`,
    description: "Run this in your terminal to add Firecrawl as a remote MCP server in Codex.",
    hint: <>
          Then run <code>codex mcp list</code> and confirm <strong>firecrawl</strong> is
          enabled.
        </>
  }, {
    id: "cursor",
    name: "Cursor",
    detail: "One-click + JSON",
    icon: "/images/agent-clients/cursor.svg",
    iconClassName: "fc-client-icon-mono",
    code: cursorConfig,
    codeLabel: "mcp.json",
    codeClassName: "",
    installUrl: cursorInstallUrl,
    description: "Install the hosted MCP server in one click, or copy the configuration below.",
    hint: <>
          Open <strong>Cursor Settings</strong>, select <strong>MCP</strong>, and confirm{" "}
          <strong>firecrawl</strong> is connected.
        </>
  }, {
    id: "opencode",
    name: "OpenCode",
    detail: "Copy config",
    icon: "/images/agent-clients/opencode.svg",
    iconClassName: "fc-client-icon-mono",
    code: opencodeConfig,
    codeLabel: "opencode.json",
    codeClassName: "",
    description: "Add this remote server configuration to your global or project config.",
    hint: <>
          Then run <code>opencode mcp list</code> and confirm{" "}
          <strong>firecrawl</strong> is connected.
        </>
  }];
  const [activeId, setActiveId] = useState(clients[0].id);
  const [copiedId, setCopiedId] = useState(null);
  const [status, setStatus] = useState("");
  const tabRefs = useRef([]);
  const timeoutRef = useRef(null);
  useEffect(() => () => window.clearTimeout(timeoutRef.current), []);
  const copy = async (id, text, label) => {
    const copied = await writeClipboard(text);
    if (copied) {
      window.clearTimeout(timeoutRef.current);
      setCopiedId(id);
      setStatus(`${label} copied to clipboard.`);
      timeoutRef.current = window.setTimeout(() => {
        setCopiedId(null);
        setStatus("");
      }, 2000);
    } else {
      setCopiedId(null);
      setStatus(`Could not copy ${label.toLowerCase()}.`);
    }
  };
  const copyIcon = () => <svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <rect width="14" height="14" x="8" y="8" rx="2" />
      <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" />
    </svg>;
  const checkIcon = () => <svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <path d="m20 6-11 11-5-5" />
    </svg>;
  const arrowIcon = () => <svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <path d="M5 12h14" />
      <path d="m13 6 6 6-6 6" />
    </svg>;
  const curvyCorners = () => {
    const path = "M11 1L11 11L10 11L10 7C10 3.68629 7.31371 1 4 1L0 1L0 0L11 0L11 1Z";
    return <span className="fc-curvy-corners" aria-hidden="true">
        <svg className="fc-curve fc-curve-tl" viewBox="0 0 11 11">
          <path d={path} />
        </svg>
        <svg className="fc-curve fc-curve-tr" viewBox="0 0 11 11">
          <path d={path} />
        </svg>
        <svg className="fc-curve fc-curve-bl" viewBox="0 0 11 11">
          <path d={path} />
        </svg>
        <svg className="fc-curve fc-curve-br" viewBox="0 0 11 11">
          <path d={path} />
        </svg>
      </span>;
  };
  const copyButton = ({id, text, label}) => {
    const copied = copiedId === id;
    return <button type="button" className={`fc-copy-button${copied ? " is-copied" : ""}`} onClick={() => copy(id, text, label)} aria-label={copied ? `${label} copied` : `Copy ${label}`}>
        {copied ? checkIcon() : copyIcon()}
        <span>{copied ? "Copied" : "Copy"}</span>
      </button>;
  };
  const commandRow = ({id, command, label, prompt}) => <div className="fc-command-row">
      <div className="fc-command-scroll" tabIndex={0}>
        {prompt && <span className="fc-command-prompt" aria-hidden="true">
            $
          </span>}
        <code>{command}</code>
      </div>
      {copyButton({
    id,
    text: command,
    label
  })}
    </div>;
  const codeBlock = ({client}) => <div className={`fc-code-block ${client.codeClassName || ""}`.trim()}>
      <div className="fc-code-header">
        <span>{client.codeLabel}</span>
        {copyButton({
    id: `code-${client.id}`,
    text: client.code,
    label: client.codeLabel
  })}
      </div>
      <pre>
        <code>{client.code}</code>
      </pre>
    </div>;
  const selectTab = index => {
    const client = clients[index];
    setActiveId(client.id);
    tabRefs.current[index]?.focus();
  };
  const handleKeyDown = (event, index) => {
    let nextIndex = index;
    if (event.key === "ArrowRight") nextIndex = (index + 1) % clients.length; else if (event.key === "ArrowLeft") nextIndex = (index - 1 + clients.length) % clients.length; else if (event.key === "Home") nextIndex = 0; else if (event.key === "End") nextIndex = clients.length - 1; else return;
    event.preventDefault();
    selectTab(nextIndex);
  };
  return <section className="fc-agent-first not-prose" aria-labelledby="fc-mcp-heading">
      {curvyCorners()}
      <div className="fc-agent-first-header">
        <div>
          <h3 id="fc-mcp-heading">Setup Firecrawl MCP Server</h3>
          <p>No API key required. Sign up only when you need more.</p>
        </div>
        <a className="fc-all-options-link" href="/mcp-server">
          See all setup options {arrowIcon()}
        </a>
      </div>

      <div className="fc-client-tabs" role="tablist" aria-label="Choose an MCP client">
        {clients.map((client, index) => {
    const selected = activeId === client.id;
    return <button key={client.id} id={`fc-tab-${client.id}`} ref={element => {
      tabRefs.current[index] = element;
    }} type="button" role="tab" className={`fc-client-tab${selected ? " is-active" : ""}`} aria-selected={selected} aria-controls={`fc-panel-${client.id}`} tabIndex={selected ? 0 : -1} onClick={() => setActiveId(client.id)} onKeyDown={event => handleKeyDown(event, index)}>
              <span className={`fc-client-icon ${client.iconClassName}`} style={{
      backgroundImage: `url("${client.icon}")`
    }} aria-hidden="true" />
              <span className="fc-client-tab-copy">
                <strong>{client.name}</strong>
                <span>{client.detail}</span>
              </span>
            </button>;
  })}
      </div>

      <div className="fc-client-panels">
        {clients.map(client => {
    const selected = activeId === client.id;
    return <div key={client.id} id={`fc-panel-${client.id}`} role="tabpanel" aria-labelledby={`fc-tab-${client.id}`} hidden={!selected} className="fc-client-panel">
              <p className="fc-client-description">{client.description}</p>
              {client.installUrl && <a className="fc-install-button" href={client.installUrl}>
                  Add to Cursor {arrowIcon()}
                </a>}
              {client.command ? commandRow({
      id: `code-${client.id}`,
      command: client.command,
      label: "Command",
      prompt: true
    }) : codeBlock({
      client
    })}
              <p className="fc-client-hint">{client.hint}</p>
            </div>;
  })}
      </div>
      <div className="fc-agent-first-footer">
        <p className="fc-footer-lead">Using another MCP client? Point it at:</p>
        {commandRow({
    id: "endpoint-url",
    command: mcpUrl,
    label: "Endpoint URL"
  })}
      </div>
      <span className="fc-sr-only" aria-live="polite">
        {status}
      </span>
    </section>;
};

export const AgentSetupButton = () => {
  const prompt = "Read and follow https://www.firecrawl.dev/agent-onboarding/SKILL.md";
  const writeClipboard = async text => {
    try {
      await navigator.clipboard.writeText(text);
      return true;
    } catch {
      const textarea = document.createElement("textarea");
      textarea.value = text;
      textarea.setAttribute("readonly", "");
      textarea.style.position = "fixed";
      textarea.style.top = "-9999px";
      document.body.appendChild(textarea);
      textarea.select();
      let copied = false;
      try {
        copied = document.execCommand("copy");
      } catch {
        copied = false;
      }
      document.body.removeChild(textarea);
      return copied;
    }
  };
  const [copied, setCopied] = useState(false);
  const [status, setStatus] = useState("");
  const timeoutRef = useRef(null);
  useEffect(() => () => window.clearTimeout(timeoutRef.current), []);
  const copyPrompt = async () => {
    const copied = await writeClipboard(prompt);
    if (copied) {
      window.clearTimeout(timeoutRef.current);
      setCopied(true);
      setStatus("Agent setup prompt copied to clipboard.");
      timeoutRef.current = window.setTimeout(() => {
        setCopied(false);
        setStatus("");
      }, 2000);
    } else {
      setCopied(false);
      setStatus("Could not copy the agent setup prompt.");
    }
  };
  const icon = copied ? <svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <path d="m20 6-11 11-5-5" />
    </svg> : <svg aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <rect width="14" height="14" x="8" y="8" rx="2" />
      <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" />
    </svg>;
  return <div className="fc-agent-prompt not-prose">
      <button type="button" className={`fc-agent-prompt-button${copied ? " is-copied" : ""}`} onClick={copyPrompt} aria-label={copied ? "Copied agent setup prompt" : "Setup for agents"}>
        {icon}
        <span>{copied ? "Copied" : "Setup for agents"}</span>
      </button>
      <span className="fc-sr-only" aria-live="polite">
        {status}
      </span>
    </div>;
};

<Note>
  **AIエージェント向け:** すべてのドキュメントの完全なインデックスについては、[llms.txt](/ja/llms.txt)を参照してください。
</Note>

<div id="get-started">
  ## はじめに
</div>

<McpClientSelector />

<div id="install-the-firecrawl-cli">
  ### Firecrawl CLIをインストールする
</div>

1 つのコマンドで、Firecrawl CLIをインストールし、ブラウザで認証して、検出されたすべてのコーディングエージェントにスキルを追加できます。

```bash theme={null}
npx -y firecrawl-cli@latest init --all --browser
```

<Note>
  セットアップ後に、コーディングエージェントを再起動して、新しいスキルを認識できるようにしてください。セットアップ方法の詳細は
  [Skills + CLI](/ja/sdks/cli) を参照してください。
</Note>

<div id="set-up-with-an-agent">
  ### エージェントを使ってセットアップ
</div>

この Firecrawl のセットアップ用 prompt をエージェントに渡してください。

<AgentSetupButton />

<div id="build-and-test-directly">
  ### 直接 Build してテスト
</div>

<CardGroup cols={2}>
  <Card title="API キーを取得" icon="key" href="https://www.firecrawl.dev/app/api-keys">
    直接 API にアクセスし、より高い上限を利用するには、無料の account を作成してください
  </Card>

  <Card title="Playground で試す" icon="play" href="https://www.firecrawl.dev/playground">
    コードを書かずに、browser で Firecrawl をテストできます
  </Card>
</CardGroup>

***

<div id="what-can-firecrawl-do">
  ## Firecrawl でできること
</div>

<CardGroup cols={3}>
  <Card title="Search" icon="magnifying-glass" href="#search">
    ウェブを検索し、結果からページ全体のコンテンツを取得
  </Card>

  <Card title="スクレイピング" icon="file-lines" href="#scrape">
    任意の URL から、Markdown、HTML、または構造化 JSON としてコンテンツを抽出
  </Card>

  <Card title="Interact" icon="hand-pointer" href="#interact">
    スクレイピングした任意のページで作業を続ける: クリック、フォーム入力、動的コンテンツの抽出
  </Card>
</CardGroup>

<div id="why-firecrawl">
  ### なぜ Firecrawl なのか？
</div>

* **LLM対応の出力**: クリーンなMarkdown、構造化されたJSON、スクリーンショットなどを出力できます。
* **複雑なケースにも対応**: プロキシ、アンチボット、JavaScriptレンダリング、動的コンテンツに対応します。
* **高い信頼性**: 高い稼働率と安定した結果を実現し、本番運用向けに設計されています。
* **高速**: 数秒で結果を返し、高スループット向けに最適化されています。
* **MCP Server**: [Model Context Protocol (MCP) ](/ja/mcp-server) を介して、FirecrawlをあらゆるAIツールに接続できます。

***

<div id="search">
  ## Search
</div>

1 回の呼び出しでウェブを検索し、結果からページ全体のコンテンツを取得できます。すべてのオプションについては、[Search feature docs](/ja/features/search) を参照してください。

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  firecrawl = Firecrawl(
    # 開始にAPIキーは不要です。より高いrate limitsを得るには追加してください：
    # api_key="fc-YOUR-API-KEY",
  )

  results = firecrawl.search(
      query="firecrawl",
      limit=3,
  )
  print(results)
  ```

  ```js Node theme={null}
  import { Firecrawl } from 'firecrawl';

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

  const results = await firecrawl.search('firecrawl', {
    limit: 3,
    scrapeOptions: { formats: ['markdown'] }
  });
  console.log(results);
  ```

  ```bash cURL theme={null}
  # 開始するためにAPI keyは不要です — より高いrate limitsを利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
  curl -s -X POST "https://api.firecrawl.dev/v2/search" \
    -H "Content-Type: application/json" \
    -d '{
      "query": "firecrawl",
      "limit": 3
    }'
  ```

  ```bash CLI theme={null}
  # ウェブを検索
  firecrawl search "firecrawl web scraping" --limit 5 --pretty
  ```
</CodeGroup>

<Accordion title="Response">
  SDK は data オブジェクトを直接返します。cURL は完全なペイロードを返します。

  ```json JSON theme={null}
  {
    "success": true,
    "data": {
      "web": [
        {
          "url": "https://www.firecrawl.dev/",
          "title": "Firecrawl - AI向けWebデータAPI",
          "description": "AI向けのウェブクローリング、スクレイピング、検索API。大規模運用に対応。Firecrawlはインターネット全体をAIエージェントやビルダーに提供します。",
          "position": 1
        },
        {
          "url": "https://github.com/firecrawl/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
        },
        ...
      ]
    }
  }
  ```
</Accordion>

<div id="scrape">
  ## スクレイピング
</div>

任意の URL をスクレイピングし、そのコンテンツを Markdown、HTML、またはその他の形式で取得できます。すべてのオプションについては、[Scrape feature docs](/ja/features/scrape) を参照してください。

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

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

  # ウェブサイトをスクレイピングする：
  doc = firecrawl.scrape("https://firecrawl.dev", formats=["markdown", "html"])
  print(doc)
  ```

  ```js Node theme={null}
  import { Firecrawl } from 'firecrawl';

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

  // ウェブサイトをスクレイピングする:
  const doc = await firecrawl.scrape('https://firecrawl.dev', { formats: ['markdown', 'html'] });
  console.log(doc);
  ```

  ```bash cURL theme={null}
  # 開始にAPI keyは不要です — より高いRate Limitsを利用するには -H "Authorization: Bearer $FIRECRAWL_API_KEY" を追加してください:
  curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://firecrawl.dev",
      "formats": ["markdown", "html"]
    }'
  ```

  ```bash CLI theme={null}
  # Scrape a URL and get markdown
  firecrawl https://firecrawl.dev

  # 複数のフォーマットで取得（JSONを返す）
  firecrawl https://firecrawl.dev --format markdown,html,links --pretty
  ```
</CodeGroup>

<Accordion title="Response">
  SDK は data オブジェクトを直接返します。cURL は以下に示すとおり、ペイロードをそのまま返します。

  ```json theme={null}
  {
    "success": true,
    "data" : {
      "markdown": "Launch Week I が開幕！[2日目のリリースを見る 🚀](https://www.firecrawl.dev/blog/launch-week-i-day-2-doubled-rate-limits)[💥 2か月無料をゲット...",
      "html": "<!DOCTYPE html><html lang=\"en\" class=\"light\" style=\"color-scheme: light;\"><body class=\"__variable_36bd41 __variable_d7dc5d font-inter ...",
      "metadata": {
        "title": "ホーム - Firecrawl",
        "description": "Firecrawl は、あらゆるウェブサイトをクリーンな Markdown にクロールして変換します。",
        "language": "en",
        "keywords": "Firecrawl,Markdown,データ,Mendable,Langchain",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "あらゆるウェブサイトを LLM で使えるデータに変換。",
        "ogUrl": "https://www.firecrawl.dev/",
        "ogImage": "https://www.firecrawl.dev/og.png?123",
        "ogLocaleAlternate": [],
        "ogSiteName": "Firecrawl",
        "sourceURL": "https://firecrawl.dev",
        "statusCode": 200,
        "contentType": "text/html"
      }
    }
  }
  ```
</Accordion>

<div id="interact">
  ## Interact
</div>

ページをスクレイピングした後も、そのまま操作を続けられます。ボタンのクリック、フォームへの入力、動的コンテンツの抽出、さらに深い階層への移動が可能です。やりたいことを平易な英語で指定することも、完全に制御するためのコードを書くこともできます。すべてのオプションについては、[Interact 機能のドキュメント](/ja/features/interact)を参照してください。

<CodeGroup>
  ```python Python theme={null}
  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)
  ```

  ```js Node theme={null}
  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);
  ```

  ```bash cURL theme={null}
  # 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"
  ```

  ```bash CLI theme={null}
  # 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
  ```
</CodeGroup>

<Accordion title="レスポンス">
  ```json Response theme={null}
  {
    "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
  }
  ```
</Accordion>

***

<div id="more-capabilities">
  ## その他の機能
</div>

<CardGroup cols={2}>
  <Card title="Agent" icon="robot" href="/ja/features/agent">
    AI を活用した自律的な Web データ収集
  </Card>

  <Card title="Interact" icon="hand-pointer" href="/ja/features/interact">
    クリック、フォーム入力、動的コンテンツを抽出
  </Card>

  <Card title="webhook" icon="webhook" href="/ja/webhooks">
    非同期イベント配信
  </Card>

  <Card title="Browser Sandbox" icon="browser" href="/ja/features/browser">
    インタラクティブなワークフロー向けのマネージドブラウザセッション
  </Card>

  <Card title="Map" icon="map" href="/ja/features/map">
    Web サイト上のすべての URL を検出
  </Card>

  <Card title="クロール" icon="spider-web" href="/ja/features/crawl">
    サイト全体からコンテンツを再帰的に収集
  </Card>
</CardGroup>

***

<div id="resources">
  ## リソース
</div>

<CardGroup cols={2}>
  <Card title="APIリファレンス" icon="code" href="/ja/api-reference/v2-introduction">
    インタラクティブな実行例付きの詳細なAPIドキュメント
  </Card>

  <Card title="SDKs" icon="boxes-stacked" href="/ja/sdks/overview">
    Python、Node.js、CLI、コミュニティ製SDK
  </Card>

  <Card title="オープンソース" icon="github" href="/ja/contributing/open-source-or-cloud">
    Firecrawlをセルフホストする、またはプロジェクトに貢献する
  </Card>

  <Card title="連携" icon="puzzle-piece" href="/ja/developer-guides/llm-sdks-and-frameworks/openai">
    LangChain、LlamaIndex、OpenAI など
  </Card>
</CardGroup>
