いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「Claude APIだけでWeb検索をして、最新情報をふまえた回答を生成したい」とお考えではありませんか?
Claudeの学習データには知識のカットオフがあり、最近のニュースやライブラリの新バージョンには自力で答えられません。
Anthropicが提供するWeb検索ツールを使うと、検索から結果の読解、出典付きの回答生成までをAPI側が自動でやってくれます。



ツール実行ループを自分で書かなくていいのが一番のメリットです。
ということで、本記事ではClaude APIのWeb検索ツールをPythonで使う方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
Claude APIのWeb検索ツールをPythonで使う方法
早速ですが、Claude APIのWeb検索ツールをPythonで使う方法を解説していきます。
Claude APIのWeb検索ツールとは
Web検索ツールは、Anthropicがサーバー側で実行する「サーバーツール」の一種です。
リクエストのtools に検索ツールの定義を追加すると、Claudeが必要と判断したタイミングで自動的にWeb検索を実行します。
検索クエリの生成、複数回の検索、結果の要約、出典(citations)の付与までを1回のmessages.create() で完結できます。
自前で検索APIを用意したり、ツール結果を返すループを書いたりする必要はありません。



通常のツール使用と違って、検索結果を返すやり取りを開発者側で管理しなくて済みます。
使う準備
Web検索ツールを使う準備は3ステップです。
公式のPython SDKをインストールします。
pip install anthropicAnthropicコンソールでAPIキーを発行し、環境変数に設定します。
export ANTHROPIC_API_KEY="sk-ant-xxxxx"anthropic.Anthropic() はANTHROPIC_API_KEY を自動で読み込みます。
tools にweb_search_20250305 を追加してリクエストします。



追加するのはツール定義だけで、あとはClaudeにおまかせです。
基本的な使い方
最小構成のコードは以下の通りです。
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Python 3.13の新機能を調べて要約して"}
],
tools=[
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 5,
}
],
)
for block in response.content:
if block.type == "text":
print(block.text)web_search_20250305 はツールのバージョン識別子で、日付が新しいバージョンほど機能が追加されています。
max_uses は1リクエストあたりの検索回数の上限で、指定しておくと想定外の検索の連発を防げます。
レスポンスのcontent には、検索の意思表示、検索クエリ(server_tool_use)、検索結果(web_search_tool_result)、出典付きの最終回答(text)が順番に並びます。



最終的な回答テキストだけ欲しい場合は、typeがtextのブロックを拾えばOKです。
検索するドメインを絞り込む
検索対象を信頼できるサイトだけに限定したいときはallowed_domains を指定します。
tools=[
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 3,
"allowed_domains": ["docs.python.org", "peps.python.org"],
}
]逆に特定サイトを除外したいときはblocked_domains を使います。
allowed_domains とblocked_domains の同時指定はできず、両方渡すと400エラーになります。
ドメインはスキームを付けず、example.com やexample.com/blog の形式で書きます。
検索結果を地域に合わせる
user_location を指定すると、検索結果をユーザーの地域向けにローカライズできます。
tools=[
{
"type": "web_search_20250305",
"name": "web_search",
"user_location": {
"type": "approximate",
"city": "Tokyo",
"region": "Tokyo",
"country": "JP",
"timezone": "Asia/Tokyo",
},
}
]type はapproximate 固定で、city・region・country・timezone のうち最低1つを渡します。
country はISO 3166-1 alpha-2の2文字コードで、対応外のコードを渡すと400エラーになります。
出典と検索回数を取得する
Web検索ツールでは引用(citations)が常に有効で、回答テキストのブロックに出典情報が付きます。
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Claude Shannonの誕生日は?"}],
tools=[{"type": "web_search_20250305", "name": "web_search"}],
)
for block in response.content:
if block.type == "text":
print(block.text)
for citation in getattr(block, "citations", None) or []:
print(" 出典:", citation.title, citation.url)
print("検索回数:", response.usage.server_tool_use.web_search_requests)各citationにはurl・title・cited_text(引用元の最大150文字)が含まれます。
実行した検索回数はresponse.usage.server_tool_use.web_search_requests で確認できます。



エンドユーザーに回答を見せるときは、出典リンクも一緒に表示するのが規約上の推奨です。
料金と注意点
Web検索はトークン料金とは別に、1,000検索あたり10ドルが課金されます。
検索1回につき1カウントで、返ってきた結果の件数は料金に影響しません。
検索中にエラーが起きた場合、失敗した検索は課金されません。
max_uses を超えるとweb_search_tool_result がmax_uses_exceeded エラーを返し、レートリミット超過ならtoo_many_requests が返ります。
検索ツールのエラーはHTTP 200のレスポンス本文の中に入ってくるため、ステータスコードだけでなくレスポンスの中身も確認する必要があります。
検索を含む会話を継続するときは、assistantのcontentブロックを受け取ったままの形で送り返します。
検索結果内のencrypted_content を削除・改変すると、次のターンで400エラーになります。



長い検索でstop_reasonがpause_turnになったときは、返ってきたメッセージをそのまま送り返せば処理が続きます。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
Web検索ツールはどのモデルで使えますか?
Claudeの主要なメッセージ対応モデルで利用できます。
対応モデルは追加・変更される可能性があるため、利用前にAnthropicのドキュメントで確認してください。
検索プロバイダはどこですか?
Web検索の裏側では外部の検索エンジンが使われています。
開発者が検索エンジンを選んだり差し替えたりはできません。
検索回数を1回だけに制限できますか?
max_uses に1を指定すれば、1リクエストにつき1検索までに制限できます。
上限を超える検索をClaudeが試みるとmax_uses_exceeded エラーになります。
ストリーミングでも使えますか?
ストリーミングに対応しており、検索クエリや検索結果もイベントとして流れてきます。
検索の実行中はストリームが一時的に停止します。
まとめ
今回は、Claude APIのWeb検索ツールをPythonで使う方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。








