/v1/searchesエンドポイントを使用すると、自然言語クエリでウェブを検索し、タイトルと説明付きの重複排除された関連リンクのリストを取得できます。
- クエリを英語で送信
- ウェブ全体から構造化されたリンクを取得
- オプションで返されたすべてのURLを1回のラウンドトリップでスクレイピングし、
markdown_content/html_contentを直接レスポンスに埋め込む - ドメインでフィルタリング、結果の数を制御、スクレイピングのウォールクロックを制限
インストール
基本的な使い方
自然言語クエリを送信し、関連リンクのリストを受け取ります。リクエストパラメータ
結果の数を制限する
ドメインでフィルタリングする
include_domainsは結果をホワイトリストに絞り、exclude_domainsは不要なソースを除外します。これらは組み合わせて使用できます。
scrape_options
scrape_optionsを渡して、返されたすべてのURLを並行してスクレイピングし、レンダリングされたコンテンツを各リンクに直接埋め込みます。これにより、/v1/searchesと/v1/scrapesを別々に呼び出すのに比べて、結果ごとのラウンドトリップが節約されます。
動作
- すべてのリンクは並行してスクレイピングされます。
timeoutはバッチ全体を制限し、各リンク個別ではありません。 - リンクごとのスクレイピング失敗(ネットワークエラー、個々のページタイムアウト)は、そのリンクの
markdown_content/html_contentをnullにしますが、他のリンクは通常通り返されます。 - グローバル
timeoutがすべてのスクレイピングが完了する前に経過した場合、検索はすでに完了したスクレイピングのコンテンツを保持し、進行中のものはnullコンテンツで返されます。 reddit.com/.../comments/...のURLの場合、リクエストは自動的に@olostep/reddit-postパーサーを通じてルーティングされ、構造化されたJSONがクリーンなマークダウンと基本的なHTMLにレンダリングされます。- 結合されたインラインコンテンツが9MBを超える場合、コンテンツフィールドは
nullになり、result.size_exceededがtrueに設定され、result.json_hosted_urlから完全なペイロードを取得できます。
スクレイピングの例
レスポンス
レスポンスにはsearchオブジェクトが含まれます。searchオブジェクトにはid、元のquery、credits_consumed、およびlinksのリストを含むresultが含まれます。
result.links内の各リンクには以下が含まれます:
完全な結果は、
result.json_hosted_urlでホストされたJSONファイルとしても利用可能です — result.size_exceededがtrueの場合に便利です。
過去の検索を取得する
GET /v1/searches/{search_id}は、検索時に保存された内容を返します。これは純粋な冪等の読み取りであり、再スクレイピングや再課金は行われません。scrape_optionsがない古い検索には、リンクごとのコンテンツフィールドがありません。
ストレージ
検索のために保存されたファイルはデフォルトで7日間保持されます。POST /v1/searchesでstorageオブジェクトを渡すことで、より長く、または無期限に保持することができます。この設定は、result.json_hosted_urlでホストされているJSONファイルと、scrape_optionsが設定されている場合は各リンクのスクレイピングされたコンテンツに適用されます。
storageを省略するか、expires_inなしでstorageを送信すると、7dが使用されます。作成レスポンスとGET /v1/searches/{search_id}には、実際の値が含まれます:
cURL
400を返します:
料金
各検索は、検索自体に5クレジットがかかります。scrape_optionsが提供されている場合、各スクレイピングされたページは標準の/v1/scrapesレートで課金されます(通常は1ページあたり1クレジット;一部のパーサーはそれ以上のコストがかかります)。合計はcredits_consumedに返されます。
例: