TypeScript SDK

Node.js と TypeScript 向け Web 検索 API

公式 TypeScript クライアントは公開 API の全エンドポイントを型付きレスポンスでカバーします。存在しないフィールドへのアクセスは実行時の事故ではなくコンパイルエラーになります。認証、タイムアウト、リトライ、deepcrawl のポーリングも引き受けます。

インストールbash
npm install @search1api/client
export SEARCH1API_API_KEY="your-api-key"
クライアントが引き受けること

公開契約に対して型付けされ、認証、リトライ、deepcrawl のポーリングもすでに書かれています。

1
端から端まで型付き

リクエストとレスポンスが公開 OpenAPI 契約に対して型付け。

2
catch できるエラー

認証、クレジット、バリデーション、レート制限、サーバー障害に個別クラス。

3
Node 以外でも動く

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.tsts
import { 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.tsts
const 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 無料クレジット付き、クレジットカード不要。