いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「Claude APIで指定したURLのページ内容をそのまま読み込ませたい」とお考えではありませんか?
Claude APIには、モデルにWebページやPDFの本文を取得させるWeb Fetchツールが用意されています。
Web Fetchツールを使うと、URLを渡すだけでページ全文をモデルのコンテキストに読み込ませることが可能です。



サーバー側で取得まで済ませてくれるので、スクレイピングのコードを書かなくて済みます。
ということで、本記事ではClaude APIのWeb Fetchツールで指定URLを読み込む方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【AI】Claude APIのWeb Fetchツールで指定URLを読み込む方法
早速、Claude APIのWeb Fetchツールで指定URLを読み込む方法を見ていきます。
Web Fetchツールの仕組み
Web Fetchツールは、サーバーツールと呼ばれる種類のツールです。
モデルがツールを呼び出すと、Anthropic側のサーバーがリクエスト中にURLへアクセスし、取得した本文を会話へ差し込みます。
開発側でHTTPリクエストを送ったり、tool_resultを返したりする処理は不要です。
PDFのURLを渡した場合は、base64エンコードされたPDFとして取得され、添付PDFと同じように処理されます。



Web検索ツールが「キーワードで探す」役割なのに対し、Web Fetchツールは「決め打ちしたURLを読む」役割です。
有効化にはベータヘッダーが必要
Web Fetchツールはベータ機能として提供されています。
リクエストにベータヘッダー web-fetch-2025-09-10 を付け、ツール定義の type に web_fetch_20250910 を指定します。
Python公式SDK(anthropic)では、client.beta.messages.create の betas 引数にベータヘッダー名を渡します。
基本的な実装手順
Python公式SDKを使った実装手順を3ステップで示します。
SDKをインストールし、環境変数にAPIキーを設定します。
pip install anthropic
export ANTHROPIC_API_KEY="sk-ant-..."tools配列にweb_fetchのツール定義を追加し、ユーザーメッセージにURLを含めて送ります。
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
betas=["web-fetch-2025-09-10"],
messages=[
{
"role": "user",
"content": "https://www.anthropic.com/news の内容を3行で要約して",
}
],
tools=[
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5,
}
],
)
for block in response.content:
if block.type == "text":
print(block.text)max_usesを指定すると、1リクエストあたりの取得回数に上限を設けられます。
レスポンスのcontentには、server_tool_useブロックとweb_fetch_tool_resultブロックが並びます。
{
"content": [
{
"type": "server_tool_use",
"id": "srvtoolu_01234567890abcdef",
"name": "web_fetch",
"input": { "url": "https://www.anthropic.com/news" }
},
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_01234567890abcdef",
"content": {
"type": "web_fetch_result",
"url": "https://www.anthropic.com/news",
"content": {
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "取得した本文..."
},
"title": "News",
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:00Z"
}
}
],
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"server_tool_use": { "web_fetch_requests": 1 }
}
}モデルの最終回答は、typeがtextのブロックに入ります。
for block in response.content:
if block.type == "server_tool_use":
print("取得URL:", block.input["url"])
elif block.type == "web_fetch_tool_result":
result = block.content
if getattr(result, "type", None) == "web_fetch_tool_result_error":
print("失敗:", result.error_code)
else:
document = result.content
print("タイトル:", document.title)
print("取得日時:", result.retrieved_at)


取得に成功したかどうかは、web_fetch_tool_resultブロックの中身で判定できます。
取得できるURLには制限がある
Web Fetchツールが取得できるのは、会話にすでに登場したURLだけです。
ユーザーメッセージに書かれたURL、開発側のツール実行結果に含まれるURL、直前のWeb検索やWeb Fetchの結果に出てきたURLが対象になります。
モデルが自分の出力の中だけで組み立てたURLは、データ持ち出し対策のため取得できません。
会話に無いURLを取得しようとすると、error_codeにurl_not_in_prior_contextが返ります。



外部から受け取った文章をそのままモデルへ渡すときは、URL制限の挙動を意識しておくと安心です。
ドメイン制限と取得量のコントロール
取得先を絞りたい場合は、allowed_domainsに許可ドメインの配列を渡します。
特定ドメインだけ除外したい場合は、blocked_domainsを使います(allowed_domainsとの併用は不可)。
大きなページを丸ごと読み込むとトークンを大量に消費するため、max_content_tokensで本文の上限トークン数を指定できます。
引用元を残したい場合は、citationsにenabled: trueを渡すと、モデルの回答に引用位置の情報が付きます(初期値は無効)。
tools=[
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 3,
"allowed_domains": ["docs.claude.com", "www.anthropic.com"],
"max_content_tokens": 20000,
"citations": {"enabled": True},
}
]Web検索ツールと組み合わせる
URLが手元に無く「◯◯について書かれた記事を読んで」と依頼したい場合は、Web検索ツール(web_search_20250305)を一緒に有効化します。
モデルはまずWeb検索でページを探し、見つけたURLをWeb Fetchツールで取得して詳しく回答します。
response = client.beta.messages.create(
model="claude-sonnet-5",
max_tokens=4096,
betas=["web-fetch-2025-09-10"],
messages=[
{
"role": "user",
"content": "Anthropic公式サイトでMCPを解説した記事を探して、要点をまとめて",
}
],
tools=[
{"type": "web_search_20250305", "name": "web_search", "max_uses": 3},
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5,
"citations": {"enabled": True},
},
],
)


「探す」と「読む」を1リクエストで完結させられます。
料金とトークン消費
Web Fetchツール自体の追加料金はかかりません。
課金対象は、取得した本文がコンテキストに入ることで増える通常の入力トークンだけです。
目安として、10KBのページで約2,500トークン、100KBのドキュメントで約25,000トークン、500KBのPDFで約125,000トークンほど消費します。
取得回数は、usageのserver_tool_use.web_fetch_requestsで確認できます。
print(response.usage.server_tool_use.web_fetch_requests)| 【当サイト】おすすめフリーランスエージェント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 FetchツールとWeb検索ツールの違いは何ですか?
Web検索ツールはキーワードから関連ページを探すツールで、Web Fetchツールはすでに分かっているURLの本文を読むツールです。
記事を探して読ませたい場合は、Web検索ツールとWeb Fetchツールの両方を有効化して組み合わせます。
JavaScriptで描画されるページも取得できますか?
Web Fetchツールはテキスト・HTML・PDFに対応しており、JavaScriptで動的に描画されるページには対応していません。
ブラウザでの描画が必要なページは、別途ブラウザ操作系のツールを検討します。
取得に失敗するとどうなりますか?
APIは200を返し、web_fetch_tool_resultの中にweb_fetch_tool_result_errorとしてerror_codeが入ります。
url_not_accessible、url_not_allowed、url_not_in_prior_context、too_many_requests、unsupported_content_type、max_uses_exceededなどのコードがあります。
取得したページの鮮度はどうなりますか?
Web Fetchツールは取得結果をキャッシュするため、常に最新版が返るとは限りません。
キャッシュの挙動はAnthropic側で自動的に管理されます。
まとめ
今回は、Claude APIのWeb Fetchツールで指定URLを読み込む方法について解説しました。
以下が本記事のまとめになります。



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



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








