メインコンテンツへスキップ
Elixirアプリケーションから、単一ページのスクレイピング、サイト全体のクロール、URLのマッピングを行えます。SDKは実行時に NimbleOptions ですべてのパラメータを検証し、HTTP には Req を使用しているため、リクエストが送信される前に、タイプミスや無効なオプションを明確なエラーとして確認できます。 すべての関数には、{:error, ...} タプルを返す代わりに、エラー時に例外を発生させる bang (!) 版があります.

インストール

mix.exs の依存関係に firecrawl を追加し、APIキーを設定します。
Elixir
# mix.exs に追加
{:firecrawl, "~> 1.0"}

# 次に config.exs で API キーを設定
config :firecrawl, api_key: "fc-YOUR-API-KEY"
または、リクエストごとにAPIキーを渡すこともできます。
Elixir
Firecrawl.scrape_and_extract_from_url([url: "https://example.com"], api_key: "fc-YOUR-API-KEY")

使い方

  1. firecrawl.dev でAPIキーを取得します
  2. アプリケーションの設定にAPIキーを設定するか、任意の関数にオプションとして渡します。
Elixir
# 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)

URL のスクレイピング

scrape_and_extract_from_url を使用して、単一の URL をスクレイピングします。ページのコンテンツは、Markdown、メタデータ、その他リクエストしたフォーマットを含む構造化データとして返されます。
Elixir
# Web サイトをスクレイピングする:
{:ok, result} = Firecrawl.scrape_and_extract_from_url(url: "https://firecrawl.dev", formats: ["markdown", "html"])
IO.inspect(result.body)

Web サイトをクロールする

Web サイトをクロールするには、crawl_urls を使用します。開始 URL と、ページ数の上限、許可ドメイン、出力形式などの任意のパラメータを指定できます。
Elixir
{:ok, result} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 5)
IO.inspect(result.body)

クロールを開始する

クロールジョブを開始し、完了を待たずにジョブIDを取得します。
Elixir
{:ok, job} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 10)
crawl_id = job.body["id"]
IO.puts(crawl_id)

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

get_crawl_status を使って、クロールジョブのステータスを確認します。
Elixir
{:ok, status} = Firecrawl.get_crawl_status("<crawl-id>")
IO.inspect(status.body)

クロールのキャンセル

cancel_crawl でクロールジョブをキャンセルできます。
Elixir
{:ok, result} = Firecrawl.cancel_crawl("<crawl-id>")
IO.puts("Cancelled: #{inspect(result.body)}")

Web サイトをマッピングする

map_urls を使用して、Web サイトから URL のリストを生成します。
Elixir
{:ok, result} = Firecrawl.map_urls(url: "https://firecrawl.dev", limit: 10)
IO.inspect(result.body)
ウェブを検索し、必要に応じて結果をスクレイピングします:
Elixir
{:ok, result} = Firecrawl.search_and_scrape(query: "firecrawl web scraping", limit: 5)
IO.inspect(result.body["data"]["web"])

バッチスクレイプ

1つのバッチジョブで複数のURLをスクレイピングします:
Elixir
{:ok, result} = Firecrawl.scrape_and_extract_from_urls(
  urls: ["https://firecrawl.dev", "https://docs.firecrawl.dev"],
  formats: ["markdown"]
)
IO.inspect(result.body)

Agent

エージェントによるデータ抽出タスクを開始します:
Elixir
{: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)

ブラウザ

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

セッションを作成

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

コードの実行

Elixir
{: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)

プロファイル

セッションをまたいでブラウザの状態 (Cookie、localStorage など) を保存し、再利用します:
Elixir
{:ok, session} = Firecrawl.create_browser_session(
  ttl: 600,
  profile: [
    name: "my-profile",
    save_changes: true
  ]
)

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

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

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

セルフホスト型インスタンス

セルフホスト型の Firecrawl インスタンスを使用するには、base_url オプションを指定します:
Elixir
{:ok, result} = Firecrawl.scrape_and_extract_from_url(
  [url: "https://example.com"],
  base_url: "https://your-instance.com/v2"
)

エラーハンドリング

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

利用可能な関数一覧

関数説明
scrape_and_extract_from_url単一の URL をスクレイピング
scrape_and_extract_from_urls複数の URL をバッチスクレイプ
crawl_urlsWeb サイトをクロール
get_crawl_statusクロールジョブのステータスを確認
get_crawl_errorsクロールジョブのエラーを取得
get_active_crawls実行中のクロールを一覧表示
cancel_crawlクロールジョブをキャンセル
map_urlsWeb サイト上の 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 を参照してください。