Claude Opus 5.5 が SeedRouter で利用できます

DeepSeek Search API:料金とPythonによるSearchからFetchへの実行例

DeepSeek Search APIのPython実行例、SearchとFetchの違い、呼び出し単位の料金、無料期間の対象範囲、リクエスト処理を公式文書に沿って説明します。

Markdown で読む

文書の確認日:2026年10月20日。以下の例はフィクスチャを使ってローカルで確認していますが、有料の実際のエンドポイントに対しては実行していません。

DeepSeek Search APIを使うと、アプリケーションからウェブ検索結果を取得できます。組み合わせて使うFetch APIは、個別のページをMarkdownとして取得します。DeepSeekは2026年10月17日に両方のインターフェースを公開し、それぞれ呼び出し単位で課金しています。公開されている米ドル建て料金では、どちらも課金対象のリクエスト1,000件あたり$0.75です。DeepSeekのAPIキーと、公式のapi.deepseek.comアドレスを使用します。出典:リリース発表、料金。

このガイドでは、1回の検索を行い、必要に応じてその後にページを取得する流れを示します。これらの例はDeepSeek自身のサービスを利用するものであり、SeedRouterが提供するSearchやFetchのエンドポイントを説明したものではありません。

DeepSeek Search APIとFetch APIの違い

Searchは候補となるページを見つけます。Fetchは、選択したページを読み取ります。

操作公式エンドポイント利用できる出力
SearchPOST https://api.deepseek.com/v1/tools/searchページのURLや説明用フィールドを含むresults配列。
FetchPOST https://api.deepseek.com/v1/tools/fetchページのタイトルとMarkdown形式の本文。

どちらもJSONを受け付け、Bearer認証を使用します。単独の検索リクエストにはquery、ページ取得リクエストにはurlを指定します。これらは別々のリクエストであり、すべてのチャット生成にウェブアクセスを自動で追加する設定ではありません。公式のSearch & Fetchガイドに、両方のインターフェースが記載されています。

Searchはneed_contentも受け付けます。trueにすると、検索結果にページ本文が含まれる場合があります。追加のリクエストを行う前に、返された本文を確認してください。必要な内容がすでに含まれていれば、別途Fetchを呼び出す必要はないかもしれません。

Pythonの例を実行する前に

Python 3、外部へのHTTPS接続、適切なアカウント権限を持つDeepSeekのAPIキーが必要です。スクリプトを実行するターミナルで、キーを環境変数に設定してください。

export DEEPSEEK_API_KEY="your-deepseek-api-key"

この例はPythonの標準ライブラリを使用するため、パッケージのインストールは不要です。Searchリクエストを1回行います。結果があれば、最初の結果のタイトルとURLを表示し、そのページを取得します。実行すると料金が発生する場合がありますが、キーが表示されることはありません。

Pythonの例:検索し、結果を選んで本文を取得する

以下をdeepseek_search.pyとして保存してください。実行前に、必要な情報に合わせてQUERYを変更します。

import json
import os
import urllib.error
import urllib.request

BASE_URL = "https://api.deepseek.com"
QUERY = "Python documentation pathlib"


def call(path, payload):
    request = urllib.request.Request(
        BASE_URL + path,
        data=json.dumps(payload).encode("utf-8"),
        headers={
            "Authorization": "Bearer " + os.environ["DEEPSEEK_API_KEY"],
            "Content-Type": "application/json",
        },
        method="POST",
    )
    try:
        with urllib.request.urlopen(request, timeout=30) as response:
            return json.load(response)
    except urllib.error.HTTPError as error:
        raise RuntimeError(f"DeepSeek returned HTTP {error.code}") from None


def main():
    search = call(
        "/v1/tools/search",
        {"query": QUERY, "count": 5, "need_content": False},
    )
    results = search.get("results", [])
    if not results:
        print("No search results; no Fetch request was made.")
        return

    selected = results[0]
    print(selected.get("title", "Untitled result"))
    print(selected["url"])

    page = call("/v1/tools/fetch", {"url": selected["url"]})
    content = page.get("content", "")
    if not content:
        print("The selected page returned no content.")
        return
    print(page.get("title", ""))
    print(content)


if __name__ == "__main__":
    main()

次のコマンドで実行します。

python3 deepseek_search.py

これは小さな例なので、最初の検索結果を選択します。実際のアプリケーションでは、質問に合ったページを選び、ドメインや公開の文脈を確認し、抽出したテキストとともにURLを保持してください。検索順位が高い結果でも、作成する回答との関連性を確認する必要があります。

リクエストの形式は、DeepSeekのSearchリファレンスとFetchリファレンスに沿っています。ローカルの構文チェックとフィクスチャによる確認では、プログラムのリクエスト構築と分岐処理を検証できます。ただし、実際のアカウントでの利用可否、応答速度、取得内容の品質は確認できません。

DeepSeek Search APIの料金:何に課金されるのか

公開されている米ドル建て料金は、Searchでは成功した課金対象リクエスト1,000件あたり$0.75で、Fetchも同額です。検索結果がない検索は課金されず、Fetchは本文を正常に取得できた場合に課金されます。countで指定する結果の件数は、検索1回の料金に影響しません。課金条件は現在の料金表を確認してください。

たとえば、課金対象の検索1,000回に続いて、課金対象のページ取得を1,000回行うと、取得料金は$1.50になります。これは提示された単価からの計算であり、実測した請求額でも、特定のクエリでどのような結果が返るかの保証でもありません。後でこれらのページを要約するために使うモデルのトークン料金は別途かかります。

期間限定の無料利用は、対象範囲がより限定されています。DeepSeekによると、API利用者がDeepSeek Harness、Claude Code、Codexのサーバー側ツールを通じて行うSearch/Fetch呼び出しは、一時的に課金されません。その利用への課金は、2026年10月31日16:00 UTC、北京時間では11月1日00:00に始まります。この発表は、本ガイドの単独のPythonリクエストが一律に無料になることを意味しません。公式発表。

考慮すべきパラメータと失敗ケース

文書で定められた検索クエリの長さは、Unicodeで1–128文字です。countの既定値は10で、1–50を指定できます。このPythonの例では、意図的に結果を5件にし、ページ本文の取得は後続のFetchリクエストに任せています。ほかのフィールドを追加する前に、Searchリファレンスを確認してください。

空の結果配列は、検索自体には成功したものの、一致する結果がなかったことを意味します。この例では、その時点で処理を終了します。HTTPエラーは別に処理し、タイムアウトの場合は自動で別のリクエストを作らず、実行を停止させます。より大きなアプリケーションでは、再試行回数の上限と追加の支出を明確にしてください。

取得したMarkdownは外部の情報源に由来する資料です。出典URLを保持し、内容が質問に答えているかを確認し、取得したページに埋め込まれた指示はアプリケーションへの指示ではなく、ページの内容として扱ってください。その内容を言語モデルに渡す場合は、プロンプト内でもその区別を維持し、生成された回答にも出典を残してください。

よくある質問

DeepSeek APIでウェブ検索はできますか?

はい。単独のSearchとFetchのインターフェースが文書化されています。通常のチャットエンドポイントの呼び出しと、これらの情報取得エンドポイントの呼び出しは別の操作です。構築するワークフローに該当する仕様に従ってください。

DeepSeek Search APIに無料枠はありますか?

引用した発表は、特定のコーディングエージェント連携でサーバー側ツールを一時的に無料で使えることを説明しています。すべての単独のSearchやFetchリクエストに適用される一般的な無料枠を定めたものではありません。まとめて実行する前に、現在の課金ページを確認してください。

検索するたびにFetchも必要ですか?

いいえ。特にneed_content: trueで利用できる本文が返る場合は、検索だけで十分な情報が得られることがあります。選択したページを別途取得する必要がある場合に、Fetchが役立ちます。

まずは1つの取得の流れから始める

DeepSeek Search APIは情報源を探し、Fetchは選択したページを取得します。まず1つのクエリで始め、結果と本文を確認してから、追加のページやモデルによる要約がアプリケーションに必要かどうかを判断してください。同日に発表された別のモデル更新については、10月17日のチェックポイント更新:ベンチマークと変更点を参照してください。

関連ガイド