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
Разработчик Xanguard · в личке отвечаю сам
Ссылка не открывается? Открой Telegram и найди через поиск @B2B_Xanguard_bot
Пять типов событий в реальном времени, один WebSocket
Всё, что нужно торговым ботам и терминалам из Твиттера: твиты, удаления, изменения профиля, новые подписчики, подписки и отписки. JSON, готовый к работе.
Твиты twitter.post.new
Твиты, ответы, цитаты, репосты, медианное обнаружение ~200 мс. Полный текст, ссылки на медиа, исходные твиты, данные автора, автоматическое извлечение контрактов. Во всех тарифах.
Удаления twitter.tweet.deleted
Приходит, когда отслеживаемый аккаунт удаляет твит, с ID и текстом удалённого твита; если удаление подтверждено, а какой именно твит удалён определить не удалось, эти два поля равны null. Во всех тарифах.
Изменения профиля twitter.profile.update
Смена имени, био, аватара, закреплённого твита, со значением до и после. Проекты, меняющие нарратив или ребрендящиеся, часто начинают с профиля. Pro и выше.
Новые подписчики twitter.follower.new
Когда у отслеживаемого аккаунта появляется новый подписчик, видно, кто именно. Удобно, чтобы заметить, кто тихо подписывается на топовых разработчиков. Pro и выше.
Подписки / отписки twitter.following.new / .removed
На кого подписался или от кого отписался отслеживаемый аккаунт, с именем, био и числом подписчиков этого аккаунта. Сигналы о партнёрствах и действиях умных кошельков в том же соединении. Enterprise.
REST API
Ключом dt_ добавляй и удаляй отслеживаемые аккаунты (POST /v1/dt/targets), запрашивай профили и историю изменений. Распознавание контрактов на картинках (OCR) есть в Enterprise.
5 минут до первых событий
Без созвонов и ожидания продавца. Оформляешь тариф в боте и сразу подключаешься с ключом.
Оформи тариф
Открой @B2B_Xanguard_bot в Telegram, выбери тариф и оплати в SOL.
Получи ключ
После подтверждения в блокчейне доступ открывается автоматически, и бот присылает API-ключ, который начинается с dt_.
Добавь аккаунты
В боте отправь /add и ник или вызови POST /v1/dt/targets.
Подключи WebSocket
После подключения приходит HELLO, отправляешь LOGIN (op 2 + ключ) и дальше получаешь EVENT.
Протокол опкодов, примеры на Python и Node
Адрес: wss://api.xanguard.tech/v1/dt/realtime/ws. Поток опкодов совместим с TweetCatcher; до 5 одновременных соединений на ключ, при отсутствии heartbeat 90 секунд соединение закрывается.
| op | Название | Направление | Описание |
|---|---|---|---|
| 10 | HELLO | сервер → клиент | Отправляется сразу после подключения, с heartbeat_interval (в миллисекундах) |
| 2 | LOGIN | клиент → сервер | В течение 15 секунд отправь API-ключ: {"op": 2, "d": "dt_..."} |
| 4 | READY | сервер → клиент | Аутентификация прошла, в ответе подключённые модули и число аккаунтов |
| 0 | EVENT | сервер → клиент | Событие в реальном времени, тип в d.event |
| 1 | HEARTBEAT | клиент → сервер | Отправляй с периодом heartbeat_interval |
| 11 | HEARTBEAT_ACK | сервер → клиент | Ответ на heartbeat |
| 3 | DISCONNECT | сервер → клиент | Разрыв, причина в d.reason (например, ключ недействителен или истёк) |
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())
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.
- События с твитами
- События об удалениях
- WebSocket + REST
- Всё из Starter
- События изменения профиля
- События новых подписчиков
- Всё из 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 | $229 | WebSocket + 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, картой нельзя.
Частые вопросы
Один WebSocket, JSON, готовый к работе
От $49 в месяц за 50 аккаунтов, оплата в SOL, после подтверждения в блокчейне ключ приходит автоматически.
Ссылка не открывается? Открой Telegram и найди через поиск @B2B_Xanguard_bot
Главная · Мониторинг Твиттера · Живая скорость · English version