Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

Разработчикам

Документация по API и MCP EveryInfra

Выберите задачу в публичном каталоге. Создайте API-ключ. Затем сделайте первый вызов. В этом руководстве есть примеры запросов, настройка MCP, аутентификация, оплата и обработка ошибок.

Один аккаунт для данных, поиска, решения капчи и бесплатного API для ИИ

EveryInfra предоставляет 573 возможностей для сбора данных на 106 платформах, 17 инструментов поиска, поддержку 52 типов капчи и OpenAI-совместимый API для ИИ, который становится бесплатным после пополнения баланса. У каждого продукта свой эндпоинт, права доступа и формат запроса.

  • Публичные каталоги доступны без API-ключа.
  • Для эндпоинтов с аутентификацией используется API-ключ по схеме Bearer.
  • MCP и REST используют одни и те же возможности, параметры и ответы.

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

Отправьте реальный запрос

Создайте API-ключ в консоли, изучите нужный каталог и передайте идентификатор платформы или возможности точно в том виде, в каком он указан. Ответ содержит структурированные данные и сведения об оплате этого запроса.

  • Укажите Authorization: Bearer YOUR_API_KEY.
  • Для тела запроса в формате JSON укажите Content-Type: application/json.
  • Используйте идентификаторы и имена параметров из каталога точно в том виде, в каком они возвращаются.
  • Для медленных задач, больших лимитов или пакетов передайте в теле запроса "mode":"async": вы сразу получите job_id и сможете запрашивать результат через GET /api/v1/jobs/{job_id}. Синхронный запрос должен завершиться за 85 с; на асинхронную задачу это ограничение не распространяется.
Запрос
curl -X POST https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"tiktok","action":"search","params":{"keyword":"AI infrastructure","limit":10}}'
Ответ
{
  "id": "…",
  "platform": "tiktok",
  "action": "search",
  "results": [
    {
      "id": "…",
      "text": "…",
      "author_username": "…"
    }
  ],
  "count": 10,
  "billing": {
    "charged": true,
    "charged_usd": 0.000556,
    "balance_after_usd": 12.340122
  }
}

Найдите поддерживаемые задачи в публичных каталогах

По каталогам можно проверить поддерживаемые задачи, входные данные, цены и доступность. Компактный каталог EveryData содержит главное о каждом действии; необязательные параметры, лимиты и поля ответа смотрите в полном каталоге. Обновляйте цены и доступность по мере необходимости, а не прописывайте их в коде.

ПродуктЭндпоинт каталогаЧто описывает
EveryDataGET /api/v1/social/catalog?compact=1Платформы, действия, обязательные параметры, режимы получения результатов, доступность и цены
EverySearchGET /api/v1/search/toolsИнструменты поиска, параметры запроса, тарифные уровни и цены
EverySolveGET /api/v1/captcha/typesТипы капчи, параметры, форматы решений, доступность и цены
API для ИИGET /api/v1/modelsМодели, которые сейчас поддерживает API для ИИ; API-ключ не нужен

Аутентификация

Передавайте API-ключ как Bearer-токен. Аутентификация выполняется до проверки параметров, поэтому на запрос без действительного ключа вернётся 401, а не сообщение об ошибках в параметрах. Не размещайте ключи в браузерном коде, логах и публичных репозиториях.

  • Создавайте отдельные ключи для разных окружений и нагрузок.
  • Перевыпускайте ключ в консоли, когда меняется его область действия или он мог оказаться в чужих руках.
  • Если ключ должен работать только с определёнными продуктами, возможностями или диапазонами IP, задайте ограничения в консоли.
  • С тем же ключом запрос GET /api/v1/account показывает баланс (основной, бонусный и общий), скидку на пополнение в этом месяце, лимит запросов в минуту и использование за последние 24 часа. Суммы указаны в USD. Вызов только читает данные, бесплатен и не учитывается в лимите запросов в минуту.
  • В этом ответе balance.total_usd — сумма основного и бонусного баланса; плата за вызовы сначала списывается с бонусного баланса. bonus_expiring содержит бонусные суммы с ограниченным сроком действия, который ещё не истёк. rate_limit.requests_per_minute — общий лимит для всех ключей аккаунта, а usage_24h может отставать примерно на минуту.
  • С помощью того же ключа можно получать через API консоли историю по всему аккаунту: статистику использования по дням, недавние вызовы, данные об оплате и журнал операций кошелька. Например, используйте GET /portal/api/requests/{request_id} или GET /portal/api/quality, который показывает долю успешных запросов и задержку для каждой возможности. Ключу нужен доступ на чтение аккаунта; эти запросы бесплатны, а их лимит составляет 60 в минуту на аккаунт. Полный список приведён в разделе Account спецификации OpenAPI.
  • Чтобы ИИ мог и изменять аккаунт, выдайте права на запись в разделе «API-ключи → Ограничить доступ»: управление ключами, изменение настроек, создание обращений и ответы на них. Все три права по умолчанию выключены, и включить их можете только вы после входа в консоль. Через ключ можно создать не больше 20 ключей в день, а на обращения дневного лимита нет; просмотр полных значений ключей и их перевыпуск, изменение прав или списков разрешённых IP, повторное включение ключей и платежи всегда доступны только в консоли. Эндпоинты перечислены в разделе Account спецификации OpenAPI, например POST /portal/api/keys/{key_id}/disable.
  • Чтобы не опрашивать API, добавьте HTTPS-эндпоинт в разделе «Настройки → Вебхуки» консоли. Мы отправляем подписанный POST-запрос, когда баланс опускается до заданного вами порога или завершается асинхронная задача. Проверяйте X-EveryInfra-Signature: это HMAC-SHA256 от метки времени, точки и необработанного тела запроса, вычисленный с помощью вашего секрета подписи. Отклоняйте метки времени, отличающиеся больше чем на 5 минут, и устраняйте дубликаты по ID события. Неудавшуюся доставку мы повторяем с увеличивающейся задержкой, всего до 7 попыток.

Этот ключ даёт доступ ко всем четырём продуктам с общим кошельком

Один API-ключ работает как выключатель с ключом на распределительном щите: включите его, и все четыре продукта заработают с общим кошельком. В консоли («API-ключи → Ограничить доступ») для ключа можно отключить отдельный продукт; при обращении к отключённому продукту возвращается 403 capability_denied. Отключите ключ, и погаснет всё: вызовы будут возвращать 401.
account.sh
curl https://api.everyinfra.com/api/v1/account \
  -H "Authorization: Bearer YOUR_API_KEY"

POST /api/v1/social

EveryData

Собирайте данные с 106 платформ с помощью 573 поддерживаемых действий. Выберите платформу и действие, затем передайте входные данные, указанные для этого действия.

GET /api/v1/social/catalog?compact=1

POST /api/v1/search

EverySearch

Выберите один из 17 инструментов для поиска в интернете и получения текста источников. Укажите идентификатор инструмента и передайте его обязательные входные данные.

GET /api/v1/search/tools

POST /api/v1/captcha

EverySolve

Решайте капчу 52 типов через один эндпоинт. Укажите поле type и передайте обязательные входные данные. Оплачиваются только успешные решения.

GET /api/v1/captcha/types

POST /api/v1/chat/completions

API для ИИ

OpenAI-совместимый API для ИИ с интерфейсом chat/completions. Он бесплатен для аккаунтов, баланс которых пополняли. Используйте его, чтобы очищать, классифицировать, извлекать и резюмировать собранные данные.

GET /api/v1/models

Проверяйте параметры запроса

При передаче неизвестных параметров возвращается ошибка 422 со списком поддерживаемых параметров и, если возможно, подсказкой с наиболее похожим именем. При недопустимом значении enum возвращается список разрешённых значений. Параметры не игнорируются и не заменяются значениями по умолчанию без предупреждения.

  • Используйте имена параметров из каталога в формате snake_case.
  • Считайте did_you_mean подсказкой для исправления, а не признаком успешной автоматической подстановки.
  • Для входных данных с несколькими целями изучите правила оплаты и лимитов в каталоге, прежде чем отправлять массив.

Справочник API

Все платформы (106) и API (573), сгруппированные по категориям. Откройте платформу, чтобы увидеть обзор, или API, чтобы посмотреть параметры, поля ответа и примеры кода.

Электронная коммерцияПлатформ: 15 · API: 58
Соцсети и контентПлатформ: 51 · API: 389
Отзывы и локальные сервисыПлатформ: 23 · API: 86
Поиск и новостиПлатформ: 17 · API: 40

API для ИИ (бесплатно после пополнения баланса)

API для ИИ предоставляет OpenAI-совместимый интерфейс chat/completions. Любой аккаунт, баланс которого пополняли, может вызывать его бесплатно, не расходуя баланс, чтобы очищать, дедуплицировать, классифицировать, извлекать и резюмировать собранные данные; формат вывода задаётся в промпте.

  • В OpenAI SDK задайте base_url равным https://api.everyinfra.com/api/v1 и передавайте API-ключ EveryInfra в заголовке Authorization: Bearer; ?key= в URL отклоняется.
  • Эндпоинт чата — POST /api/v1/chat/completions, формат запросов и ответов как у OpenAI.
  • Доступны две модели: gemini-3.6-flash (по умолчанию) и более лёгкая gemini-flash-lite. GET /api/v1/models возвращает тот же список и не требует ключа. При опечатке в названии модели возвращается 422 с вероятным правильным названием.
  • Поддерживается потоковая передача: отправьте stream: true, чтобы получать поток SSE, который завершается data: [DONE], и добавьте stream_options.include_usage, чтобы получить данные о расходе токенов.
  • Общий объём messages — до 45 000 символов; при превышении возвращается 422 input_too_large, поэтому разбивайте данные на запросы меньшего размера.
ai_quickstart.py
from openai import OpenAI
import os

client = OpenAI(base_url="https://api.everyinfra.com/api/v1",
                api_key=os.environ["EVERYINFRA_API_KEY"])
reply = client.chat.completions.create(
    model="gemini-3.6-flash",
    messages=[{"role": "user", "content": "Верни только JSON: определи тональность, тему и намерение этого отзыва."}],
)
print(reply.choices[0].message.content)

Лимиты по общей сумме пополнений, общие для всех ключей аккаунта

Сумма пополненийЗапросов в минутуПараллельных запросов
Пополнения на сумму меньше $100505
$100 и больше50050
$500 и больше5 000500

Кредиты, полученные по кодам, и бонусные кредиты засчитываются как пополнения, если сумма каждого отдельного начисления превышает $1; пробные кредиты и суммы не более $1 не засчитываются. Если баланс аккаунта ни разу не пополняли и на него не начисляли по коду или в виде бонуса кредиты на сумму более $1, возвращается 403 ai_topup_required. Уровни задают верхние пределы.

СтатусЗначение
403 ai_topup_requiredАккаунт ни разу не пополнял баланс; любое пополнение открывает доступ к API для ИИ.
429 rate_limitedДостигнут лимит запросов в минуту (per_minute_limit) или одновременно выполняется слишком много запросов (concurrency_limit); подождите столько, сколько указано в Retry-After, затем повторите попытку.
503 ai_busyСервис перегружен; повторите попытку по истечении времени, указанного в Retry-After.
403 ai_disabledAPI для ИИ приостановлен для этого аккаунта.
422 unknown_modelТакой модели нет; в сообщении указано вероятное правильное название.

API для ИИ предназначен для обработки данных, собранных с помощью EveryInfra. Если его используют для других целей или вызовы выглядят явно аномально, мы можем приостановить API для ИИ для этого аккаунта; сам аккаунт, его остальные API и баланс это не затрагивает.

MCP для ИИ-агентов

Используйте MCP, если совместимый клиент должен сам находить и вызывать инструменты EveryInfra. Инструменты охватывают данные, поиск, капчу и чат с ИИ через everyinfra_chat (бесплатно после пополнения баланса, без потоковой передачи) и подчиняются тем же правилам аутентификации, тарификации, лимитов, валидации и баланса, что и REST API.

  • Укажите в клиенте URL удалённого сервера и API-ключ EveryInfra.
  • Оба эндпоинта принимают один и тот же ключ: https://api.everyinfra.com/mcp перечисляет основные инструменты (всего 12): данные, поиск, капчу и чат с ИИ, а также баланс, записи вызовов, ссылку на пополнение баланса и обращения в поддержку. https://api.everyinfra.com/mcp/all перечисляет все инструменты (всего 24); указанные ниже инструменты для просмотра данных аккаунта и управления им представлены в списке только этого эндпоинта.
  • Инструменты аккаунта теперь называются по схеме «глагол + объект» (например, everyinfra_account теперь называется everyinfra_get_account). Старые названия по-прежнему работают на обоих эндпоинтах, но больше не отображаются в списке, поэтому скрипты, которые их вызывают, менять не нужно. Чтобы пользоваться этими инструментами из ИИ-клиента, подключите коннектор к /mcp/all.
  • Перед вызовом инструментов данных, поиска или капчи запрашивайте список доступных возможностей.
  • Храните API-ключ в секретах или переменных окружения клиента.
  • Чтобы узнать баланс, скидку, лимит запросов в минуту и данные о недавнем использовании, вызовите бесплатный инструмент everyinfra_get_account без аргументов. Он возвращает ту же сводку, что и GET /api/v1/account.
  • После вызова инструмента данных с mode: "async" получите результат бесплатным инструментом everyinfra_get_job по возвращённому job_id. Он возвращает те же данные, что и GET /api/v1/jobs/{job_id}.
  • Для записей аккаунта есть бесплатные инструменты everyinfra_get_usage, everyinfra_list_requests, everyinfra_get_billing, everyinfra_list_keys и everyinfra_list_tickets. Они возвращают ежедневное использование, недавние вызовы (найдите вызов по request_id, чтобы увидеть, как было рассчитано списание), расходы и журнал операций кошелька, список ключей и список обращений в поддержку. Для них у ключа должен быть доступ на чтение аккаунта. Ключи без ограничений по продуктовым линейкам по умолчанию могут читать использование, вызовы и тарификацию. Для ключей с ограничениями по продуктам и для доступа к обращениям это включается в консоли в разделе «API-ключи → Ограничить доступ».
  • Если на аккаунте не хватает средств, everyinfra_get_topup_link возвращает страницу пополнения баланса в консоли. Оплачивает владелец аккаунта на этой странице; сам инструмент не создаёт платежей и ничего не списывает.
  • Если вызовы постоянно завершаются ошибкой, данные выглядят неверно, нужно проверить пополнение баланса или списание либо нужна новая платформа или поле, любой ключ может создать обращение к сотрудникам поддержки через everyinfra_create_ticket. Это бесплатно и не требует дополнительных прав. Инструмент возвращает номер обращения и ссылку в консоль, а everyinfra_get_ticket затем показывает ход обращения и ответы поддержки. Через REST те же вызовы выполняются как POST /api/v1/support/tickets и GET /api/v1/support/tickets/{ticket_id}. Прежний everyinfra_ticket_create (требует права на запись) продолжает работать, но в новых интеграциях используйте everyinfra_create_ticket.
  • Когда владелец аккаунта выдаст ключу права на запись в консоли, ИИ сможет также использовать everyinfra_create_key, everyinfra_update_key, everyinfra_disable_key, everyinfra_delete_key, everyinfra_update_settings, everyinfra_set_webhook, everyinfra_test_webhook и everyinfra_reply_ticket. Ключ, созданный таким способом, никогда не получает более широких прав, чем вызывающий ключ, и никогда не получает прав на запись. Через эти инструменты ключи, созданные в консоли, можно только отключать. Каждое изменение отображается в уведомлениях консоли.
Endpoint
POST /mcp
Транспорт
Streamable HTTP, без сохранения состояния
Инструменты
Названия инструментов начинаются с everyinfra_. Переименованные инструменты по-прежнему откликаются на старые названия, поэтому промпты и рабочие процессы продолжают работать.

Как использовать вместе с прокси IPFoxy

Для вызова API EveryInfra прокси не нужен. Запрос отправляется напрямую на api.everyinfra.com, а в ответ приходит JSON с именованными полями. С собственными программами всё иначе: если вашему краулеру или средству автоматизации браузера нужно открыть страницу так, как её видит пользователь из определённой страны, потребуется выходной IP-адрес в этой стране.

Всё просто: IPFoxy предоставляет вашим запросам другой выходной IP-адрес, а EveryInfra — структурированные данные для платформ из своего каталога.

ЗадачаЧто использовать
Открывать страницы, содержимое которых зависит от страны (локальные цены, доставка, размещение рекламы), или входить в собственный магазин и аккаунтыПрокси IPFoxy + ваш краулер или браузер
Собирать данные с сайтов или из полей, не представленных в каталоге API данныхПрокси IPFoxy + ваш краулер
Массово получать данные платформ из каталога для электронной таблицы или базы данныхAPI данных EveryInfra напрямую, без прокси

Этот пример на Python выполняет оба шага в одном скрипте. На шаге 1 скрипт обращается к ipinfo.io через выходной IP-адрес IPFoxy и выводит страну этого IP-адреса. На шаге 2 он напрямую обращается к EveryInfra за данными об одном товаре Amazon. Перед запуском задайте две переменные окружения: EVERYINFRA_API_KEY — ваш API-ключ, а IPFOXY_PROXY — строка подключения из панели управления IPFoxy в формате http://username:password@host:port. Установите requests командой pip install requests.

proxy_plus_data_api.py
import os

import requests

EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"]
IPFOXY_PROXY = os.environ["IPFOXY_PROXY"]  # http://username:password@host:port
PROXIES = {"http": IPFOXY_PROXY, "https": IPFOXY_PROXY}

# 1. Ваш собственный запрос идёт через выходной IP IPFoxy.
exit_ip = requests.get("https://ipinfo.io/json", proxies=PROXIES, timeout=30).json()
print("Exit IP country:", exit_ip.get("country"))

# 2. Вызов EveryInfra идёт напрямую. Прокси для него не нужен.
direct = requests.Session()
direct.trust_env = False  # игнорировать HTTP(S)_PROXY, чтобы этот вызов не расходовал прокси-трафик
resp = direct.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"},
    json={
        "platform": "amazon",
        "action": "profile",
        "params": {"url": "https://www.amazon.com/dp/B0CYJDVT31"},
    },
    timeout=120,
)
resp.raise_for_status()
body = resp.json()
item = body["results"]
print(item["title"][:60], item["currency"], item["price"], item["rating"])
print("Charged USD:", body["billing"]["charged_usd"])
  • direct.trust_env = False заставляет вызов EveryInfra игнорировать переменные окружения HTTP_PROXY и HTTPS_PROXY. Без этого через общесистемный прокси пойдёт и этот вызов, и вы заплатите за его прокси-трафик.
  • Ответ 407 от прокси означает неверное имя пользователя или пароль. Пример останавливается до вызова EveryInfra, поэтому ничего не списывается. В справочном центре IPFoxy указано, что прокси работает, только если код запускается из сети за пределами материкового Китая.
  • Мы запустили этот код 24 октября 2026 года. Вызов EveryInfra вернул название, цену и рейтинг товара, списано $0,001389. Аккаунта IPFoxy у нас нет, поэтому шаг с прокси мы проверили на локальном мок-прокси: формат адреса, туннель CONNECT и случай с ошибкой 407.
  • Сколько прокси-трафика расходует одна страница: около 0,44 МБ, если загружать только HTML, и около 7,96 МБ при полной загрузке в браузере. Стоимость за 1000 страниц на каждом тарифе IPFoxy с учётом нужной вам доли успешных запросов смотрите в статье Сколько прокси-трафика расходует одна страница Amazon?».
  • Полный пример, локальный мок-прокси и скрипт для подсчёта байтов лежат на GitHub: everyinfra-agent-plugins / examples / proxy-plus-data-api.

Раскрытие информации о реферальной ссылке: указанная ниже ссылка «Перейти на сайт IPFoxy» — реферальная. Её предоставила нам IPFoxy; ссылка содержит наш реферальный код. Если вы зарегистрируетесь или совершите покупку, перейдя по ней, IPFoxy может выплатить нам партнёрское вознаграждение. IPFoxy — наш партнёр.

Перейти на сайт IPFoxy (откроется в новой вкладке)Продукты и цены IPFoxy представлены на нашей странице партнёра.

Как использовать вместе с поиском Exa

Exa ищет в интернете по смыслу. Запрос не обязан содержать слова со страницы: Exa всё равно находит нужные компании, статьи и научные работы и возвращает их текст вместе с результатами. EveryInfra даёт структурированные данные платформ, например рейтинги и отзывы с G2 и Trustpilot или комментарии YouTube, в виде JSON с именованными полями.

Типичная схема: с помощью Exa составить список объектов, а затем с помощью EveryInfra добавить к каждому из них данные платформ.

ЗадачаЧто использовать
Найти по смыслу подборку компаний, статей или научных работ вместе с их текстомExa
Рейтинги, число отзывов и тексты отзывов о заданном продукте на G2 или TrustpilotAPI EveryInfra g2 и trustpilot
Комментарии и число лайков под видео на YouTubeAPI EveryInfra youtube (Exa возвращает текст расшифровки видео, но не комментарии)

Этот пример на Python составляет таблицу отзывов о конкурентах. Шаг 1 запрашивает у Exa «note-taking apps similar to Obsidian»; благодаря category: "company" в ответ попадают только главные страницы компаний. Шаг 2 вызывает API EveryInfra g2/search для каждой компании и получает её рейтинг и число отзывов на G2. Перед запуском задайте две переменные окружения: EXA_API_KEY — ваш ключ из панели Exa, EVERYINFRA_API_KEY — ваш API-ключ EveryInfra. Нужна библиотека requests: pip install requests.

exa_plus_data_api.py
import os
from concurrent.futures import ThreadPoolExecutor
from urllib.parse import urlsplit

import requests

EXA_API_KEY = os.environ["EXA_API_KEY"]
EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"]
QUESTION = "note-taking apps similar to Obsidian"

# 1. Exa: ищем компании по смыслу, а не по ключевым словам
companies = requests.post(
    "https://api.exa.ai/search",
    headers={"x-api-key": EXA_API_KEY},
    json={"query": QUESTION, "category": "company", "type": "auto", "numResults": 10},
    timeout=60,
).json()["results"]


# 2. EveryInfra: рейтинг и число отзывов каждой компании на G2
def g2_rating(company):
    name = company["title"].split(" - ")[0].split(" | ")[0].strip()
    resp = requests.post(
        "https://api.everyinfra.com/api/v1/social",
        headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"},
        json={"platform": "g2", "action": "search", "params": {"keyword": name}},
        timeout=180,
    )
    resp.raise_for_status()
    body = resp.json()
    match = next((p for p in body["results"] if p["product_name"].lower() == name.lower()), None)
    return name, match, body["billing"]["charged_usd"]


with ThreadPoolExecutor(max_workers=4) as pool:
    rows = list(pool.map(g2_rating, companies))

spent = 0.0
for company, (name, g2, charged) in zip(companies, rows):
    spent += charged
    domain = urlsplit(company["url"]).hostname.removeprefix("www.")
    if g2 and g2["review_count"]:
        print(f"{name:12} {domain:16} G2 {g2['rating']} / 5 · {g2['review_count']} reviews")
    else:
        print(f"{name:12} {domain:16} no G2 reviews yet")
print("EveryInfra charged (USD):", round(spent, 6))
  • Мы запустили этот код без изменений 25 октября 2026 года. Exa вернул 10 главных страниц компаний, а при повторном поиске через несколько минут — те же 10. У 7 из 10 есть рейтинги и отзывы на G2, например у Goodnotes 4,7 при 123 отзывах, у Milanote 4,5 при 42. Мы по одному разу запустили английскую, китайскую и испанскую версии; каждый запуск занял 44–51 секунду. EveryInfra списала $0,01389 (10 вызовов g2/search); поиск в Exa стоил $0,007.
  • Компания считается найденной, только если её название полностью совпадает с названием продукта на G2. Пример берёт заголовок результата Exa и отбрасывает всё после « - ». В нашем запуске на G2 не нашлось продукта Brainio, а у Yaranga и Brainfo есть страницы на G2, но пока нет отзывов.
  • Каждый вызов g2/search оплачивается один раз ($0,001389), даже если продукта с таким названием нет, потому что API всё равно возвращает результаты поиска. Один вызов занимает около 30–70 секунд, поэтому пример выполняет по 4 вызова одновременно.
  • Для Trustpilot замените шаг 2 на trustpilot/profile и передайте домен компании в company. Из тех же компаний профиль на Trustpilot нашёлся у 4 из 7. Для компании без профиля возвращается пустой результат, и он не оплачивается.
  • В результатах Exa нет веток Reddit: с includeDomains, равным reddit.com, он вернул 0 результатов, и запрос ничего не стоил.
  • Подробнее об охвате 3 категорий и 30 компаний, о крупных компаниях, пропущенных при точном сопоставлении названий, и о полном наборе данных читайте в статье « Exa находит конкурентов, EveryInfra проверяет их отзывы».

EveryInfra и Exa — партнёры. Указанная ниже ссылка «Перейти на сайт Exa» — обычная ссылка без реферального кода.

Перейти на сайт Exa (откроется в новом окне)Продукты и цены Exa представлены на нашей странице партнёра.

Как использовать вместе с Monid

Monid — маршрутизатор инструментов для ИИ-агентов. Агент одним предложением описывает, что ему нужно: discover бесплатно возвращает подходящие эндпоинты и их цены, inspect так же бесплатно возвращает схему входных данных и текущую цену, а оплачивается только run: сумма по этой цене списывается с единого предоплаченного баланса. EveryInfra предоставляет API данных платформ с фиксированной структурой: единый формат запроса, а для каждой возможности — фиксированные имена полей и фиксированная цена.

Обычно задачи разделяют по тому, насколько часто повторяется вызов. Платформы из каталога EveryInfra (106 на 3 ноября 2026 года; актуальный список возвращает GET /api/v1/social/catalog) отправляются в EveryInfra. Платформы вне каталога и инструменты, которые вообще не относятся к данным (погода, геокодирование, логотипы компаний, генерация изображений), отправляются в Monid.

ЗадачаЧто использовать
Данные платформ, которые вы собираете каждый день, например поиск по Xiaohongshu, товары Amazon или комментарии YouTubeEveryInfra API или MCP-инструмент everyinfra_call_api; список платформ есть в каталоге
Платформа, которой нет в каталоге EveryInfra, или инструмент, который нужен лишь время от времениMonid: discover, чтобы найти эндпоинт, inspect, чтобы узнать цену, затем run
Вы ещё не знаете, какой инструмент использоватьMonid discover (бесплатно; возвращает ранжированный список кандидатов с ценами)

Этот пример на Python объединяет оба типа вызовов в одном скрипте. Шаг 1 — ежедневная задача: скрипт вызывает EveryInfra xiaohongshu/search по запросу «matcha latte» с сортировкой по числу лайков и выводит первые 3 заметки и сумму списания. Шаг 2 — разовая задача: Monid находит инструмент, который возвращает логотип компании по домену, и скрипт запускает его, только если цена из inspect не превышает MAX_PRICE_USD. Перед запуском задайте две переменные окружения: EVERYINFRA_API_KEY — ваш API-ключ EveryInfra, MONID_API_KEY — API-ключ, созданный в панели Monid (app.monid.ai). Нужна библиотека requests: pip install requests.

everyinfra_plus_monid.py
import os

import requests

EVERYINFRA_API_KEY = os.environ["EVERYINFRA_API_KEY"]
MONID_API_KEY = os.environ["MONID_API_KEY"]
MONID = "https://api.monid.ai/v1"
MONID_HEADERS = {"Authorization": f"Bearer {MONID_API_KEY}"}
MAX_PRICE_USD = 0.01  # do not run a Monid tool that costs more than this per call

# 1. The daily job: EveryInfra xiaohongshu/search, one fixed request shape
resp = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {EVERYINFRA_API_KEY}"},
    json={"platform": "xiaohongshu", "action": "search",
          "params": {"keyword": "matcha latte", "sort": "most_liked"}},
    timeout=120,
)
resp.raise_for_status()
body = resp.json()
for note in body["results"][:3]:
    print(note["like_count"], note["collect_count"], note["posted_at"][:10], note["url"])
print("EveryInfra:", len(body["results"]), "notes, charged (USD):", body["billing"]["charged_usd"])

# 2. A one-off lookup that is not a daily platform: discover, inspect, run on Monid
found = requests.post(f"{MONID}/discover", headers=MONID_HEADERS, timeout=60,
                      json={"query": "company logo image URL from a domain", "limit": 3}).json()["results"]
# discover adds ranking and price fields to each result; inspect and run take only the fields that name the tool
SHOWN_ONLY = ("providerName", "description", "price", "score", "scoreBreakdown", "tags", "metrics", "hints")
tool = {key: value for key, value in found[0].items() if key not in SHOWN_ONLY}
detail = requests.post(f"{MONID}/inspect", headers=MONID_HEADERS, timeout=60, json=tool).json()
price = detail["price"]["amount"]["value"]
print("Monid tool:", detail["endpoint"], "price (USD):", price)
if price <= MAX_PRICE_USD:
    run = requests.post(f"{MONID}/run", headers=MONID_HEADERS, timeout=120,
                        json={**tool, "input": {"pathParams": {"company": "starbucks.com"}}}).json()
    print("Monid run:", run.get("runId"), run.get("status"), run.get("output"))
  • Мы запустили этот код без изменений 3 ноября 2026 года в 16:45 (по сингапурскому времени). EveryInfra вернула 20 заметок и списала $0,005556. Monid discover поставил эндпоинт для логотипов компаний на первое место, inspect показал $0 за вызов, а run вернул статус COMPLETED и URL изображения логотипа. Скрипт отработал за 6–7 секунд. Мы по одному разу запустили китайскую, английскую и испанскую версии (китайская версия ищет по китайскому названию напитка).
  • Каждый вызов xiaohongshu/search возвращает одну страницу с максимум 20 заметками и стоит $0,005556. Страница без заметок не оплачивается. Для следующей страницы передайте next_page_token из результатов.
  • Monid не берёт плату за discover и inspect; оплачивается только run по цене, которую показывает inspect. Пока выполняется запуск, Monid резервирует на балансе расчётную стоимость и списывает фактическую сумму по его завершении (Monid llms.txt, прочитано 03.11.2026). В примере MAX_PRICE_USD используется, чтобы пропускать инструменты, стоимость которых превышает ваш бюджет.
  • Агенту можно задать правило маршрутизации, например такое: «Платформы из GET https://api.everyinfra.com/api/v1/social/catalog отправляйте в everyinfra_call_api. Все остальные платформы и инструменты обрабатывайте через Monid: discover, затем inspect, и run, только если цена укладывается в бюджет. Записывайте в лог сумму списания каждого вызова».
  • MCP-сервер Monid (https://mcp.monid.ai/v1) требует входа через OAuth в браузере; мы его не тестировали. Шаги настройки для Claude, Claude Code, Codex, OpenCode и ChatGPT описаны в руководстве [«Быстрый старт с MCP-сервером Monid»](https://monid.ai/docs/guide/quickstart-mcp). Настройка на стороне EveryInfra описана в разделе о MCP выше.

EveryInfra и Monid — партнёры. Указанная ниже ссылка «Перейти на сайт Monid» — обычная ссылка без реферального кода.

Перейти на сайт Monid (откроется в новом окне)Продукты и условия оплаты Monid представлены на нашей странице партнёра.

Как устроены списания и корректировки баланса

Цену и единицу оплаты нужной возможности смотрите в публичном каталоге. В каждом ответе указана списанная сумма. Для продуктов, где списание происходит только при успешном получении результата, при ошибке или пустом результате плата не взимается.

  • Не пересчитывайте внутренние единицы кошелька в валюту на стороне клиента.
  • Показывайте валюту и суммы, которые возвращает API, и сверяйте по ним списания.
  • Если операция с оплатой за выдачу не завершилась, итогового списания не остаётся, а зарезервированная сумма автоматически возвращается на баланс аккаунта.
  • Объект billing в каждом платном ответе содержит charged_usd, сумму в USD, списанную за вызов (0, если ничего не списано, и null, пока результат ещё неизвестен), и balance_after_usd, баланс кошелька после окончательного расчёта по вызову (null, если баланс невозможно получить). Во время пакетной обработки следите за balance_after_usd, а не опрашивайте аккаунт.
  • Когда зарезервированная сумма неудачного вызова возвращена, billing в теле ошибки также содержит balance_after_usd.

Обработка ошибок

Анализируйте HTTP-статус вместе с телом ошибки. Каждая ошибка также сообщает, на чьей стороне проблема и что делать дальше: fault (request, account или service), retryable и next_steps. Если проблема на стороне EveryInfra и повторные попытки исчерпаны, в support передаётся черновик обращения; прежде чем отправлять его, спросите пользователя. Перед повторной попыткой проверьте, что именно не сработало и не приведёт ли повтор запроса к дублированию действия.

СтатусЗначениеДействие
400Неизвестная платформа или действиеИспользуйте did_you_mean и allowed из ответа или каталог возможностей.
401API-ключ отсутствует, недействителен или отключёнПроверьте Bearer-токен и статус ключа.
402Недостаточно средств на балансе кошелькаПроверьте текущий баланс через GET /api/v1/account, затем пополните баланс или сократите объём запроса.
404Неизвестный маршрут или ресурсПроверьте эндпоинт и идентификатор ресурса.
422Недопустимый параметр, значение или типПосмотрите поддерживаемые значения и did_you_mean в ответе.
429Достигнут лимит запросовПеред повторной попыткой выждите интервал, указанный в Retry-After. Лимит действует на весь аккаунт: запросы по всем API-ключам учитываются вместе, при этом для отдельного ключа может быть установлен собственный, более низкий лимит.
5xxЗапрос не удалось доставитьСохраните ID запроса и следуйте указаниям из next_steps. При тайм-ауте (timeout) повторите тот же запрос с "mode":"async", чтобы вместо ожидания сразу получить job_id.

Нужен ли API-ключ для эндпоинтов каталога?

Нет. Публичные каталоги возможностей доступны и до регистрации. Для вызовов с аутентификацией по-прежнему нужен действующий Bearer API-ключ.

Откуда берутся данные и есть ли у вас разрешение платформ?

EveryInfra возвращает контент, который публично виден на каждой платформе: публичные посты, комментарии, страницы товаров и профили. Вам не нужно регистрировать приложение разработчика на платформе или входить под аккаунтом платформы. Мы не являемся партнёром этих платформ, не представляем их и не получаем их разрешение от вашего имени. Как использовать данные, решаете вы: убедитесь, что ваше использование соответствует применимому законодательству и условиям платформы (см. разделы 1 и 4 [Условий использования](/ru/terms)). Публичная доступность не означает, что данные можно свободно копировать, публиковать повторно или использовать в коммерческих целях.

MCP и REST — это разные продукты?

Нет. MCP — ещё один способ доступа к доступным сейчас инструментам EveryInfra. Для работы с данными, поиска, решения капчи и чата с ИИ действуют те же правила аутентификации, тарификации, валидации, лимитов запросов и корректировки баланса, что и для соответствующих REST-вызовов.

API для ИИ бесплатный?

Да. Любой аккаунт, баланс которого хотя бы раз пополняли, может обращаться к нему, не расходуя баланс. Лимиты зависят от общей суммы пополнений: при сумме пополнений меньше $100: 50 запр./мин и до 5 одновременных запросов; от $100: 500 и 50; от $500: 5 000 и 500. Коды кредитов и бонусные кредиты учитываются как пополнения, если сумма каждого начисления превышает $1; пробные кредиты и суммы не более $1 не учитываются.

Как проверить баланс из кода?

Вызовите GET /api/v1/account с тем же Bearer API-ключом. Он возвращает основной, бонусный и общий баланс в USD, скидку на пополнение баланса в текущем месяце, лимит запросов в минуту и статистику использования за последние 24 часа. Вызов бесплатный и не учитывается в лимите. Кроме того, каждый платный ответ содержит billing.balance_after_usd.

Можно ли проигнорировать неподдерживаемый параметр?

Нет. Для неизвестных параметров возвращается код 422 со списком поддерживаемых значений и подсказкой с ближайшим по написанию именем параметра, если такое имя удаётся определить.

Как отправить большой пакет запросов?

Используйте асинхронный режим: добавьте "mode": "async" в тело запроса. Каждый вызов сразу возвращает job_id, а результат вы получаете, опрашивая GET /api/v1/jobs/{job_id}. Синхронный вызов должен завершиться за 85 с, иначе он завершится ошибкой по тайм-ауту (без списания); на асинхронное задание это ограничение не распространяется.