【AI】Claude APIのWeb Fetchツールで指定URLを読み込む方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

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向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【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 を付け、ツール定義の typeweb_fetch_20250910 を指定します。

Python公式SDK(anthropic)では、client.beta.messages.createbetas 引数にベータヘッダー名を渡します。

基本的な実装手順

Python公式SDKを使った実装手順を3ステップで示します。

STEP
anthropicライブラリを準備する

SDKをインストールし、環境変数にAPIキーを設定します。

pip install anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
STEP
web_fetchツールを付けてリクエストする

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リクエストあたりの取得回数に上限を設けられます。

STEP
レスポンスから取得結果を読む

レスポンスの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つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • 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を読み込む方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • Web Fetchツールは、サーバー側で指定URLの本文とPDFを取得するサーバーツール。
  • 有効化にはベータヘッダー web-fetch-2025-09-10 と type: web_fetch_20250910 の指定が必要。
  • 取得できるのは会話に登場済みのURLだけで、allowed_domains・max_uses・max_content_tokensで範囲と量を絞れる。
  • ツールの追加料金は無く、取得した本文のトークン分だけ課金される。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次