> ## 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.

# Elixir

> Firecrawl Elixir SDK は、Req と NimbleOptions を使用して構築された、Firecrawl API v2 向けの自動生成クライアントです。

Elixirアプリケーションから、単一ページのスクレイピング、サイト全体のクロール、URLのマッピングを行えます。SDKは実行時に NimbleOptions ですべてのパラメータを検証し、HTTP には Req を使用しているため、リクエストが送信される前に、タイプミスや無効なオプションを明確なエラーとして確認できます。

すべての関数には、`{:error, ...}` タプルを返す代わりに、エラー時に例外を発生させる bang (`!`) 版があります.

<div id="installation">
  ## インストール
</div>

`mix.exs` の依存関係に `firecrawl` を追加し、APIキーを設定します。

```elixir Elixir theme={null}
# mix.exs に追加
{:firecrawl, "~> 1.0"}

# 次に config.exs で API キーを設定
config :firecrawl, api_key: "fc-YOUR-API-KEY"
```

または、リクエストごとにAPIキーを渡すこともできます。

```elixir Elixir theme={null}
Firecrawl.scrape_and_extract_from_url([url: "https://example.com"], api_key: "fc-YOUR-API-KEY")
```

<div id="usage">
  ## 使い方
</div>

1. [firecrawl.dev](https://firecrawl.dev) でAPIキーを取得します
2. アプリケーションの設定にAPIキーを設定するか、任意の関数にオプションとして渡します。

```elixir Elixir theme={null}
# Web サイトをスクレイピングする:
{:ok, scrape_result} = Firecrawl.scrape_and_extract_from_url(
  url: "https://firecrawl.dev",
  formats: ["markdown", "html"]
)
IO.inspect(scrape_result.body)

# Web サイトをクロールする:
{:ok, crawl_result} = Firecrawl.crawl_urls(
  url: "https://firecrawl.dev",
  limit: 100,
  scrape_options: [
    formats: ["markdown", "html"]
  ]
)
IO.inspect(crawl_result.body)
```

<div id="scraping-a-url">
  ### URL のスクレイピング
</div>

`scrape_and_extract_from_url` を使用して、単一の URL をスクレイピングします。ページのコンテンツは、Markdown、メタデータ、その他リクエストしたフォーマットを含む構造化データとして返されます。

```elixir Elixir theme={null}
# Web サイトをスクレイピングする:
{:ok, result} = Firecrawl.scrape_and_extract_from_url(url: "https://firecrawl.dev", formats: ["markdown", "html"])
IO.inspect(result.body)
```

<div id="crawl-a-website">
  ### Web サイトをクロールする
</div>

Web サイトをクロールするには、`crawl_urls` を使用します。開始 URL と、ページ数の上限、許可ドメイン、出力形式などの任意のパラメータを指定できます。

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 5)
IO.inspect(result.body)
```

<div id="start-a-crawl">
  ### クロールを開始する
</div>

クロールジョブを開始し、完了を待たずにジョブIDを取得します。

```elixir Elixir theme={null}
{:ok, job} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 10)
crawl_id = job.body["id"]
IO.puts(crawl_id)
```

<div id="checking-crawl-status">
  ### クロールのステータスを確認する
</div>

`get_crawl_status` を使って、クロールジョブのステータスを確認します。

```elixir Elixir theme={null}
{:ok, status} = Firecrawl.get_crawl_status("<crawl-id>")
IO.inspect(status.body)
```

<div id="cancelling-a-crawl">
  ### クロールのキャンセル
</div>

`cancel_crawl` でクロールジョブをキャンセルできます。

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.cancel_crawl("<crawl-id>")
IO.puts("Cancelled: #{inspect(result.body)}")
```

<div id="map-a-website">
  ### Web サイトをマッピングする
</div>

`map_urls` を使用して、Web サイトから URL のリストを生成します。

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.map_urls(url: "https://firecrawl.dev", limit: 10)
IO.inspect(result.body)
```

<div id="search">
  ### 検索
</div>

ウェブを検索し、必要に応じて結果をスクレイピングします:

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.search_and_scrape(query: "firecrawl web scraping", limit: 5)
IO.inspect(result.body["data"]["web"])
```

<div id="batch-scrape">
  ### バッチスクレイプ
</div>

1つのバッチジョブで複数のURLをスクレイピングします：

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.scrape_and_extract_from_urls(
  urls: ["https://firecrawl.dev", "https://docs.firecrawl.dev"],
  formats: ["markdown"]
)
IO.inspect(result.body)
```

<div id="agent">
  ### Agent
</div>

エージェントによるデータ抽出タスクを開始します:

```elixir Elixir theme={null}
{:ok, job} = Firecrawl.start_agent(
  prompt: "Extract all product names and prices",
  urls: ["https://example.com/products"]
)
job_id = job.body["id"]

# ステータスをポーリング
{:ok, status} = Firecrawl.get_agent_status(job_id)
IO.inspect(status.body)
```

<div id="browser">
  ## ブラウザ
</div>

クラウド上のブラウザセッションを起動し、リモートでコードを実行します。

<div id="create-a-session">
  ### セッションを作成
</div>

```elixir Elixir theme={null}
{:ok, session} = Firecrawl.create_browser_session(ttl: 600)
session_id = session.body["id"]
cdp_url = session.body["cdpUrl"]
live_view_url = session.body["liveViewUrl"]
```

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

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.execute_browser_code(session_id,
  code: ~s(await page.goto("https://news.ycombinator.com")\ntitle = await page.title()\nprint(title)),
  language: "python"
)
IO.inspect(result.body)
```

<div id="profiles">
  ### プロファイル
</div>

セッションをまたいでブラウザの状態 (Cookie、localStorage など) を保存し、再利用します：

```elixir Elixir theme={null}
{:ok, session} = Firecrawl.create_browser_session(
  ttl: 600,
  profile: [
    name: "my-profile",
    save_changes: true
  ]
)
```

<div id="list-close-sessions">
  ### セッションの一覧表示と終了
</div>

```elixir Elixir theme={null}
# アクティブなセッションを一覧表示する
{:ok, sessions} = Firecrawl.list_browser_sessions(status: "active")
IO.inspect(sessions.body)

# セッションを閉じる
{:ok, _} = Firecrawl.delete_browser_session(session_id)
```

<div id="self-hosted-instances">
  ## セルフホスト型インスタンス
</div>

セルフホスト型の Firecrawl インスタンスを使用するには、`base_url` オプションを指定します:

```elixir Elixir theme={null}
{:ok, result} = Firecrawl.scrape_and_extract_from_url(
  [url: "https://example.com"],
  base_url: "https://your-instance.com/v2"
)
```

<div id="error-handling">
  ## エラーハンドリング
</div>

bang なしの関数は `{:ok, response}` または `{:error, exception}` を返します。bang バリアントは、エラー時に例外を送出します。NimbleOptions はリクエスト送信前にすべてのパラメータを検証するため、タイプミス、必須フィールドの不足、型エラーを即座に検出できます。

```elixir Elixir theme={null}
case Firecrawl.scrape_and_extract_from_url(url: "https://example.com") do
  {:ok, response} -> IO.inspect(response.body)
  {:error, error} -> IO.puts("Error: #{Exception.message(error)}")
end

# または、エラー時に例外を発生させるbang版を使用する:
response = Firecrawl.scrape_and_extract_from_url!(url: "https://example.com")
IO.inspect(response.body)
```

<div id="all-available-functions">
  ## 利用可能な関数一覧
</div>

| 関数                             | 説明                   |
| ------------------------------ | -------------------- |
| `scrape_and_extract_from_url`  | 単一の URL をスクレイピング     |
| `scrape_and_extract_from_urls` | 複数の URL をバッチスクレイプ    |
| `crawl_urls`                   | Web サイトをクロール         |
| `get_crawl_status`             | クロールジョブのステータスを確認     |
| `get_crawl_errors`             | クロールジョブのエラーを取得       |
| `get_active_crawls`            | 実行中のクロールを一覧表示        |
| `cancel_crawl`                 | クロールジョブをキャンセル        |
| `map_urls`                     | Web サイト上の URL をマッピング |
| `search_and_scrape`            | 検索結果をスクレイピング         |
| `start_agent`                  | エージェントによる抽出タスクを開始    |
| `get_agent_status`             | エージェントジョブのステータスを確認   |
| `cancel_agent`                 | エージェントジョブをキャンセル      |
| `create_browser_session`       | ブラウザセッションを作成         |
| `execute_browser_code`         | ブラウザセッションでコードを実行     |
| `list_browser_sessions`        | ブラウザセッションを一覧表示       |
| `delete_browser_session`       | ブラウザセッションを削除         |
| `get_batch_scrape_status`      | バッチスクレイプのステータスを確認    |
| `get_batch_scrape_errors`      | バッチスクレイプのエラーを取得      |
| `cancel_batch_scrape`          | バッチスクレイプをキャンセル       |
| `get_credit_usage`             | 残りのクレジットを取得          |

上記のすべての関数には、エラータプルを返す代わりに例外を発生させるbang (`!`) 付きのバリアント (例: `scrape_and_extract_from_url!`) があります。

API の完全なドキュメントは、[hexdocs.pm/firecrawl](https://hexdocs.pm/firecrawl) を参照してください。
