· Руководства · 2 мин. чтения
Как интегрировать Яндекс Поиск API в ваше приложение
Пошаговое руководство по подключению Tavily-совместимого поиска для русскоязычного контента.

Стандартные поисковые API (Google, Bing, Brave) плохо работают с русским языком. Они не понимают морфологию, пропускают региональные сайты, дают нерелевантные результаты для кириллицы.
УноАПИ.ru Search решает эту проблему: под капотом Яндекс, но с Tavily-совместимым интерфейсом.
Почему не напрямую в Яндекс?
Яндекс предоставляет Search API, но:
- Сложная OAuth-авторизация
- Нестандартный формат ответов
- Требует привязки к Яндекс Cloud
УноАПИ.ru даёт простой REST API с Bearer-токеном и стандартным JSON.
Шаг 1: Получите API-ключ
- Зарегистрируйтесь на unoapi.ru/dash
- Создайте API-ключ с доступом к сервису “Поиск”
- Сохраните ключ (показывается один раз)
Шаг 2: Сделайте первый запрос
cURL
curl -X POST https://proxy.unoapi.ru/v1/search/yandex \
-H "Authorization: Bearer sk_xxx" \
-H "Content-Type: application/json" \
-d '{
"query": "лучшие рестораны москвы",
"max_results": 10
}'Python
import requests
def search(query: str, max_results: int = 10):
response = requests.post(
"https://proxy.unoapi.ru/v1/search/yandex",
headers={"Authorization": "Bearer sk_xxx"},
json={"query": query, "max_results": max_results}
)
return response.json()
results = search("лучшие рестораны москвы")
for r in results["results"]:
print(f"{r['title']}: {r['url']}")JavaScript/TypeScript
async function search(query: string, maxResults = 10) {
const response = await fetch('https://proxy.unoapi.ru/v1/search/yandex', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({ query, max_results: maxResults })
});
return response.json();
}
const results = await search('лучшие рестораны москвы');
results.results.forEach(r => console.log(`${r.title}: ${r.url}`));Шаг 3: Обработайте результаты
Ответ содержит:
{
"results": [
{
"title": "Топ-50 лучших ресторанов Москвы 2026",
"url": "https://example.ru/restaurants",
"content": "Рейтинг лучших ресторанов столицы по версии...",
"score": 1.0
}
],
"query": "лучшие рестораны москвы"
}| Поле | Описание |
|---|---|
title | Заголовок страницы |
url | Ссылка на источник |
content | Сниппет (релевантный фрагмент) |
score | Выводится из позиции в выдаче, а не из оценки релевантности — Яндекс её не отдаёт |
Расширенные параметры
{
"query": "ремонт квартиры",
"max_results": 20,
"include_domains": ["houzz.ru", "remont.ru"],
"exclude_domains": ["spam-site.ru"]
}- max_results: сколько результатов вернуть, до 200
- include_domains: искать только на этих сайтах
- exclude_domains: исключить сайты
Поле search_depth принимается ради совместимости с Tavily, но ни на что не влияет: глубина выдачи задаётся max_results.
Интеграция с Tavily SDK
Если вы уже используете Tavily, переключение — это одна строка:
from tavily import TavilyClient
client = TavilyClient(api_key="tvly-xxx")
client = TavilyClient(
api_key="sk_xxx",
base_url="https://proxy.unoapi.ru/v1"
)
results = client.search("запрос")Кэширование
УноАПИ.ru кэширует выдачу на 24 часа и обслуживает повторный запрос из кэша за 10 ₽ за 1000 — против 600 ₽ за синхронный. Между ними есть отложенный режим Яндекса за 60 ₽; самая дешёвая доступная ставка выбирается автоматически, а в ответе видно, по какой ставке прошёл запрос.
Чтобы получить свежие данные, сбросьте выдачу из кэша — отдельного поля в теле запроса для этого нет, и лишнее поле вернёт 422:
curl -X DELETE "https://proxy.unoapi.ru/v1/search/yandex/cache" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"queries": [{"query": "новости сегодня"}]}'В пакетных запросах то же самое делается параметром cache_ttl: 0.



