Tavily vs Exa vs Serper vs API Pick: какую Web-Search API выбрать для LLM?

Tavily, Exa, Serper и API Pick — все обещают быть слоем поиска для вашего LLM. Они заметно отличаются по формату, фильтрам и тарификации. Прямое сравнение от инженера, который шипит агенты.
Кратко
- •Хостед-RAG-эндпоинт, который возвращает готовый блоб для LLM → Tavily (ценой непрозрачного ранжирования и месячного минимума).
- •Семантический поиск, свежесть менее важна → Exa (на масштабе следите за бюджетом).
- •Сырые Google SERP, чистите сами → Serper.
- •Готовый JSON, прозрачная плата за вызов, фильтры по стране/дате, оплата только за HTTP 200 → API Pick Web Search.
Что значит 'Web Search API для LLM'
Универсальные поисковые API (Google Custom Search, Bing Web Search, SerpAPI) возвращают SERP — те же синие ссылки и rich snippets, что человек видит в браузере. Для языковой модели это неподходящая форма. Агенту не нужно парсить SERP — ему нужен компактный ranked-список из заголовка, URL и чистого текста, который сразу ляжет в контекст. Все четыре API целятся в это, но разными путями.
Сравним по пяти практическим осям: форма вывода, фильтры, тарификация, эргономика интеграции и чего они не делают.
Кратко о каждом
Tavily
Хостед-RAG-сервис. tavily.search возвращает ranked-сниппеты, tavily.qna объединяет поиск и лёгкий LLM-ответ. Хорошо подходит для 'дать модели готовый блоб'. Подписка + кредиты.
Exa (бывш. Metaphor)
Нейросетевой / семантический индекс. Построен вокруг 'найди URL, похожие на этот', эмбеддингового ранжирования, опциональных highlights или контента. Силён там, где тематическая близость важнее свежести. Подписка + перерасход.
Serper
Сырой Google SERP API. Возвращает JSON-структуру реальной страницы Google (organic, knowledge graph, places, videos). Чистка и ранжирование — на вас. Дёшево за запрос, но слой LLM-форматирования вы пишете сами.
API Pick Web Search
Pay-as-you-go семантический веб-поиск, заранее отформатированный под tool calling. POST /api/search/web возвращает 5 (макс. 10) ranked-результатов: title, URL, очищенный LLM-friendly snippet, опционально country_code и start_date/end_date. 15 кредитов за вызов (≈ $0.015), списываются только за успех.
Бок о бок
| Tavily | Exa | Serper | API Pick | |
|---|---|---|---|---|
| Форма вывода | ranked-сниппеты + опц. LLM-ответ | ranked URL + опц. highlights/контент | сырой Google SERP JSON | ranked title + URL + LLM-friendly snippet |
| Фильтр страны | Да | Ограниченно | Да | Да (country_code) |
| Фильтр даты | Да | Да | Да (qdr) | Да (start_date / end_date) |
| Tool-schema эндпоинт | — | — | — | Да — GET /api/search/web/tool-schema |
| Тарификация | Подписка + кредиты | Подписка + кредиты | За запрос | Pay-as-you-go, $5 / 5 000 |
| Берут ли за фейл? | Зависит от плана | Зависит от плана | Да | Нет — только HTTP 200 |
| Лучший сценарий | Хостед-RAG / чат | Семантический поиск | Свой SERP-пайплайн | Tool calling AI-агентов, RAG |
Форма вывода: важнее всего
Категория существует, потому что LLM плохо рассуждают по HTML SERP. Им нужен короткий, размеченный, ранжированный текст. Поэтому 'насколько чист сниппет' — лучший единственный предиктор того, что API можно использовать как агентский инструмент.
Tavily и API Pick активно чистят сниппеты. Exa отдаёт highlights или contents в зависимости от флагов — нормально, но объём решает он сам. Serper отдаёт сырой SERP, исходя из того, что у вас есть extractor дальше. Если уже есть — отлично, иначе это скрытая работа.
Типичный ответ API Pick:
{
"results": [
{
"title": "Retrieval-augmented generation - Wikipedia",
"url": "https://en.wikipedia.org/wiki/Retrieval-augmented_generation",
"snippet": "Retrieval-augmented generation (RAG) is a technique that combines\nsearch with text generation, often using vector search to ground LLM\nanswers in retrieved documents."
}
/* …more */
],
"result_count": 5,
"credits_used": 15,
"remaining_credits": 985
}Эту форму можно как есть отдать модели как tool result — без дополнительного парсинга.
Фильтры: страна и свежесть
Боевой агент заботится о двух осях:
- Страна / локаль: финансовый агент в UK не должен по умолчанию получать только US-источники.
- Диапазон дат: 'что произошло на этой неделе' должен отсекать всё старше семи дней.
Все четыре поддерживают, выразительность разная. API Pick — ISO-даты (start_date="2026-04-01"), без двусмысленности, тоньше Google'овских qdr-бакетов.
Тарификация: подписка vs pay-as-you-go
Подписочные API (Tavily, Exa) хороши при стабильной нагрузке. Они становятся неудобными в трёх частых паттернах:
- Прототипирование без желания привязываться к месяцу.
- Всплесковый трафик (батчевые исследовательские агенты).
- Агенты, агрессивно ретраящие при частичных ошибках.
API Pick — модель кредитов: $5 = 5 000 кредитов, Web Search — 15 кредитов за вызов, кредиты не сгорают, оплата только за HTTP 200. Этот пункт важнее, чем кажется: цикл с пятью ретраями на 502 — бесплатно, не 5×.
Эргономика интеграции
Самая лоу-френкшн интеграция — 'вставил JSON, готово'. API Pick даёт это:
# OpenAI function tool definition
curl https://www.apipick.com/api/search/web/tool-schema
# Возвращает определение OpenAI tool + Claude tool useOpenAI Assistants:
from openai import OpenAI
import requests
client = OpenAI()
schema = requests.get("https://www.apipick.com/api/search/web/tool-schema").json()
assistant = client.beta.assistants.create(
name="Research Agent",
model="gpt-4o",
tools=[{"type": "function", "function": schema["openai"]}],
)Claude tool use:
import anthropic
import requests
schema = requests.get("https://www.apipick.com/api/search/web/tool-schema").json()
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
tools=[schema["claude"]],
messages=[{"role": "user", "content": "Что нового в RAG-исследованиях за неделю?"}],
)Чего не делает ни одна из них
Никакая Web Search API не ответит надёжно на 'каждый X с этого домена с 2019 года'. Глубокая архивная коверка требует комбинации поиска и точечного краулера или специализированного датасета. Никто не дедуплицирует очень похожие URL идеально. И никто не решает проблему устаревшего или неавторитетного источника — это решение качества контента вашего агента.
Быстрый выбор
Часто задаваемые вопросы
У кого ниже стоимость одного вызова?
Тарифные модели разные. API Pick Web Search — 15 кредитов за вызов (≈ $0.015 при $5 / 5 000) и берёт деньги только за HTTP 200. Tavily и Exa — месячные подписки + перерасход; Serper — за каждый запрос. При резких всплесках или ретраях агента 'оплата только за успех' обычно выигрывает в реальном счёте.
Все ли работают с OpenAI function calling и Claude tool use?
Да. Все JSON in / JSON out, любую можно обернуть в tool function. API Pick дополнительно публикует tool-schema-эндпоинт (GET /api/search/web/tool-schema), возвращающий готовые определения OpenAI function и Claude tool use.
API Pick — это обёртка над Tavily?
Нет. У API Pick собственный пайплайн агрегации индекса, ранжирования и формирования сниппетов. Форма намеренно проще: title + URL + LLM-friendly snippet, опционально country / date. POST /api/search/web вызывается напрямую — без хостед-RAG-слоя.
Как с задержкой?
Все четыре спроектированы под синхронный вызов агента; P50 на коротких запросах сабсекундный. Главное отличие — есть ли в endpoint вторичный LLM-вызов: чистый поиск всегда быстрее композитов 'search + answer'.
Какая Tavily-альтернатива ближе всего?
Если уходите от Tavily из-за месячного минимума или непрозрачной переплаты — API Pick Web Search ближайший pay-as-you-go-аналог: та же форма (ranked JSON со сниппетами), фильтры страны/даты, без месячного минимума.
API, использованные в статье
Сара Чой — CEO API Pick. Пишет о продакшен-готовых API для AI-агентов и LLM-воркфлоу.