推特(X)实时 API
给交易机器人、终端和 Agent
Xanguard B2B 是给开发者用的推特(X)实时数据 API。一条 WebSocket 连接,把你监控的账号的新推文、删推、资料变更、新粉丝和关注/取关事件以 JSON 实时推给你;另有 REST API 管理监控列表。付费套餐中位检测延迟约 200 毫秒(实测数据)。50 个账号 49 美元/月起,最多 1,000 个账号,SOL 付款,自动开通。
价格核对于 2026 年 10 月 5 日
做交易机器人和终端的兄弟,欢迎你和你的 Agent 来到 Xanguard。接入、报价、字段映射,直接在 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 分钟接入,开始收事件
不用开会,不用等销售。机器人里下单,拿到密钥就能连。
订阅
在 Telegram 打开 @B2B_Xanguard_bot,选套餐,用 SOL 付款。
拿密钥
链上确认后自动开通,机器人发给你 dt_ 开头的 API 密钥。
加账号
在机器人里 /add 用户名,或调用 POST /v1/dt/targets。
连 WebSocket
连接后收到 HELLO,发送 LOGIN(op 2 + 密钥),之后持续接收 EVENT。
opcode 协议,Python / Node 直接跑
地址:wss://api.xanguard.tech/v1/dt/realtime/ws。与 TweetCatcher 兼容的 opcode 流程;每个密钥最多 5 个并发连接,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 | 服务端 → 客户端 | 心跳回应 |
| 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:带心跳间隔(毫秒)
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"])
# 按间隔发心跳,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,并按间隔发心跳
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 到达,随后用同一个 data.id 的 twitter.post.update 补全信息。
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 支付,核对于 2026 年 10 月 5 日。
- 推文事件
- 删推事件
- 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 个账号,每月多少钱
第三方价格取自各家官网,核对于 2026 年 9 月 20 日;官方 X API 价格核对于 2026 年 10 月 5 日(docs.x.com)。以对方官网最新价格为准。
| 方案 | 200 个账号每月 | 说明 |
|---|---|---|
| Xanguard B2B Starter 250 | $229 | WebSocket + REST,含删推事件,最多 250 个账号 |
| TweetStream(250 账号 Pro 套餐) | $499 | 官网标价 |
| twitterapi.io(150 账号套餐 + 加购 50 个) | 约 $399 | 加购账号每个 $2 |
| 官方 X API(按量付费) | 约 $210 | 只算读推文:每条 $0.005,按每个账号每天 7 条估算;关注、资料变更另外计费,有速率限制 |
从其他服务迁移
- TweetCatcher:WebSocket 使用兼容的 opcode 流程(HELLO → LOGIN → EVENT + 心跳)。换掉地址和密钥,再对一下少量不同的字段,通常一小时内完成。迁移指南(英文)
- twitterapi.io:把请求地址换成
api.xanguard.tech,保留原来的X-API-Key请求头和数据结构。迁移指南(英文) - 其他服务商:把你现在用的接口文档或数据样例发过来,一般几小时内做好字段映射,在同一个聊天里和开发者一起对接。
目前不提供
- WebSocket 断线重连后补发断线期间错过的推文。
- 书面 SLA 可用性承诺。
- 原生 Discord 推送;付款只支持 SOL,不支持信用卡。
常见问题
一条 WebSocket,JSON 拿来就用
50 个账号 49 美元/月起,SOL 付款,链上确认后自动发密钥。
链接打不开?打开 Telegram(电报),搜索 @B2B_Xanguard_bot
中文首页 · 推特监控工具 · 实测速度 · English version