TinyFish — набор веб-инструментов для ИИ-агентов: поиск по живому вебу, чтение страниц в чистом Markdown, облачный браузер и агент, который сам выполняет задачу на сайте. Руководство поможет выбрать нужный компонент, подключить TinyFish к Codex, Claude Code или своему коду и проверить первый результат.
Что такое TinyFish
TinyFish даёт агенту четыре уровня доступа к вебу: найти страницы, прочитать их, управлять браузером и поручить многошаговую работу на сайте. Поиск и чтение страниц бесплатны в пределах лимитов, а работа агента и браузера оплачивается из предоплаченного кошелька по факту.
Подключить сервис можно двумя способами: через MCP-сервер прямо в ассистенте или через REST API и SDK для Python и TypeScript.
Какой компонент выбрать
| Компонент | Когда нужен | Что возвращает | Цена и лимиты |
| Search | Найти страницы по запросу | Ранжированный список: заголовки, фрагменты, URL в JSON | Бесплатно; 30 запросов в минуту, 500 в час |
| Fetch | Прочитать уже известные URL | Markdown по умолчанию, HTML или JSON | Бесплатно; 150 URL в минуту, 1000 URL в сутки |
| Agent | Выполнить задачу на сайте: клики, формы, вход | Результат в JSON, шаги, скриншоты, запись запуска | $0.016 за шаг; 2 параллельных запуска |
| Browser | Управлять браузером из своего кода через Playwright, Puppeteer или CDP | Удалённую сессию браузера с адресом подключения | $0.002 за минуту; 5 параллельных сессий |
| Research (бета) | Получить отчёт по нескольким источникам со ссылками | Итоговый текст и список цитат | Списывается из кошелька; ставка на странице цен не указана |
| Monitor | Следить за изменением страницы или темы по расписанию | Уведомление на почту или в вебхук | $0.005 за проверку плюс стоимость Search или Fetch |
Тарифы и лимиты
TinyFish работает без подписки и месячного минимума. Search и Fetch бесплатны при любом балансе кошелька. Agent и Browser списывают деньги с кошелька по мере работы. При регистрации на главной странице обещано $8 на старт, минимальное пополнение — $10.
В цену запусков Agent и Browser уже входят языковая модель агента, резидентные прокси и обработка антибот-защиты. Отдельный ключ модели приносить не нужно.
max_steps принимает значения от 1 до 500, по умолчанию — 150. При значении по умолчанию один запуск может стоить до $2.40 (150 × $0.016). Для простых задач задавайте меньший предел: запуск быстрее остановится и не съест бюджет.Корпоративный тариф добавляет лимиты под нагрузку, ISO 27001, корпоративный SSO, журналы аудита, развёртывание в VPC и SLA 99,99 %.
Подключение через MCP
Большинство ассистентов подключаются к серверу https://agent.tinyfish.ai/mcp через OAuth: ключ API вручную не нужен. Перед первым подключением войдите в аккаунт на agent.tinyfish.ai в браузере по умолчанию — туда откроется окно авторизации.
Codex:
codex mcp add tinyfish --url https://agent.tinyfish.ai/mcpClaude Code:
claude mcp add --transport http tinyfish https://agent.tinyfish.ai/mcpCursor — в настройках MCP (окно OAuth откроется при первом вызове инструмента):
{
"mcpServers": {
"tinyfish": {
"url": "https://agent.tinyfish.ai/mcp"
}
}
}Для ChatGPT и Claude есть официальные плагин и коннектор, они ставятся в браузере. Для ChatGPT можно добавить и собственный MCP-коннектор с адресом https://agent.tinyfish.ai/mcp/chatgpt.
После подключения ассистент получает основные инструменты:
| Инструмент | Что делает |
search | Ищет в вебе; фильтры по свежести, датам, стране, языку и доменам |
fetch_content | Читает до 10 URL за запрос; Markdown, HTML или JSON |
run_web_automation | Выполняет цель на сайте и показывает ход работы |
run_web_automation_async и get_run | Запускает долгую задачу в фоне и получает результат по ID |
create_browser_session | Создаёт удалённый браузер для Playwright, Puppeteer или Selenium |
get_wallet | Показывает баланс кошелька и ставки |
top_up_wallet — агент может инициировать пополнение кошелька, а кошелёк запрашивает ваше подтверждение платежа. Не подтверждайте пополнение, которого не ожидали, и держите на кошельке сумму под конкретную задачу.Подключение через API и SDK
Создайте ключ на странице agent.tinyfish.ai/api-keys и сохраните его в переменной окружения. Оба SDK читают её автоматически, в прямых запросах ключ передаётся в заголовке X-API-Key.
export TINYFISH_API_KEY="your_api_key_here" # подставьте свой ключ, не храните его в коде
pip install -U tinyfish # Python SDK
npm install @tiny-fish/sdk@latest # TypeScript SDK| Продукт | Адрес |
| Agent | https://agent.tinyfish.ai/v1/automation/... (/run, /run-async, /run-sse) |
| Research | POST https://agent.tinyfish.ai/v1/automation/run-research |
| Search | GET https://api.search.tinyfish.ai |
| Fetch | POST https://api.fetch.tinyfish.ai |
| Browser | POST https://api.browser.tinyfish.ai |
Минимальный сценарий на бесплатных компонентах — найти страницу и прочитать её:
from tinyfish import TinyFish
client = TinyFish() # ключ берётся из TINYFISH_API_KEY
# 1. Поиск: ранжированные результаты в JSON
found = client.search.query("tinyfish pricing", location="US", language="en")
print(found)
# 2. Чтение известного URL: чистое содержимое страницы
page = client.fetch.get_contents(urls=["https://www.tinyfish.ai/pricing"])
print(page)Ориентиры по задержке из документации: Search — 1–3 секунды, Fetch — 1–20 секунд, Agent — 15–60 секунд, создание браузерной сессии — 10–30 секунд. Для Fetch ставьте таймаут клиента не меньше 150 секунд: сервер ждёт одну страницу до 110 секунд.
Проверка результата
Проверьте ключ одной командой:
curl "https://api.search.tinyfish.ai?query=web+automation+tools&location=US&language=en" \
-H "X-API-Key: $TINYFISH_API_KEY"Признак успеха — JSON со списком результатов, у каждого есть заголовок и URL. Ошибка авторизации означает, что ключ не попал в переменную окружения или отозван.
В MCP попросите ассистента найти что-нибудь через TinyFish. В журнале вызовов должен появиться инструмент search, а в ответе — ссылки на найденные страницы.
result: при неудаче там будет "status": "failure" и причина, а также признаки вроде captcha, blocked или access denied.Полезные сценарии
Следить за ценами конкурентов
- Задача: узнавать о смене тарифов у пяти конкурентов, не открывая их сайты вручную.
- Исходные данные: список URL страниц с ценами.
- Действие: раз в день читать страницы через Fetch и сравнивать с прошлой версией или поставить Monitor с уведомлением на почту.
- Результат: Markdown-копия каждой страницы или письмо при изменении.
- Ограничение: если цены показываются только после входа или выбора параметров, Fetch их не увидит — нужен Agent.
Промпт:
Используй инструменты TinyFish.
1. Через search найди официальные страницы с ценами для: [сервис 1], [сервис 2], [сервис 3].
2. Через fetch_content прочитай найденные страницы в формате markdown.
3. Собери таблицу: сервис, тариф, цена в месяц, валюта, главный лимит, URL источника.
4. Если цена не указана явно или страница требует входа, напиши «не найдено» и не додумывай.
Не используй run_web_automation без моего подтверждения.Дополнить таблицу клиентов
- Задача: заполнить пустые поля в CRM — численность, город, сайт.
- Исходные данные: список компаний с доменами.
- Действие: для каждой компании агент ищет страницы через Search, читает «О компании» через Fetch и переносит найденное в таблицу.
- Результат: заполненные поля с URL источника рядом с каждым значением.
- Ограничение: данные с сайтов бывают устаревшими; ссылка на источник нужна, чтобы проверить спорные значения.
Выгрузить документ из личного кабинета
- Задача: регулярно забирать счета или отчёты из портала поставщика.
- Исходные данные: аккаунт на портале и сохранённый профиль входа.
- Действие: запуск Agent с целью, где перечислены нужные поля, формат ответа и момент остановки.
- Результат: JSON с данными, скриншоты шагов и запись запуска.
- Ограничение: каждый шаг платный, а действия выполняются от вашего имени.
Пример цели для агента:
{
"url": "https://app.example.com/billing",
"goal": "Find the latest invoice. Return JSON with fields: invoice_number, amount_due, currency, due_date. If there is no invoice, return {\"status\": \"failure\", \"reason\": \"no invoice\"}. Do not click Pay or Submit.",
"use_profile": true,
"use_vault": true,
"max_steps": 30
}Документация прямо предупреждает: размытая цель вроде «собери данные» проваливается, а цель с перечнем полей, форматом ответа и обработкой пограничных случаев срабатывает стабильно.
Вход на сайты: профили и пароли
Чтобы агент не входил в аккаунт с нуля на каждом запуске, TinyFish сохраняет состояние браузера.
- Browser Context Profile — сохранённая сессия входа для сайта или аккаунта. В запуске включается параметром
use_profile: true, конкретный профиль выбирается черезprofile_id. - TinyVault — подключение 1Password или Bitwarden. С
use_vault: trueагент заново входит, когда сессия истекла. По заявлению TinyFish, модель паролей не видит, а каждый запуск получает только выбранные вами логины. - Browser Profile
liteилиstealth— режим работы браузера. Он не связан с сохранённым входом, хотя названия похожи.
Ограничения и когда не подходит
- Облачная обработка. Страницы, данные и сессии проходят через инфраструктуру TinyFish. Для данных под NDA и персональных данных сначала проверьте условия; развёртывание в своём контуре (VPC) есть только в корпоративном тарифе.
- Точность агента. TinyFish заявляет 89,9 % на бенчмарке Online-Mind2Web. Это данные компании; независимой проверки в этом руководстве нет.
- Скорость. Запуск агента занимает 15–60 секунд, поэтому для задач в реальном времени он не подходит.
- Правила сайтов. Режим
stealthи прокси помогают пройти антибот-защиту, но за соблюдение условий использования сайта отвечаете вы. - Доступ из России. Регистрация, оплата кошелька и работа сервиса из России не проверялись.
Ссылки
- Официальный сайт TinyFish
- Цены и лимиты
- Документация
- Подключение через MCP
- Краткий контекст для coding-агентов
- Жизненный цикл запусков агента
- Research API
- Полная документация одним файлом для LLM
- GitHub TinyFish
Следующий шаг
MCP и безопасность — prompt injection, tool poisoning и как защититься
Если вы выбираете, как дать агентам доступ к сайтам, порталам поставщиков и мониторингу цен, полезно заранее решить, какие задачи можно отдать агенту, а какие должен подтверждать человек.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov



