Node.js と TypeScript 向け Web 検索 API
公式 TypeScript クライアントは公開 API の全エンドポイントを型付きレスポンスでカバーします。存在しないフィールドへのアクセスは実行時の事故ではなくコンパイルエラーになります。認証、タイムアウト、リトライ、deepcrawl のポーリングも引き受けます。
インストール — bashnpm install @search1api/clientexport SEARCH1API_API_KEY="your-api-key"
公開契約に対して型付けされ、認証、リトライ、deepcrawl のポーリングもすでに書かれています。
リクエストとレスポンスが公開 OpenAPI 契約に対して型付け。
認証、クレジット、バリデーション、レート制限、サーバー障害に個別クラス。
Node.js 18 以降と、標準準拠の fetch を持つランタイム。
カバー範囲
search / news / crawl / screenshot / extract / deepcrawl
Node.js から Web を検索する
Web 検索 API は、解析が必要な HTML ページではなく、コードが読める構造化結果(タイトル、リンク、本文)を返します。TypeScript ではその構造が単なる利便性以上の価値を持ちます。レスポンスの形が型付けされ、フィールド名の誤りをリリース前にコンパイラが捕まえるからです。Search1API は 1 つのエンドポイントから十数種類のソースに対して JSON を返し、上位結果の本文を同じレスポンスに含められます。
クライアントが引き受けること
端から端まで型付き
リクエストとレスポンスが公開 OpenAPI 契約に対して型付けされているため、オプション名も結果のフィールドもエディタが把握しています。
全エンドポイントを 1 つのクライアントで
検索、ニュース、クロール、スクリーンショット、サイトマップ、トレンド、抽出、deepcrawl がすべて同じインスタンスのメソッドです。
catch できるエラークラス
認証、クレジット、バリデーション、not found、レート制限、サーバー障害それぞれに専用クラスがあり、ステータスコードとパース済みボディを保持します。
安全なところだけリトライ
タイムアウトは 30 秒。429 と一時的な 5xx は 2 回までリトライします。認証・支払い・バリデーションのエラーはリトライせず、deepcrawl タスクの開始も自動リトライしません。
Node 以外でも動く
Node.js 18 以降に加え、標準準拠の fetch を持つランタイムであれば動作するため、エッジや Worker 環境でも同じクライアントが使えます。
ポーリングを書かない deepcrawl
1 回の await でタスクを開始し、完了時に解決します。タスク ID を保存する必要がある場合のために start・status・wait の各メソッドもあります。
クイックスタート
ダッシュボードでキーを作成し、コンストラクタに渡して検索します。crawlResults を指定すると、上位結果をページ本文ごと同じ呼び出しで受け取れます。
search.ts — tsimport { Search1API } from '@search1api/client';const client = new Search1API({apiKey: process.env.SEARCH1API_API_KEY,});const response = await client.search('latest AI agent frameworks', {maxResults: 10,crawlResults: 3,});for (const result of response.results) {console.log(result.title, result.link);}
手書きのポーリングなしで deepcrawl
サイト全体のクロールは通常、タスクを開始し、ステータスをポーリングし、待機処理を自分で書くことになります。クライアントは 1 回の await でそれを行い、完成したアーカイブの URL で解決します。
deepcrawl.ts — tsconst result = await client.deepcrawl('https://example.com', {type: 'all',});console.log(result.zipUrl);
カバーするエンドポイント
どの経路でも消費するクレジットは同じです。検索・ニュースが 1 クレジット、取得に成功したページごとに 1 クレジット追加。
作られているもの
ライブ Web の根拠を示して回答する Next.js のルートハンドラ。
AI SDK や他のフレームワーク向けにクライアントを包んだエージェントツール。
トピックを監視し Slack にダイジェストを投稿するバックグラウンドジョブ。
推測ではなくドメインの実ページを読み取るエンリッチメント。
Node 専用依存を持ち込めないエッジ関数からの検索。
よくある質問
Node.js から Web を検索するにはどうしますか?
@search1api/client をインストールし、API キーでインスタンス化して await client.search("クエリ") を呼びます。レスポンスは results 配列を含む型付きオブジェクトで、各要素にタイトル、リンク、本文が入ります。HTML の解析もスクレイピングも不要です。
Node.js 以外でも動きますか?
動きます。Node.js 18 以降に加え、標準準拠の fetch を持つランタイムに対応しており、エッジや Worker 環境を含みます。
レート制限に当たるとどうなりますか?
429 は自動的に 2 回までリトライされ、一時的な 5xx も同様です。認証・支払い・バリデーションのエラーはリトライしても解決しないため、即座に reject します。
どの検索エンジンを使えますか?
Google、Bing、DuckDuckGo、Yahoo、GitHub、arXiv、Reddit、X、YouTube、Wikipedia、IMDb、WeChat、Bilibili、Baidu、360、Quark。リクエストの searchService で指定します。
無料枠はありますか?
新規アカウントにはカード不要で 100 クレジット(検索 100 回分)が付きます。検索・ニュースは 1 クレジット、取得に成功したページごとに 1 クレジット追加です。
さらに詳しく
Node.js から検索を始める
インストールは 1 回、試すための 100 無料クレジット付き、クレジットカード不要。