> ## 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.

# API DeepSeek Web Search и Fetch

> Нативные API инструментов Search / Fetch от DeepSeek: поиск в интернете по запросу, получение любого URL в формате Markdown для агентов и RAG. APIYI предоставляет /v1/tools/search и /v1/tools/fetch с тарификацией за успешный запрос; клиенты с крупным депозитом платят по официальной цене.

DeepSeek предлагает два автономных API инструментов для агентов и RAG-пайплайнов, которым требуются актуальные веб-данные:

* **Search**: отправьте запрос и получите структурированные результаты веб-поиска (заголовок, ссылка, краткие описания, опционально — содержимое страницы)
* **Fetch**: отправьте URL и получите содержимое страницы, уже преобразованное в Markdown

Это **не чат-модели**. Они не расходуют tokens и тарифицируются **за каждый успешный запрос**. Ваш код определяет, когда и что искать, а затем передает результаты в любую модель.

> [!NOTE]
>
> **Названия моделей**: `deepseek-search`, `deepseek-fetch`. **Эндпоинты**: `POST /v1/tools/search`, `POST /v1/tools/fetch`. Доступны в группах `default` / `svip`.
> Все данные на этой странице получены в ходе тестирования APIYI 21 октября 2026 г. (UTC+8).

> [!WARNING]
>
> **Ключи из группы ClaudeCode не могут вызывать эти два API.** Они возвращают ошибку 503 `no available channels for model deepseek-search`. Создайте отдельный ключ в группе `default` или `svip`.

## Что это такое и когда это использовать

| | Поиск | Получение |
| - | - | - |
| Входные данные | Запрос (поддерживает такие операторы, как `site:` и `lang:`) | Один URL HTTP / HTTPS |
| Выходные данные | 1–50 результатов поиска, тело страницы опционально | Заголовок страницы + тело в Markdown |
| Типичное применение | Поиск в вебе для агентов, актуальный контекст для RAG, мониторинг новостей и тем | Чтение отдельной страницы из результатов, обход сайта с документацией, передача страницы модели для суммаризации |
| Измеренная задержка | 1,6–3,0 с | 1,6–5 с (зависит от целевого сайта) |

Обычный сценарий — **сначала поиск, затем получение нескольких результатов**: `summary` каждого результата достаточно для оценки релевантности моделью, поэтому запрашивайте целиком только те страницы, которые вам действительно нужны.

### Как это соотносится со встроенным поиском в Claude Code

На этой странице описан **обычный API**: ваш код вызывает `/v1/tools/search` и `/v1/tools/fetch` напрямую.

В таких клиентах, как Claude Code и Codex, веб-поиск, инициируемый моделью, выполняется через серверный инструмент (`web_search`) внутри chat API — это совершенно другой механизм. APIYI добавит поддержку встроенного поиска для моделей DeepSeek в этих клиентах в одном из следующих релизов и объявит об этом отдельно.

## Цены

| API | Официальная цена | Базовая цена APIYI | Клиенты с крупным депозитом платят (÷1.2) | Обычные клиенты платят (÷1.1) |
| - | - | - | - | - |
| Поиск (`deepseek-search`) | \$0.75 / 1 000 запросов | \$0.90 / 1 000 запросов | **\$0.75 / 1 000 запросов** | около \$0.82 / 1 000 запросов |
| Извлечение (`deepseek-fetch`) | \$0.75 / 1 000 запросов | \$0.90 / 1 000 запросов | **\$0.75 / 1 000 запросов** | около \$0.82 / 1 000 запросов |

> [!NOTE]
>
> **Ценообразование в одном предложении: тариф рассчитан на основе «клиентов с крупным депозитом и бонусом 20%», поэтому с учетом бонуса цена соответствует официальной.** Базовая цена составляет \$0.0009 за запрос; с учетом 20% [бонуса за пополнение](/ru/faq/recharge-promotions) фактическая стоимость составляет \$0.00075 за запрос, **что соответствует официальной цене DeepSeek**. Обычные клиенты с бонусом 10% платят примерно в 1.09 раза больше официальной цены. Цены **включают налоги**, возможно выставление счетов. DeepSeek не предоставляет скидок на эти API, и APIYI не закладывает в них прибыль: они предлагаются для **гарантии доступности и удобства клиентов**. Один ключ APIYI покрывает поиск, извлечение и все основные модели — отдельный аккаунт DeepSeek или его пополнение не требуются.

> [!NOTE]
>
> Цены на модели синхронизированы с официальными тарифами и могут изменяться вслед за ними; приведенная выше таблица носит исключительно ознакомительный характер, а актуальные данные всегда представлены на вкладке **Тарифы на модели** в верхнем меню навигации: [Тарифы на модели](/en/models/index).

**Правила тарификации** (такие же, как и для официального API):

* **Тарифицируются только успешные запросы**: HTTP 200 с результатом
* Ошибки параметров (400) и сбои извлечения (404) **не тарифицируются**
* Цена **не** зависит от `count`, `need_content` или длины ответа: 1 результат или 50 результатов с телом страницы считаются за один запрос
* Каждый вызов фиксируется отдельной строкой в логах консоли под именем модели `deepseek-search` или `deepseek-fetch`, что позволяет сверять расходы по моделям

## Быстрый старт

```bash Search 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 Fetch 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` всегда является пустой строкой). Примерно удваивает размер ответа |
| `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 символов, без имени пользователя и пароля |

## Поля ответа

**Поиск** возвращает `{"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` |

**Извлечение** возвращает `{"title": "...", "content": "..."}`, где `content` — содержимое в формате Markdown.

## Результаты тестирования

Протестировано 2026-10-21 (UTC+8):

| Сценарий | Результат | Тарификация |
| - | - | - |
| Поиск, `count=5` | ✅ 5 результатов, 1,8 с | 1 запрос |
| Поиск, `count=5` + `need_content` | ✅ все 5 с телом, ответ 32 КБ | 1 запрос |
| Поиск, `count=50` | ✅ 50 результатов, ответ 180 КБ, 3,0 с | 1 запрос |
| Поиск, оператор `site:` | ✅ все результаты с указанного сайта | 1 запрос |
| Поиск, в `localization` указан IP | ✅ | 1 запрос |
| Поиск, `count=51` / пустой `query` | 400 с указанием причины | Не тарифицируется |
| Извлечение, обычная страница | ✅ Markdown на 6 400 символов, 1,6 с | 1 запрос |
| Извлечение, страница 404 / несуществующий домен / приватный адрес | 404 `failed to fetch URL` | Не тарифицируется |
| Извлечение, некорректный URL | 400 | Не тарифицируется |
| 20 параллельных поисковых запросов | ✅ все 200, выполнены за 2 с | По 1 запросу каждый |

## Что необходимо знать

> **"No results, no charge" rarely applies**
>
> Поисковая система практически всегда возвращает результат: при тестировании строка случайных символов всё равно вернула 3 результата, и запрос был тарифицирован.
> Аналогично, некоторые сайты при отсутствии страницы возвращают главную страницу или страницу с уведомлением вместо 404 («soft 404»); Fetch считает это успешным получением и тарифицирует его.
> Выполняйте валидацию поисковых запросов и URL в собственном коде перед отправкой запроса.

> **Любая ошибка Fetch возвращает 404; выполняйте ветвление по коду состояния HTTP**
>
> Когда Fetch не может получить пригодный для использования контент, он всегда возвращает 404 `failed to fetch URL`, независимо от того, вернула ли целевая страница 404, домен не существует, адрес является приватным или сайт отклонил доступ.
> Поле `type` в теле ошибки всегда имеет значение `shell_api_error`, поэтому используйте **код состояния HTTP вместе с `message`**, чтобы различать ошибки:
> при 400 исправьте параметры; при 404 попробуйте другой URL; при 429 / 5xx подождите и повторите попытку.

> **Результаты представляют собой исходный сторонний веб-контент; относитесь к ним как к ненадежным входным данным**
>
> Search и Fetch возвращают исходный контент из интернета, который может содержать рекламу, недостоверную информацию или даже prompt-инъекции, нацеленные на AI.
> При передаче результатов модели явно указывайте, что это внешний веб-контент, а не инструкции. При отображении результатов на веб-странице или в приложении экранируйте HTML.

> **Лимиты запросов**
>
> Лимиты вышестоящего сервиса составляют 100 QPS для Search и 25 QPS для Fetch, при этом для Fetch действует отдельный лимит на каждый целевой домен.
> Превышение лимита возвращает 429; подождите немного и повторите попытку. При получении большого количества страниц с одного и того же сайта ограничивайте частоту запросов на стороне клиента.

## FAQ

> **Чем это отличается от веб-поиска OpenAI / Claude / Gemini?**
>
> Это **встроенные инструменты чат-моделей**: модель сама решает, искать ли информацию и что именно искать, а поисковые запросы тарифицируются дополнительно как вызовы инструментов (у OpenAI `web_search` это \$10 за 1 000 вызовов).
> На этой странице описан **автономный API поиска**: ваш код определяет, когда и что искать, стоимость запроса составляет лишь малую часть от указанной суммы, а результаты можно передавать в любую модель.
> Информацию о встроенных инструментах см. в разделах [OpenAI Web Search](/ru/api-capabilities/openai/web-search), [Claude Web Search](/ru/api-capabilities/claude-web-search) и [Gemini Web Search](/ru/api-capabilities/gemini/web-search).

> **Можно ли использовать его в Claude Code?**
>
> Напрямую пока нет. Веб-поиск, запускаемый моделью внутри Claude Code, выполняется через серверный инструмент чат-API, а не через этот API,
> и ключи в группе ClaudeCode также не могут вызывать этот API. В одном из следующих обновлений APIYI добавит поддержку встроенного поиска для моделей DeepSeek в этих клиентах.

> **Насколько актуальны результаты?**
>
> Результаты содержат поле `date`, и вы можете использовать оператор `after:`, чтобы получать только свежий контент. Во время тестирования отображались новости, опубликованные в тот же день.

## Связанная документация

> **[Песочница поиска](/ru/api-capabilities/deepseek-search-fetch/search-api)**
>
> Справочник параметров, коды ошибок и интерактивная панель запросов

> **[Песочница извлечения](/ru/api-capabilities/deepseek-search-fetch/fetch-api)**
>
> Получение любой веб-страницы в формате Markdown

> **[DeepSeek V4 Flash](/ru/api-capabilities/deepseek-v4-flash/overview)**
>
> Чат-модель для совместного использования

> **[Бонусы за пополнение](/ru/faq/recharge-promotions)**
>
> Чем больше сумма пополнения, тем выше бонус; для клиентов с крупными депозитами действует официальная цена


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