インストール

Firecrawl の Node SDK をインストールするには、npm を使用します。
Node(Node.js)
# npm install @mendable/firecrawl-js

import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

使い方

  1. firecrawl.dev から API キーを取得します。
  2. 環境変数 FIRECRAWL_API_KEY に API キーを設定するか、FirecrawlApp クラスにパラメータとして渡します。
エラーハンドリング付きで SDK を使用する例は次のとおりです:
Node
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});

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

console.log(scrapeResponse)

// ウェブサイトをクロールする
const crawlResponse = await firecrawl.crawl('https://firecrawl.dev', {
  limit: 100,
  scrapeOptions: {
    formats: ['markdown', 'html'],
  }
});

console.log(crawlResponse)

URLをスクレイピングする

エラー処理付きで単一のURLをスクレイプするには、scrapeUrl メソッドを使用します。URLを引数に取り、スクレイプしたデータをディクショナリ(辞書)として返します。
Node
// Scrape a website:
const scrapeResult = await firecrawl.scrape('firecrawl.dev', { formats: ['markdown', 'html'] });

console.log(scrapeResult)

ウェブサイトのクロール

エラーハンドリング込みでウェブサイトをクロールするには、crawlUrl メソッドを使用します。開始URLと任意のパラメータを引数に取ります。params 引数では、クロールする最大ページ数、許可ドメイン、出力フォーマットなど、クロールジョブの追加オプションを指定できます。自動/手動のページネーションや上限設定については Pagination を参照してください。
Node
const job = await firecrawl.crawl('https://docs.firecrawl.dev', { limit: 5, pollInterval: 1, timeout: 120 });
console.log(job.status);

クローリングを開始

startCrawl を使うと待機せずにジョブを開始できます。ステータス確認に使えるジョブの ID が返されます。完了まで処理をブロックするウェイターが必要な場合は crawl を使用してください。ページングの挙動と制限については Pagination を参照してください。
Node
const { id } = await firecrawl.startCrawl('https://docs.firecrawl.dev', { limit: 10 });
console.log(id);

クロールのステータス確認

エラー処理付きでクロールジョブのステータスを確認するには、checkCrawlStatus メソッドを使用します。ID を引数に取り、クロールジョブの現在のステータスを返します。
Node
const status = await firecrawl.getCrawlStatus("<crawl-id>");
console.log(status);

クロールのキャンセル

クロールジョブをキャンセルするには、cancelCrawl メソッドを使用します。startCrawl のジョブIDを引数に渡すと、キャンセル結果のステータスが返されます。
Node
const ok = await firecrawl.cancelCrawl("<crawl-id>");
console.log("キャンセル済み:", ok);

ウェブサイトのマッピング

エラー処理込みでウェブサイトをマッピングするには、mapUrl メソッドを使用します。開始 URL を引数に取り、マッピング結果をディクショナリとして返します。
Node
const res = await firecrawl.map('https://firecrawl.dev', { limit: 10 });
console.log(res.links);

WebSocket を使ったサイトのクロール

WebSocket を使ってサイトをクロールするには、crawlUrlAndWatch メソッドを使用します。開始 URL と任意のパラメータを引数に取ります。params 引数では、クロールする最大ページ数、許可ドメイン、出力フォーマットなど、クロールジョブの追加オプションを指定できます。
Node
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: 'fc-YOUR-API-KEY' });

// クロールを開始して監視する
const { id } = await firecrawl.startCrawl('https://mendable.ai', {
  excludePaths: ['blog/*'],
  limit: 5,
});

const watcher = firecrawl.watcher(id, { kind: 'crawl', pollInterval: 2, timeout: 120 });

watcher.on('document', (doc) => {
  console.log('DOC', doc);
});

watcher.on('error', (err) => {
  console.error('ERR', err?.error || err);
});

watcher.on('done', (state) => {
  console.log('DONE', state.status);
});

// 監視を開始(WS と HTTP のフォールバック)
await watcher.start();
Firecrawl の /crawl と batch の各エンドポイントは、追加のデータがある場合に next URL を返します。Node SDK はデフォルトで自動ページネーションを行い、すべてのドキュメントを集約します。その場合は nextnull になります。自動ページネーションを無効にしたり、上限を設定したりできます。

クロール

最も手軽なのはウェイター方式の crawl を使うことです。あるいはジョブを開始して、ページングを手動で行ってください。
シンプルなクロール(自動ページ送り、デフォルト)
ページネーション制御付きの手動クロール(単一ページ)
  • ジョブを開始し、autoPaginate: false を指定して1ページずつ取得します。
Node
const crawlStart = await firecrawl.startCrawl('https://docs.firecrawl.dev', { limit: 5 });
const crawlJobId = crawlStart.id;

const crawlSingle = await firecrawl.getCrawlStatus(crawlJobId, { autoPaginate: false });
console.log('単一ページのクロール:', crawlSingle.status, 'ドキュメント数:', crawlSingle.data.length, '次:', crawlSingle.next);
制限付きの手動クロール(自動ページネーション + 早期停止)
  • 自動ページネーションはオンのまま、maxPagesmaxResults、または maxWaitTime で早めに停止します。
Node
const crawlLimited = await firecrawl.getCrawlStatus(crawlJobId, {
  autoPaginate: true,
  maxPages: 2,
  maxResults: 50,
  maxWaitTime: 15,
});
console.log('クロール制限:', crawlLimited.status, 'ドキュメント数:', crawlLimited.data.length, '次:', crawlLimited.next);

バッチスクレイプ

waiter メソッド batchScrape を使うか、ジョブを開始して手動でページングします。
シンプルなバッチスクレイプ(自動ページネーション、デフォルト)
  • 既定のフローは Batch Scrape を参照してください。
ページネーション制御による手動バッチスクレイプ(単一ページ)
  • ジョブを開始し、autoPaginate: false を指定して1ページずつ取得します。
Node
const batchStart = await firecrawl.startBatchScrape([
  'https://docs.firecrawl.dev',
  'https://firecrawl.dev',
], { options: { formats: ['markdown'] } });
const batchJobId = batchStart.id;

const batchSingle = await firecrawl.getBatchScrapeStatus(batchJobId, { autoPaginate: false });
console.log('バッチ単一ページ:', batchSingle.status, 'ドキュメント数:', batchSingle.data.length, '次:', batchSingle.next);
制限付きの手動バッチスクレイプ(自動ページネーション+早期停止)
  • 自動ページネーションは有効のまま、maxPagesmaxResults、または maxWaitTime で早期停止します。
Node
const batchLimited = await firecrawl.getBatchScrapeStatus(batchJobId, {
  autoPaginate: true,
  maxPages: 2,
  maxResults: 100,
  maxWaitTime: 20,
});
console.log('バッチ制限:', batchLimited.status, 'ドキュメント:', batchLimited.data.length, '次:', batchLimited.next);

エラーハンドリング

この SDK は Firecrawl API から返されるエラーを処理し、適切な例外を送出します。リクエスト中にエラーが発生した場合は、わかりやすいエラーメッセージ付きの例外が送出されます。上記の例では、try/catch ブロックを使ってこれらのエラーを扱う方法を示しています。