B2B API в реальном времени · WebSocket + REST

Twitter API (X) в реальном времени: WebSocket + REST
альтернатива для торговых ботов, терминалов и Agent

Xanguard B2B это API данных Твиттера (X) в реальном времени для разработчиков. Одно WebSocket-соединение присылает JSON с новыми твитами, удалениями, изменениями профиля, новыми подписчиками и событиями подписок и отписок отслеживаемых аккаунтов; REST API управляет списком отслеживания. Медианное обнаружение в платных тарифах ~200 мс (живые замеры). От $49 в месяц за 50 аккаунтов, до 1,000 аккаунтов, оплата в SOL, доступ открывается автоматически.

Цены проверены 5 октября 2026

Брат, ты делаешь торговых ботов или терминалы? Добро пожаловать в Xanguard вместе со своим Agent. Подключение, расценки, маппинг полей: пиши мне в Telegram, @notAdegen

t.me/notAdegen Открыть в приложении

Разработчик Xanguard · в личке отвечаю сам

Ссылка не открывается? Открой Telegram и найди через поиск @B2B_Xanguard_bot

~200ms
медианное обнаружение
5
типов событий в реальном времени
1,000
аккаунтов максимум (больше по договорённости)
от $49
в месяц за 50 аккаунтов

Пять типов событий в реальном времени, один WebSocket

Всё, что нужно торговым ботам и терминалам из Твиттера: твиты, удаления, изменения профиля, новые подписчики, подписки и отписки. JSON, готовый к работе.

Твиты twitter.post.new

Твиты, ответы, цитаты, репосты, медианное обнаружение ~200 мс. Полный текст, ссылки на медиа, исходные твиты, данные автора, автоматическое извлечение контрактов. Во всех тарифах.

Удаления twitter.tweet.deleted

Приходит, когда отслеживаемый аккаунт удаляет твит, с ID и текстом удалённого твита; если удаление подтверждено, а какой именно твит удалён определить не удалось, эти два поля равны null. Во всех тарифах.

Изменения профиля twitter.profile.update

Смена имени, био, аватара, закреплённого твита, со значением до и после. Проекты, меняющие нарратив или ребрендящиеся, часто начинают с профиля. Pro и выше.

Новые подписчики twitter.follower.new

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

REST API

Ключом dt_ добавляй и удаляй отслеживаемые аккаунты (POST /v1/dt/targets), запрашивай профили и историю изменений. Распознавание контрактов на картинках (OCR) есть в Enterprise.

5 минут до первых событий

Без созвонов и ожидания продавца. Оформляешь тариф в боте и сразу подключаешься с ключом.

1

Оформи тариф

Открой @B2B_Xanguard_bot в Telegram, выбери тариф и оплати в SOL.

2

Получи ключ

После подтверждения в блокчейне доступ открывается автоматически, и бот присылает API-ключ, который начинается с dt_.

3

Добавь аккаунты

В боте отправь /add и ник или вызови POST /v1/dt/targets.

4

Подключи WebSocket

После подключения приходит HELLO, отправляешь LOGIN (op 2 + ключ) и дальше получаешь EVENT.

Протокол опкодов, примеры на Python и Node

Адрес: wss://api.xanguard.tech/v1/dt/realtime/ws. Поток опкодов совместим с TweetCatcher; до 5 одновременных соединений на ключ, при отсутствии heartbeat 90 секунд соединение закрывается.

opНазваниеНаправлениеОписание
10HELLOсервер → клиентОтправляется сразу после подключения, с heartbeat_interval (в миллисекундах)
2LOGINклиент → серверВ течение 15 секунд отправь API-ключ: {"op": 2, "d": "dt_..."}
4READYсервер → клиентАутентификация прошла, в ответе подключённые модули и число аккаунтов
0EVENTсервер → клиентСобытие в реальном времени, тип в d.event
1HEARTBEATклиент → серверОтправляй с периодом heartbeat_interval
11HEARTBEAT_ACKсервер → клиентОтвет на heartbeat
3DISCONNECTсервер → клиентРазрыв, причина в d.reason (например, ключ недействителен или истёк)
Python (pip install websockets)
import asyncio, json
import websockets

URL = "wss://api.xanguard.tech/v1/dt/realtime/ws"
API_KEY = "dt_твой_ключ"

async def main():
    async with websockets.connect(URL) as ws:
        # op 10 HELLO: приходит интервал heartbeat (мс)
        hello = json.loads(await ws.recv())
        interval = hello["d"]["heartbeat_interval"] / 1000

        # op 2 LOGIN: отправь ключ в течение 15 секунд
        await ws.send(json.dumps({"op": 2, "d": API_KEY}))
        ready = json.loads(await ws.recv())
        if ready["op"] != 4:  # при ошибке придёт op 3 DISCONNECT
            raise SystemExit(ready["d"].get("reason"))
        print("Подключено:", ready["d"]["modules"])

        # heartbeat по интервалу; без него через 90 секунд разрыв
        async def heartbeat():
            while True:
                await asyncio.sleep(interval)
                await ws.send(json.dumps({"op": 1}))
        hb = asyncio.create_task(heartbeat())

        async for raw in ws:
            msg = json.loads(raw)
            if msg["op"] != 0:  # обрабатываем только op 0 EVENT
                continue
            ev, d = msg["d"]["event"], msg["d"]["data"]
            if ev == "twitter.post.new":
                print(d["author"]["handle"], d["text"])
            elif ev == "twitter.tweet.deleted":
                print("Удалён твит:", d["tweet_id"])
            elif ev == "twitter.profile.update":
                print("Изменение профиля:", d["field"], d["updated"])

asyncio.run(main())
Node.js (npm i ws)
const WebSocket = require('ws');
const URL = 'wss://api.xanguard.tech/v1/dt/realtime/ws';
const ws = new WebSocket(URL);
let hb;

ws.on('message', (raw) => {
  const msg = JSON.parse(raw.toString());
  switch (msg.op) {
    case 10: // HELLO: отправь LOGIN и запусти heartbeat
      ws.send(JSON.stringify({ op: 2, d: 'dt_твой_ключ' }));
      hb = setInterval(
        () => ws.send(JSON.stringify({ op: 1 })),
        msg.d.heartbeat_interval
      );
      break;
    case 4: // READY: аутентификация прошла
      console.log('Подключено', msg.d.modules);
      break;
    case 3: // DISCONNECT: ключ недействителен или истёк и т.п.
      console.error('Разрыв:', msg.d.reason);
      break;
    case 0: { // EVENT: событие в реальном времени
      const { event, data } = msg.d;
      if (event === 'twitter.post.new') {
        console.log(data.author.handle, data.text);
      } else if (event === 'twitter.following.new') {
        console.log('Новая подписка:', data.handle);
      }
      break;
    }
  }
});

ws.on('close', () => clearInterval(hb));

Как выглядит JSON

Ниже примеры данных, актуальные поля смотри в документации API (на английском). Событие с твитом может прийти сначала как twitter.post.new, а затем дополниться событием twitter.post.update с тем же data.id.

twitter.post.new
{
  "op": 0,
  "d": {
    "event": "twitter.post.new",
    "event_id": "evt_1234567890123456789",
    "task_info": {"handle": "example_dev"},
    "data": {
      "id": "1234567890123456789",
      "created_at": 1712000000000,
      "type": "post",
      "text": "gm, новая версия сегодня вечером",
      "media": [],
      "author": {
        "id": "1234567890",
        "handle": "example_dev",
        "name": "Example Dev",
        "stats": {"followers": 12000, "following": 800}
      },
      "in_reply_to": null,
      "quoted_tweet": null
    }
  }
}
twitter.following.new (Enterprise)
{
  "op": 0,
  "d": {
    "event": "twitter.following.new",
    "event_id": "evt_f_example_dev_1712000000000",
    "event_time": 1712000000000,
    "task_info": {"handle": "example_dev", "id": "1234567890"},
    "data": {
      "id": "2233445566",
      "handle": "example_founder",
      "name": "Example Founder",
      "bio": "building on Solana",
      "followers": 5400,
      "following": 310
    }
  }
}
twitter.profile.update (Pro и выше)
{
  "op": 0,
  "d": {
    "event": "twitter.profile.update",
    "event_id": "evt_p_example_dev_1712000000000",
    "task_info": {"handle": "example_dev"},
    "data": {
      "field": "bio",
      "prev": "Old bio text",
      "updated": "New bio text"
    }
  }
}
twitter.follower.new / twitter.tweet.deleted
{
  "op": 0,
  "d": {
    "event": "twitter.follower.new",
    "task_info": {"handle": "example_dev"},
    "data": {
      "id": "12345678",
      "handle": "newfollower",
      "name": "New Follower"
    }
  }
}

{
  "op": 0,
  "d": {
    "event": "twitter.tweet.deleted",
    "task_info": {"handle": "example_dev"},
    "data": {
      "tweet_id": "1234567890123456789",
      "text": "текст удалённого твита"
    }
  }
}

Значения data.type: post, reply, quote, repost. Поле field в изменении профиля: bio, name, avatar, pinned_tweet.

Уровень по модулям, цена по числу аккаунтов

Сначала выбери уровень модулей, потом число отслеживаемых аккаунтов. Цены за месяц, в долларах, оплата в SOL, проверены 5 октября 2026.

Starter
от $49 в месяц
  • События с твитами
  • События об удалениях
  • WebSocket + REST
Enterprise
от $249 в месяц
  • Всё из Pro
  • События подписок и отписок
  • Распознавание контрактов на картинках (OCR)
Отслеживаемых аккаунтовStarter
твиты + удаления
Pro
+ профиль + новые подписчики
Enterprise
+ подписки и отписки
Starter за аккаунт
50 $49 $99 $249 $0.98
250 $229 $429 $979 $0.92
500 $449 $749 $1,649 $0.90
1,000 $849 $1,349 $2,849 $0.85

Больше 1,000 аккаунтов обсуждается отдельно. Дополнительно CA Search (поиск твитов за последние 24 часа по контракту, названию токена или слову, до 200 твитов за запрос): 1,000 запросов в день $100 в месяц, 2,000 запросов $180, 5,000 запросов $250. Полный прайс на английском: B2B API pricing.

Сколько стоит мониторинг 200 аккаунтов в реальном времени

Цены сторонних сервисов взяты с их сайтов и проверены 20 сентября 2026; цена официального X API проверена 5 октября 2026 (docs.x.com). Актуальные цены смотри на сайтах самих сервисов.

Вариант200 аккаунтов в месяцПримечание
Xanguard B2B Starter 250$229WebSocket + REST, включая события об удалениях, до 250 аккаунтов
TweetStream (тариф Pro на 250 аккаунтов)$499Цена с сайта
twitterapi.io (тариф на 150 аккаунтов + 50 докупленных)около $399Докупленный аккаунт стоит $2
Официальный X API (по использованию)около $210Только чтение твитов: $0.005 за твит, из расчёта 7 твитов в день с аккаунта; подписки и изменения профиля считаются отдельно, есть лимиты

Переход с других сервисов

  • TweetCatcher: WebSocket использует совместимый поток опкодов (HELLO → LOGIN → EVENT + heartbeat). Замени адрес и ключ, сверь несколько отличающихся полей, и обычно всё готово за час. Руководство по переходу (на английском)
  • twitterapi.io: замени адрес запросов на api.xanguard.tech, заголовок X-API-Key и структура данных остаются прежними. Руководство по переходу (на английском)
  • Другие провайдеры: пришли документацию API или пример данных, обычно за несколько часов мы делаем маппинг полей и подключаем тебя в том же чате с разработчиком.

Чего пока нет

  • Досылки пропущенных твитов после переподключения WebSocket.
  • Письменного SLA по доступности.
  • Нативной доставки в Discord; оплата только в SOL, картой нельзя.
Для кого: торговые терминалы, Telegram-боты для трейдинга, копитрейдинг и сигнальные инструменты, дашборды и AI Agent, которым нужны данные Твиттера в реальном времени. Хочешь просто получать твиты в Telegram? Хватит @Xanguard_bot, 1 аккаунт бесплатно.

Частые вопросы

Есть. Xanguard B2B присылает твиты, удаления, изменения профиля, новых подписчиков и события подписок и отписок отслеживаемых аккаунтов по одному WebSocket, плюс REST API. Цена зависит от числа аккаунтов и модулей: Starter, 50 аккаунтов $49 в месяц, 250 аккаунтов $229, 500 аккаунтов $449, 1,000 аккаунтов $849. Для сравнения: официальный X API сейчас оплачивается по использованию, $0.005 за каждый прочитанный твит и $0.010 за прочитанного пользователя, с одним подключением filtered stream на приложение и без событий подписок, удалений и изменений профиля (docs.x.com, проверено в октябре 2026). Оплата в SOL, доступ открывается автоматически.
По документации X для разработчиков (docs.x.com, проверено 5 октября 2026) официальный X API сейчас работает по схеме оплаты по использованию: $0.005 за каждый прочитанный твит и $0.010 за каждого прочитанного пользователя, не больше 3 млн твитов в месяц, а дальше нужно договариваться с X об Enterprise. По прикидке на 7 твитов в день с аккаунта, чтение 50 аккаунтов обойдётся примерно в $53 в месяц только за твиты; подписки и изменения профиля читаются и оплачиваются отдельно и упираются в лимиты. Если нужно следить за известным набором аккаунтов в реальном времени, подписка по числу аккаунтов обычно проще.
Медианное обнаружение в платных тарифах ~200 мс, p95 и p99 обновляются каждый час на xanguard.tech/speed/. В каждом событии с твитом есть время публикации самого твита, created_at (в миллисекундах), поэтому ты можешь сравнить его со временем получения и проверить задержку сам.
Набором модулей. Starter: твиты и удаления; Pro: плюс изменения профиля и новые подписчики; Enterprise: плюс события подписок и отписок. Во всех трёх есть WebSocket и REST, число аккаунтов можно выбрать 50, 250, 500 или 1,000. Извлечение контрактов есть во всех тарифах, а распознавание контрактов на картинках (OCR) только в Enterprise.
Можно. WebSocket использует протокол опкодов, совместимый с TweetCatcher (HELLO, LOGIN, READY, EVENT, HEARTBEAT): меняешь адрес и ключ, сверяешь несколько полей, и обычно всё работает за час. Пользователям twitterapi.io достаточно заменить адрес запросов на api.xanguard.tech, заголовок X-API-Key и структура данных остаются. Если у тебя другой провайдер, пришли документацию, и обычно за несколько часов мы делаем маппинг полей.
Открой @B2B_Xanguard_bot в Telegram, выбери тариф и оплати в SOL. После подтверждения в блокчейне доступ открывается автоматически, и бот присылает API-ключ: без созвонов и ожидания продавца. Оплата картой не поддерживается. Платежи окончательные и не возвращаются.
Если ты сам торгуешь, тебе скорее нужен бот в Telegram (xanguard.tech/ru/twitter-to-telegram/). B2B API нужен тем, кто делает свой бот, терминал или Agent и хочет получать события Твиттера по WebSocket: это источник данных, а не терминал и не торговый бот.
Прошлые удалённые твиты вернуть нельзя. Но события об удалении входят во всех тарифах B2B API, начиная со Starter: как только отслеживаемый аккаунт удаляет твит, приходит событие с ID и текстом, если удалось определить, какой именно твит.

Один WebSocket, JSON, готовый к работе

От $49 в месяц за 50 аккаунтов, оплата в SOL, после подтверждения в блокчейне ключ приходит автоматически.

Ссылка не открывается? Открой Telegram и найди через поиск @B2B_Xanguard_bot