API en tiempo real B2B · WebSocket + REST

API de Twitter (X) en tiempo real
Para bots de trading, terminales y Agents

Xanguard B2B es una API de datos de Twitter (X) en tiempo real para desarrolladores. Una sola conexión WebSocket te envía en JSON los tweets nuevos, tweets borrados, cambios de perfil, nuevos seguidores y follows y unfollows de las cuentas que monitoreas; una REST API gestiona la lista. Mediana de detección de ~200 ms en los planes de pago (datos reales). Desde 49 USD al mes por 50 cuentas, hasta 1000 cuentas, pago en SOL y activación automática.

Precios verificados el 5 de octubre de 2026

Hermano, si haces bots de trading o terminales: bienvenido a Xanguard, tú y tu Agent. Integración, cotización y mapeo de campos, escríbeme directo en Telegram: @notAdegen

t.me/notAdegen Abrir en la app

Desarrollador de Xanguard · los mensajes privados los respondo yo mismo

¿No abre el enlace? Abre Telegram y busca @B2B_Xanguard_bot

~200ms
Mediana de detección
5 tipos
Módulos de eventos en tiempo real
1,000
Máximo de cuentas (más, a convenir)
desde $49
Al mes por 50 cuentas

Cinco tipos de eventos en tiempo real, un solo WebSocket

Lo que necesita un bot de trading o una terminal: tweets, tweets borrados, cambios de perfil, nuevos seguidores y follows y unfollows. JSON listo para usar.

Tweets twitter.post.new

Tweets, respuestas, citas y retweets, con mediana de detección de ~200 ms. Texto completo, enlaces a medios, el tweet original citado o respondido, datos del autor y extracción automática de direcciones de contrato. Todos los planes.

Tweets borrados twitter.tweet.deleted

Se envía cuando una cuenta monitoreada borra un tweet, con el ID y el texto del tweet borrado; si solo se puede confirmar que hubo un borrado pero no cuál, esos dos campos son null. Todos los planes.

Cambios de perfil twitter.profile.update

Cambios de nombre, bio, foto y tweet fijado, con el valor anterior y el nuevo. Cuando un proyecto cambia de narrativa, suele empezar por el perfil. Pro y superiores.

Nuevos seguidores twitter.follower.new

Se envía cuando una cuenta monitoreada gana un seguidor, indicando quién es. Útil para ver quién sigue en silencio a los devs importantes. Pro y superiores.

REST API

Con tu clave dt_ añades y quitas cuentas (POST /v1/dt/targets) y consultas perfiles y cambios anteriores. El OCR para direcciones de contrato dentro de imágenes está en Enterprise.

Conéctate en 5 minutos y empieza a recibir eventos

Sin reuniones y sin esperar a un vendedor. Compras en el bot, recibes tu clave y te conectas.

1

Suscríbete

Abre @B2B_Xanguard_bot en Telegram, elige un plan y paga en SOL.

2

Recibe tu clave

Tras la confirmación on-chain, el plan se activa solo y el bot te envía tu clave de API, que empieza con dt_.

3

Añade cuentas

En el bot, /add con el usuario, o llama a POST /v1/dt/targets.

4

Conecta el WebSocket

Al conectar recibes HELLO; envía LOGIN (op 2 + tu clave) y luego recibes EVENT de forma continua.

Protocolo de opcodes, con ejemplos que corren en Python y Node

URL: wss://api.xanguard.tech/v1/dt/realtime/ws. Flujo de opcodes compatible con TweetCatcher; hasta 5 conexiones simultáneas por clave, y si pasan 90 segundos sin heartbeat se corta la conexión.

opNombreDirecciónDescripción
10HELLOservidor → clienteSe envía al conectar, con heartbeat_interval (milisegundos)
2LOGINcliente → servidorEnvía tu clave de API en 15 segundos: {"op": 2, "d": "dt_..."}
4READYservidor → clienteAutenticación correcta, con los módulos activos y el número de cuentas
0EVENTservidor → clienteEvento en tiempo real; d.event es el tipo de evento
1HEARTBEATcliente → servidorSe envía según heartbeat_interval
11HEARTBEAT_ACKservidor → clienteRespuesta al heartbeat
3DISCONNECTservidor → clienteDesconexión; d.reason indica el motivo (por ejemplo, clave inválida o vencida)
Python (pip install websockets)
import asyncio, json
import websockets

URL = "wss://api.xanguard.tech/v1/dt/realtime/ws"
API_KEY = "dt_tu_clave"

async def main():
    async with websockets.connect(URL) as ws:
        # op 10 HELLO: trae el intervalo de heartbeat (ms)
        hello = json.loads(await ws.recv())
        interval = hello["d"]["heartbeat_interval"] / 1000

        # op 2 LOGIN: envía la clave en menos de 15 s
        await ws.send(json.dumps({"op": 2, "d": API_KEY}))
        ready = json.loads(await ws.recv())
        if ready["op"] != 4:  # si falla, llega op 3 DISCONNECT
            raise SystemExit(ready["d"].get("reason"))
        print("Conectado:", ready["d"]["modules"])

        # heartbeat según el intervalo; sin heartbeat en 90 s se corta
        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:  # solo procesamos 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("Borrado:", d["tweet_id"])
            elif ev == "twitter.profile.update":
                print("Cambio de perfil:", 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: envía LOGIN y empieza el heartbeat
      ws.send(JSON.stringify({ op: 2, d: 'dt_tu_clave' }));
      hb = setInterval(
        () => ws.send(JSON.stringify({ op: 1 })),
        msg.d.heartbeat_interval
      );
      break;
    case 4: // READY: autenticación correcta
      console.log('Conectado', msg.d.modules);
      break;
    case 3: // DISCONNECT: clave inválida o vencida, etc.
      console.error('Desconectado:', msg.d.reason);
      break;
    case 0: { // EVENT: evento en tiempo real
      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('Nuevo follow:', data.handle);
      }
      break;
    }
  }
});

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

Cómo se ve el JSON

Los datos de abajo son ejemplos; los campos válidos son los de la documentación de la API (en inglés). Un tweet puede llegar primero como twitter.post.new y luego completarse con un twitter.post.update con el mismo 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, la nueva versión sale esta noche",
      "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 y superiores)
{
  "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": "texto del tweet borrado"
    }
  }
}

Valores de data.type: post, reply, quote, repost. En los cambios de perfil, field puede ser bio, name, avatar o pinned_tweet.

Niveles por módulos, precio por número de cuentas

Primero eliges el nivel de módulos y luego cuántas cuentas monitorear. Precios mensuales en dólares, pagados en SOL, verificados el 5 de octubre de 2026.

Starter
$49/mes desde
  • Eventos de tweets
  • Eventos de tweets borrados
  • WebSocket + REST
Enterprise
$249/mes desde
  • Todo lo de Pro
  • Eventos de follows y unfollows
  • Direcciones de contrato en imágenes (OCR)
Cuentas monitoreadasStarter
tweets + borrados
Pro
+ cambios de perfil + nuevos seguidores
Enterprise
+ follows y unfollows
Starter por cuenta
50 $49 $99 $249 $0.98
250 $229 $429 $979 $0.92
500 $449 $749 $1649 $0.90
1000 $849 $1349 $2849 $0.85

Más de 1000 cuentas se negocia aparte. Complemento CA Search (busca tweets de las últimas 24 horas por dirección de contrato, nombre de token o palabra clave, hasta 200 por consulta): 1000 consultas al día por $100/mes, 2000 por $180 y 5000 por $250. Tabla completa de precios en inglés: B2B API pricing.

Cuánto cuesta monitorear 200 cuentas en tiempo real al mes

Los precios de terceros salen de sus sitios oficiales, verificados el 20 de septiembre de 2026; el precio de la API oficial de X, el 5 de octubre de 2026 (docs.x.com). Vale siempre el precio más reciente de cada sitio.

Opción200 cuentas al mesNotas
Xanguard B2B Starter 250$229WebSocket + REST, con eventos de tweets borrados, hasta 250 cuentas
TweetStream (plan Pro de 250 cuentas)$499Precio publicado en su sitio
twitterapi.io (plan de 150 cuentas + 50 adicionales)unos $399Cada cuenta adicional cuesta $2
API oficial de X (pago por uso)unos $210Solo lectura de tweets: $0.005 por tweet, con 7 tweets al día por cuenta; follows y cambios de perfil se cobran aparte y hay límites de uso

Migrar desde otros servicios

  • TweetCatcher: el WebSocket usa un flujo de opcodes compatible (HELLO → LOGIN → EVENT + heartbeat). Cambias la URL y la clave, ajustas unos pocos campos distintos y normalmente queda en menos de una hora. Guía de migración (inglés)
  • twitterapi.io: cambia la URL de las peticiones a api.xanguard.tech y conserva tu cabecera X-API-Key y la estructura de datos. Guía de migración (inglés)
  • Otros proveedores: mándame la documentación o un ejemplo de los datos que usas hoy; normalmente en unas horas tengo el mapeo de campos y lo integramos juntos en el mismo chat.

Lo que no ofrecemos por ahora

  • Reenviar, tras una reconexión del WebSocket, los tweets que llegaron mientras estabas desconectado.
  • Un SLA de disponibilidad por escrito.
  • Envío nativo a Discord; el pago es solo en SOL, no se acepta tarjeta.
Para quién es: terminales de trading, bots de trading en Telegram, herramientas de copy trading y señales, dashboards y AI Agents que necesitan datos de Twitter en tiempo real. ¿Solo quieres recibir tweets en tu Telegram? Con @Xanguard_bot te basta, y 1 cuenta es gratis.

Preguntas frecuentes

Sí. Xanguard B2B envía por un solo WebSocket los tweets, tweets borrados, cambios de perfil, nuevos seguidores y follows y unfollows de las cuentas que monitoreas, y además ofrece REST API. El precio depende del número de cuentas y del módulo: en el nivel Starter, 49 USD al mes por 50 cuentas, 229 USD por 250, 449 USD por 500 y 849 USD por 1000. Como referencia, el nivel Pro de la API oficial de X costaba 5000 USD al mes (verificado en septiembre de 2026). Pago en SOL y activación automática.
Según la documentación oficial (docs.x.com, verificada el 5 de octubre de 2026), la API de X ahora es solo de pago por uso y su página de precios ya no muestra los planes mensuales Basic ni Pro: 0.005 USD por cada tweet leído, 0.010 USD por cada usuario leído y un máximo de 3 millones de tweets leídos al mes; si necesitas más, hay que hablar con X sobre Enterprise. Con 7 tweets al día por cuenta, vigilar 50 cuentas cuesta unos 53 USD al mes solo en leer tweets; los follows y los cambios de perfil se cobran aparte y hay límites de uso. Si solo necesitas seguir en tiempo real un grupo de cuentas concretas, un servicio con tarifa mensual por cuentas suele ser más simple.
En los planes de pago la mediana de detección es de ~200 ms, y el p95 y el p99 se actualizan cada hora en xanguard.tech/speed/. Cada evento de tweet incluye la fecha de publicación del propio tweet, created_at (marca de tiempo en milisegundos), para que la compares con tu hora de recepción y compruebes la latencia tú mismo.
La diferencia está en los módulos. Starter: tweets y tweets borrados. Pro: suma cambios de perfil y nuevos seguidores. Enterprise: suma eventos de follow y unfollow. Los tres incluyen WebSocket y REST, y en todos eliges 50, 250, 500 o 1000 cuentas. La extracción de direcciones de contrato viene en todos los niveles; el OCR para las que aparecen en imágenes es solo de Enterprise.
Sí. El WebSocket usa un flujo de opcodes compatible con TweetCatcher (HELLO, LOGIN, READY, EVENT, HEARTBEAT): cambias la URL y la clave, ajustas unos pocos campos y funciona, normalmente en menos de una hora. Si vienes de twitterapi.io, cambia la URL de las peticiones a api.xanguard.tech y conserva tu cabecera X-API-Key y la estructura de datos. Con otros proveedores, mándanos la documentación y normalmente tenemos el mapeo de campos en unas horas.
Abre @B2B_Xanguard_bot en Telegram, elige un plan y paga en SOL. Cuando se confirma la transacción, el plan se activa solo y el bot te envía la clave de API: sin reuniones y sin esperar a un vendedor. No se acepta tarjeta.
Con la API B2B de Xanguard no montas ni mantienes un scraper: te conectas a un WebSocket, eliges las cuentas con la REST API y recibes los eventos en JSON (tweets, tweets borrados, cambios de perfil, nuevos seguidores y follows). Desde 49 USD al mes por 50 cuentas, pago en SOL, con la clave en @B2B_Xanguard_bot.
Sí, en todos los planes: el evento twitter.tweet.deleted llega por el mismo WebSocket con el ID del tweet y, cuando Xanguard lo vio, su texto. Si se confirma un borrado pero no se puede identificar el tweet, el evento llega con tweet_id y text en null. Más en xanguard.tech/es/deleted-tweets/.
Sí, está pensada para terminales, launchpads y bots de trading que necesitan un feed de X en tiempo real: un WebSocket con tweets, tweets borrados, cambios de perfil y follows, con mediana de detección de ~200 ms en los planes de pago (datos públicos en xanguard.tech/speed/). Si solo quieres las alertas en tu Telegram, no necesitas API: basta con @Xanguard_bot.

Un solo WebSocket, JSON listo para usar

Desde 49 USD al mes por 50 cuentas, pago en SOL; tras la confirmación on-chain, la clave se envía automáticamente.

¿No abre el enlace? Abre Telegram y busca @B2B_Xanguard_bot