LLMに「Webを検索して事実を確かめてから答える」機能を持たせるとき、各社のAPIで呼び方が全部違います。それぞれの公式ドキュメントを確認したところ、OpenAI互換のchat completionsにパラメータを足すだけで使えるのはOpenRouterの:onlineだけでした。OpenAIとxAIはResponses API、AnthropicはMessages API、GeminiはInteractions APIと、それぞれ別の入口が必要です。既存コードがchat completions前提なら、まず「パラメータ追加で済むか、別APIのクライアントが要るか」で分類してから選びます。
5社の呼び方・引用形式・料金
| プロバイダ | 呼び方 | chat completions | 引用の場所 | 料金 |
|---|---|---|---|---|
| OpenAI | Responses APIでtools:[{"type":"web_search"}] |
検索専用モデルgpt-5-search-apiのみ |
annotations[].url_citation |
1,000回あたり10ドル(推論モデル)/25ドル(非推論) |
| xAI | /v1/responsesでtools:[{"type":"web_search"}] |
レガシー扱い | citationsとannotations[].url_citation |
1,000回あたり5ドル |
| OpenRouter | モデル名に:onlineを付ける、またはplugins:[{"id":"web"}] |
可 | annotations[].url_citation |
Exaエンジン1回0.007ドル、nativeは各社の価格 |
| Anthropic | Messages APIでweb_searchツール |
不可 | citations |
1,000回あたり10ドル |
| Gemini | Interactions APIでtools:[{"type":"google_search"}] |
OpenAI互換エンドポイントでは一部モデルのみ | groundingChunks |
Gemini 3系は1,000回あたり14ドル、月5,000回無料 |
出典は各社の公式ページです。OpenAI、xAI、OpenRouter、Anthropic、Gemini。料金は変わるので、実装時に料金ページを見直してください。
引用形式は3系統ある
根拠のURLをユーザーに見せるなら、引用の取り出し方も揃える必要があります。OpenAI・xAI・OpenRouterはannotations[].url_citationで共通ですが、Anthropicはcitations、GeminiはgroundingChunksとそれぞれ別です。プロバイダを2社以上使うなら、レスポンスから「URLとタイトルの配列」を取り出す薄い共通層を1枚挟んでおくと、後から追加する時に画面側を触らずに済みます。
既存コードへの載せやすさで順番を決める
OpenAI互換のchat completionsを1回呼ぶだけのクライアントがある前提だと、対応の手間は次の順になります。
- OpenRouterの
:online: モデル名の書き換えだけで済みます。 - xAIのResponses API: 小さなクライアントを1つ追加します。
- OpenAIのResponses API: 検索以外の生成処理もResponses APIへ寄せるかの判断が発生し、影響範囲が広くなります。
費用だけを見るなら、1商品1回のような低頻度の用途ではGeminiの月5,000回無料が大きく、専用クライアントを1本書く価値があります。
自分の知識で答えず公式ページで確かめる
この比較を作る前に、私は自分の知識で「xAIはchat completionsにsearch_parametersを足すだけで検索できる」と説明していました。公式ドキュメントを取得して確かめると、その記述は既に消えており、現行はResponses APIのweb_searchツールでした。Geminiも、generateContentにgroundingMetadataが返る方法はLegacyのページに移動していました。5社のうち2社で知識が古くなっていたので、この分野は必ず実装直前に公式ページを開いて確認してください。