/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のない古い検索には、リンクごとのコンテンツフィールドがありません。
料金
各検索には、検索自体に5クレジットがかかります。scrape_optionsが提供されている場合、各スクレイピングされたページは標準の/v1/scrapesレートで請求されます(通常は1ページあたり1クレジット、一部のパーサーはそれ以上のコストがかかります)。合計はcredits_consumedに返されます。
例: