検索コードはそのまま、base URL だけ変更
Search1API はほかの 7 つの検索 API のリクエスト・レスポンス形式に対応しています。いずれかの API 向けに書いたプロジェクトは、SDK、パラメーター、レスポンスを読むコードを変えずに、base URL と API キーだけを差し替えます。
https://api.search1api.com/compat/searxng/{key}/compat/tavily/compat/exa/compat/firecrawl/compat/jina/r /compat/jina/s/compat/bing/v7.0/search/compat/brave/res/v1/web/search
レスポンスは元の API の形式で返るため、クライアントはこれまでどおり解析できます。
公式 SDK や Open WebUI、LangChain などのクライアントは、base URL を変えるだけで使えます。
結果は元のレスポンス構造で返ります。対応するデータがないフィールドは空になり、値を作り出すことはありません。
エラーは元の API のエラー形式で、401、402、429 などのステータスコードとともに返ります。
対応 API
SearXNG / Tavily / Exa / Firecrawl / Jina / Bing v7 / Brave
変更するのは 2 つの値
元のサービスのキーを Search1API のキーに置き換え、クライアントを対応する base URL に向けます。
base URL を Tavily SDK に渡します。Open WebUI では TAVILY_API_BASE_URL で指定します。
tavily-python — python difffrom tavily import TavilyClient-client = TavilyClient(api_key="tvly-YOUR_TAVILY_KEY")+client = TavilyClient(+ api_key="YOUR_SEARCH1API_KEY",+ api_base_url="https://api.search1api.com/compat/tavily",+)response = client.search("hono cloudflare workers", max_results=5)
対応 API
各 API は api.search1api.com 上の専用パスで提供され、キーはクライアントが通常使う認証ヘッダーで送ります。
| API | パス |
|---|---|
| SearXNG | /compat/searxng/{key}検索・ニュース・画像(エンジンとカテゴリーの指定に対応)キーの送り先: URL のパス |
| Tavily | /compat/tavily検索、extractキーの送り先: Authorization: Bearer |
| Exa | /compat/exa検索、contentsキーの送り先: x-api-key |
| Firecrawl | /compat/firecrawlscrape と検索(v1・v2)キーの送り先: Authorization: Bearer |
| Jina | /compat/jina/r, /compat/jina/sReader と検索キーの送り先: Authorization: Bearer |
| Bing Web Search v7 | /compat/bing/v7.0/searchWeb・ニュース・画像検索キーの送り先: Ocp-Apim-Subscription-Key |
| Brave Search | /compat/brave/res/v1/web/searchWeb・ニュース・画像検索キーの送り先: X-Subscription-Token |
仕組み
Search1API のリクエストに変換
各リクエストは対応する Search1API の検索・ニュース・クロールのリクエストに変換され、クライアントが期待する形式で返ります。
キー・クレジット・制限は共通
互換リクエストの料金はネイティブのリクエストと同じで、同じレート制限に数えられます。ページ全文の読み取りは 1 ページあたり 1 クレジットです。
未対応のオプションは無視
Search1API が適用できないオプションを含むリクエストも成功します。Tavily の生成回答のようなフィールドは空で返ります。
互換 API の対象は検索、ニュース、画像検索、単一ページの読み取りです。生成回答、構造化抽出、スクリーンショット、サイトマップ、非同期クロールジョブは含まれません。
テスト済みのクライアント
次のクライアントを変更せずに互換エンドポイントで実行しました:tavily-python と @tavily/core、exa-py と exa-js、firecrawl-js と firecrawl-py の AsyncFirecrawl・V1FirecrawlApp、LangChain の SearXNG・Bing・Brave ラッパー、Open WebUI が SearXNG・Jina・Bing に送るリクエスト。
よくある質問
どのキーを使いますか?
Search1API の API キーを、クライアントが元のサービスのキーを送っていた場所で送ります。Tavily・Firecrawl・Jina は Bearer ヘッダー、Exa は x-api-key、Bing は Ocp-Apim-Subscription-Key、Brave は X-Subscription-Token、SearXNG は URL のパスです。
互換リクエストの料金は?
対応する Search1API のリクエストと同じです。検索 1 回で 1 クレジット、ページ全文を読み取るごとに 1 クレジットが加わります。Exa SDK と Jina の検索は既定で結果ページを読み取るため、既定の 10 件検索は最大 11 クレジットです。Exa の contents: false、Jina の X-Respond-With: no-content で読み取りをオフにできます。
結果は元のサービスと同じになりますか?
いいえ。結果は Search1API のエンジンによるもので、元の API の形式で返ります。順位、スニペット、利用できるフィールドは異なります。クライアントがスコアを必要とする場合、スコアは順位から算出します。
Search1API が対応していないオプションはどうなりますか?
無視され、リクエストは成功します。変換されるオプションと空になるフィールドは各ドキュメントページに記載しています。
これらの API のすべてのクライアントで使えますか?
base URL やエンドポイントを変更できるクライアントで使えます。URL が固定されたクライアントは向け先を変えられません。firecrawl-py の既定の同期クライアントは URL のホストしか使いませんが、AsyncFirecrawl と V1FirecrawlApp は使えます。
SearXNG のキーを URL に含めずに済みますか?
SearXNG クライアントは認証ヘッダーを送れないため、できません。URL は秘密情報として扱い、ダッシュボードでこの URL 専用のキーを作成すれば個別に無効化できます。Search1API は自社のログではキーを伏せて記録します。
さらに詳しく
今のクライアントで試す
新規アカウントには 100 クレジットが付与されます。キーを作成し、base URL を変えて、今あるコードをそのまま実行してください。