> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DeepSeek Web検索およびFetch API

> DeepSeekネイティブのSearch / Fetch tool APIです。クエリによるWeb検索や任意のURLをMarkdownとして取得可能で、エージェントやRAGに活用できます。APIYIは /v1/tools/search および /v1/tools/fetch を提供しており、成功したリクエストごとに課金されます。大口チャージのお客様は公式価格と同額でご利用いただけます。

DeepSeekは、リアルタイムのWebデータを必要とするエージェントやRAGパイプライン向けに、2つの独立したツールAPIを提供しています：

* **Search**：クエリを送信し、構造化されたWeb検索結果（タイトル、リンク、要約、任意のページ本文）を取得します
* **Fetch**：URLを送信し、すでにMarkdownへ変換されたページ本文を取得します

これらは**チャットモデルではありません**。tokenを消費せず、**成功したリクエストごとに課金**されます。コード側で検索のタイミングと内容を決定し、その結果を任意のモデルに渡します。

> [!NOTE]
>
> **モデル名**：`deepseek-search`、`deepseek-fetch`。**エンドポイント**：`POST /v1/tools/search`、`POST /v1/tools/fetch`。`default` / `svip` グループで利用可能です。
> このページのすべてのデータは、2026年10月21日 (UTC+8) 時点のAPIYIによるテスト結果に基づいています。

> [!WARNING]
>
> **ClaudeCodeグループのキーでは、これら2つのAPIを呼び出すことはできません。** 503 `no available channels for model deepseek-search` が返されます。`default` または `svip` グループで個別のキーを作成してください。

## 概要と使い分け

| | Search | Fetch |
| - | - | - |
| 入力 | クエリ（`site:` や `lang:` などの演算子をサポート） | 1つの HTTP / HTTPS URL |
| 出力 | 1〜50件の検索結果、ページ本文（オプション） | ページタイトル + Markdown本文 |
| 主な用途 | エージェントによるWeb検索、RAG用の最新コンテキスト取得、ニュースやトピックのモニタリング | 検索結果から1ページを読み込む、ドキュメントサイトをクロールする、要約のためにページをモデルに入力する |
| 実測レイテンシ | 1.6〜3.0秒 | 1.6〜5秒（対象サイトに依存） |

一般的なパターンは\*\*「まずSearchを実行し、その後いくつかの結果をFetchする」\*\*ことです。各結果の `summary` だけでモデルが関連性を判断するには十分なため、全文が必要なページのみを取得してください。

### Claude Code の組み込み検索との関係

このページで説明しているのは**通常の API** です。コードから `/v1/tools/search` および `/v1/tools/fetch` を直接呼び出します。

Claude Code や Codex などのクライアントでは、モデルによって開始されるWeb検索は chat API 内のサーバー側ツール（`web_search`）を経由するため、別物となります。APIYI では、今後のリリースでこれらのクライアントにおける DeepSeek モデル向けの組み込み検索をサポートする予定であり、別途アナウンスいたします。

## 料金

| API | 公式価格 | APIYI 定価 | 大口チャージのお客様のお支払い額 (÷1.2) | 一般のお客様のお支払い額 (÷1.1) |
| - | - | - | - | - |
| Search (`deepseek-search`) | \$0.75 / 1,000リクエスト | \$0.90 / 1,000リクエスト | **\$0.75 / 1,000リクエスト** | 約\$0.82 / 1,000リクエスト |
| Fetch (`deepseek-fetch`) | \$0.75 / 1,000リクエスト | \$0.90 / 1,000リクエスト | **\$0.75 / 1,000リクエスト** | 約\$0.82 / 1,000リクエスト |

> [!NOTE]
>
> **価格を一言で表すと：「20%ボーナスが適用される大口チャージのお客様」を基準に設定されており、ボーナス適用後は公式価格と同等になります。** 定価は1リクエストあたり\$0.0009ですが、20%の[チャージボーナス](/ja/faq/recharge-promotions)を適用すると実質コストは1リクエストあたり\$0.00075となり、**DeepSeekの公式価格と同額**になります。10%ボーナスが適用される一般のお客様の場合、公式価格の約1.09倍のお支払いとなります。価格は**税込**であり、請求書の発行に対応しています。DeepSeekはこれらのAPIに対して割引を提供しておらず、APIYIも利益を目的とした価格設定を行っていません。これらは**安定供給の確保とお客様へのサービス提供**を目的として提供されています。APIYIのキーが1つあれば、別途DeepSeekのアカウント作成やチャージを行うことなく、search、fetch、およびすべての主要モデルをご利用いただけます。

> [!NOTE]
>
> モデルの価格は公式価格に連動しており、公式価格の改定に伴い変動する場合があります。上記の表は参考用であり、トップナビゲーションの**モデル価格**タブが正式な情報源となります：[モデル価格](/en/models/index)。

**課金ルール**（公式APIと同様）：

* **リクエストが成功した場合のみ課金されます**：結果が返されたHTTP 200
* パラメータエラー（400）および取得失敗（404）は**課金されません**
* 料金は`count`、`need_content`、またはレスポンスの長さには**依存しません**：結果が1件であっても、ページ本文を含む50件の結果であっても、同じ1回のリクエストとして扱われます
* 各呼び出しはコンソールログ内でモデル名`deepseek-search`または`deepseek-fetch`として個別の行に記録されるため、モデルごとに照合できます

## クイックスタート

```bash 検索 theme={null}
curl https://api.apiyi.com/v1/tools/search \
  -H "Authorization: Bearer $APIYI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "DeepSeek V4 release",
    "count": 5
  }'
```

```bash 取得 theme={null}
curl https://api.apiyi.com/v1/tools/fetch \
  -H "Authorization: Bearer $APIYI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://docs.apiyi.com/en"
  }'
```

```python Python theme={null}
import os
import requests

BASE = "https://api.apiyi.com/v1/tools"
HEADERS = {"Authorization": f"Bearer {os.environ['APIYI_API_KEY']}"}

# 1. Search
r = requests.post(f"{BASE}/search", headers=HEADERS, timeout=60,
                  json={"query": "DeepSeek V4 release", "count": 5})
r.raise_for_status()
results = r.json()["results"]
for item in results:
    print(item["rerank_score"], item["title"], item["url"])

# 2. Fetch the top result
r = requests.post(f"{BASE}/fetch", headers=HEADERS, timeout=60,
                  json={"url": results[0]["url"]})
if r.status_code == 200:
    page = r.json()
    print(page["title"])
    print(page["content"][:500])
else:
    print("Fetch failed, not billed:", r.status_code, r.json()["error"]["message"])
```

リクエストボディに `model` フィールドを含める必要は**ありません**。送信された場合でも無視されます。

## リクエストパラメータ

### 検索: `POST /v1/tools/search`

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `query` | string | ✓ | 検索クエリ、1〜128文字、空白のみは不可。以下の演算子をサポートします |
| `count` | int | | 取得件数、1〜50、デフォルトは10。**料金には影響しません** |
| `need_content` | bool | | ページ本文を返すかどうか、デフォルトは `false`（その場合 `content` は常に空文字列になります）。レスポンスサイズが約2倍になります |
| `ori_question` | string | | この検索の背景にあるユーザーの元の質問、1〜128文字、意図の理解に使用されます |
| `localization` | string | | **ユーザーのIPアドレス**、地域に合わせた結果を優先するために使用されます。**ロケールコードではありません**: `ja-JP` は400を返します |

**検索演算子**（`query` 内）:

| 演算子 | 効果 | 例 |
| - | - | - |
| `site:` | 指定したサイトのみ。複数の場合は `OR` で結合 | `site:arxiv.org OR site:github.com RAG` |
| `-site:` | サイトを除外 | `LLM -site:reddit.com` |
| `"..."` / `-"..."` | 完全一致フレーズの必須 / 除外 | `"thinking mode" -"deprecated"` |
| `-keyword` | キーワードを含むページを除外 | `apple -iphone` |
| `lang:` | 言語を制限、カンマ区切り | `lang:zh,en DeepSeek` |
| `after:` / `before:` | 公開日でフィルタリング（年または完全な日付） | `after:2026-10-01 AI news` |

### フェッチ: `POST /v1/tools/fetch`

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `url` | string | ✓ | HTTP / HTTPS URL、最大8192文字、ユーザー名やパスワードは含めないでください |

## レスポンスフィールド

**Search** は `{"results": [...]}` を返します。各結果には以下が含まれます：

| フィールド | 説明 |
| - | - |
| `title` / `url` | タイトルとリンク |
| `snippet` | 短い要約（約100〜200文字）。人間への表示用です |
| `summary` | 長い要約（約600〜800文字）。**モデルへの入力用**です |
| `content` | ページ本文。`need_content` が `false` の場合は空文字列になります |
| `rerank_score` | 関連性スコア（0〜3）。**1.5以上が高品質**です |
| `authority` | サイトの権威性（0〜4）、`-1` = 不明。**3以上が高権威**です |
| `date` | 公開日時（UTC、RFC 3339）。`null` の場合があります |
| `site_name` / `site_icon` | サイト名とアイコン。`null` の場合があります |

**Fetch** は `{"title": "...", "content": "..."}` を返します。ここで `content` は Markdown 本文です。

## テスト結果

2026-10-21 (UTC+8) にテスト実施:

| ケース | 結果 | 課金 |
| - | - | - |
| 検索、`count=5` | ✅ 5件の結果、1.8秒 | 1リクエスト |
| 検索、`count=5` + `need_content` | ✅ 5件すべて本文あり、32 KBレスポンス | 1リクエスト |
| 検索、`count=50` | ✅ 50件の結果、180 KBレスポンス、3.0秒 | 1リクエスト |
| 検索、`site:` 演算子 | ✅ 指定サイトからのすべての結果 | 1リクエスト |
| 検索、`localization` をIPに設定 | ✅ | 1リクエスト |
| 検索、`count=51` / 空の `query` | 具体的な理由付きの400 | 課金なし |
| 取得、通常のページ | ✅ 6,400文字のMarkdown、1.6秒 | 1リクエスト |
| 取得、404ページ / 存在しないドメイン / プライベートアドレス | 404 `failed to fetch URL` | 課金なし |
| 取得、不正なURL | 400 | 課金なし |
| 20件の同時検索 | ✅ すべて200、2秒以内に完了 | 各1リクエスト |

## 事前に知っておくべきこと

> **"No results, no charge" rarely applies**
>
> 検索エンジンはほぼ常に何らかの結果を返します。テストでは、ランダムな文字列を入力した場合でも 3 件の結果が返され、課金対象となりました。
> 同様に、一部のサイトでは存在しないページに対して 404 を返さず、ホームページやお知らせページを表示します（「ソフト 404」）。Fetch はこれを取得成功とみなし、課金対象とします。
> 呼び出しを行う前に、ご自身のコード側でクエリと URL の検証を行ってください。

> **Fetch の失敗はすべて 404 になります。HTTP ステータスコードで分岐してください**
>
> 対象ページが 404 であるか、ドメインが存在しないか、プライベートアドレスであるか、またはサイト側からアクセスを拒否されたかに関わらず、Fetch が利用可能なコンテンツを取得できない場合は常に 404 `failed to fetch URL` を返します。
> エラーレスポンス本文内の `type` フィールドは常に `shell_api_error` となるため、エラーを識別するには **HTTP ステータスコードと `message`** を組み合わせて判別してください。
> 400 の場合はパラメータを修正し、404 の場合は別の URL を試し、429 / 5xx の場合は少し待ってから再試行してください。

> **結果はサードパーティの未加工ウェブコンテンツです。信頼できない入力として扱ってください**
>
> Search および Fetch はインターネット上の未加工のコンテンツを返すため、広告、誤った情報、さらには AI を標的とした prompt インジェクションが含まれている可能性があります。
> 結果をモデルに渡す際は、これが指示ではなく外部のウェブコンテンツであることを明示的に伝えてください。ウェブページやアプリで結果を表示する際は、HTML をエスケープしてください。

> **レート制限**
>
> アップストリームの制限は、Search が 100 QPS、Fetch が 25 QPS であり、Fetch には対象ドメインごとに個別の制限が設けられています。
> 制限を超えると 429 が返されます。少し待ってから再試行してください。同一サイトから多数のページを取得する場合は、クライアント側でスロットリングを行ってください。

## よくある質問

> **OpenAI / Claude / Geminiのウェブ検索とはどのように違いますか？**
>
> これらは**チャットモデルの組み込みtools**です。モデル自身が検索するかどうか、および検索内容を決定し、検索は追加のtools呼び出しとして課金されます（OpenAI `web_search` は1,000回の呼び出しあたり\$10です）。
> 本ページで提供しているのは**スタンドアロンの検索API**です。コード側でいつ何を検索するかを決定でき、単価はそのごくわずかな一部であり、結果は任意のモデルに渡すことができます。
> 組み込みtoolsについては、[OpenAI Web検索](/ja/api-capabilities/openai/web-search)、[Claude Web検索](/ja/api-capabilities/claude-web-search)、および[Gemini Web検索](/ja/api-capabilities/gemini/web-search)を参照してください。

> **Claude Codeで使用できますか？**
>
> 現時点では直接使用できません。Claude Code内でモデルが開始するウェブ検索は、本APIではなくチャットAPIのサーバー側ツールを経由します。また、ClaudeCodeグループのキーでも本APIを呼び出すことはできません。APIYIは今後のリリースで、これらのクライアントにおけるDeepSeekモデルの組み込み検索をサポートする予定です。

> **結果の鮮度はどのくらいですか？**
>
> 結果には`date`フィールドが含まれており、`after:`演算子を使用して最新のコンテンツのみを取得できます。テストでは、当日に公開されたニュースも表示されました。

## 関連ドキュメント

> **[Search Playground](/ja/api-capabilities/deepseek-search-fetch/search-api)**
>
> パラメータリファレンス、エラーコード、ライブリクエストパネル

> **[Fetch Playground](/ja/api-capabilities/deepseek-search-fetch/fetch-api)**
>
> 任意のWebページをMarkdownとして取得

> **[DeepSeek V4 Flash](/ja/api-capabilities/deepseek-v4-flash/overview)**
>
> 組み合わせて利用できるチャットモデル

> **[チャージボーナス](/ja/faq/recharge-promotions)**
>
> チャージ額が多いほどボーナスが増加し、大口チャージのお客様は公式価格でご利用いただけます


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.