Guía para desarrolladores

API de analíticas de TikTok LIVE

Mide en tiempo real los espectadores, los ingresos por regalos, el volumen del chat y las métricas de interacción de cualquier transmisión de TikTok LIVE. Crea dashboards, sistemas de alertas y herramientas de analíticas.

¿Qué datos de analíticas hay disponibles?

TikTok no ofrece una API pública de analíticas para transmisiones LIVE. La API de TikTools cubre ese hueco entregando cada evento de la transmisión en tiempo real por WebSocket. Puedes calcular cualquier métrica a partir de estos eventos:

  • Espectadores - el número de espectadores en tiempo real se actualiza cada pocos segundos
  • Ingresos por regalos - cada evento de regalo incluye su valor en diamantes (1 diamante ≈ $0.005)
  • Volumen del chat - mensajes por minuto, personas únicas en el chat, frecuencia de palabras clave
  • Tasa de interacción - likes, compartidos y follows por periodo de tiempo
  • Pico de espectadores - registra los máximos alcanzados durante la sesión
  • Ranking de regalos - los principales seguidores clasificados por diamantes gastados en total

Inicio rápido: datos para un dashboard en tiempo real

Este ejemplo recopila todos los datos de analíticas en tiempo real. Conéctalo a cualquier framework de frontend o guárdalo en una base de datos:

import { TikTokLive } from '@tiktool/live'

const client = new TikTokLive({
  uniqueId: 'target_username',
  apiKey: process.env.TIKTOOL_API_KEY
})

// ── Analytics State ──
const stats = {
  viewerCount: 0,
  peakViewers: 0,
  totalMessages: 0,
  totalGifts: 0,
  totalDiamonds: 0,
  totalLikes: 0,
  totalFollows: 0,
  totalShares: 0,
  uniqueChatters: new Set(),
  giftLeaderboard: new Map(),
  startTime: Date.now()
}

// Viewer count tracking
client.on('viewer_count', (event) => {
  stats.viewerCount = event.viewerCount
  if (event.viewerCount > stats.peakViewers) {
    stats.peakViewers = event.viewerCount
  }
})

// Chat analytics
client.on('chat', (event) => {
  stats.totalMessages++
  stats.uniqueChatters.add(event.userId)
})

// Gift revenue tracking
client.on('gift', (event) => {
  stats.totalGifts++
  stats.totalDiamonds += event.diamondCount

  const current = stats.giftLeaderboard.get(event.nickname) || 0
  stats.giftLeaderboard.set(event.nickname, current + event.diamondCount)
})

// Engagement tracking
client.on('like', (event) => {
  stats.totalLikes = event.totalLikeCount
})

client.on('follow', () => { stats.totalFollows++ })
client.on('share', () => { stats.totalShares++ })

await client.connect()
console.log('📊 Analytics tracking started!')

// Print summary every 60 seconds
setInterval(() => {
  const minutes = (Date.now() - stats.startTime) / 60000
  const revenue = (stats.totalDiamonds * 0.005).toFixed(2)

  console.log('\n── Stream Analytics ──')
  console.log(`Viewers: ${stats.viewerCount} (peak: ${stats.peakViewers})`)
  console.log(`Messages: ${stats.totalMessages} (${(stats.totalMessages / minutes).toFixed(1)}/min)`)
  console.log(`Unique chatters: ${stats.uniqueChatters.size}`)
  console.log(`Gifts: ${stats.totalGifts} (${stats.totalDiamonds} 💎 ≈ $${revenue})`)
  console.log(`Likes: ${stats.totalLikes} | Follows: ${stats.totalFollows} | Shares: ${stats.totalShares}`)
}, 60000)

Resultado esperado

📊 Analytics tracking started!

── Stream Analytics ──
Viewers: 2,347 (peak: 3,891)
Messages: 487 (81.2/min)
Unique chatters: 203
Gifts: 34 (12,450 💎 ≈ $62.25)
Likes: 45,230 | Follows: 89 | Shares: 23

Guardar en una base de datos

Guarda los eventos en PostgreSQL, MongoDB o cualquier base de datos para análisis histórico:

import { TikTokLive } from '@tiktool/live'

// Example: save to PostgreSQL with Prisma
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

const client = new TikTokLive({
  uniqueId: 'target_username',
  apiKey: process.env.TIKTOOL_API_KEY
})

client.on('gift', async (event) => {
  await prisma.giftEvent.create({
    data: {
      streamer: 'target_username',
      senderNickname: event.nickname,
      senderUserId: event.userId,
      giftName: event.giftName,
      diamondCount: event.diamondCount,
      repeatCount: event.repeatCount,
      timestamp: new Date()
    }
  })
})

client.on('viewer_count', async (event) => {
  await prisma.viewerSnapshot.create({
    data: {
      streamer: 'target_username',
      viewerCount: event.viewerCount,
      timestamp: new Date()
    }
  })
})

await client.connect()
console.log('💾 Saving events to database...')

WebSocket directo (cualquier lenguaje)

Crea analíticas en Python, Go, Rust o cualquier lenguaje con soporte de WebSocket:

# Python example using websockets library
import asyncio, json, websockets

async def track_analytics():
    url = "wss://api.tik.tools?uniqueId=target_username&apiKey=YOUR_API_KEY"

    async with websockets.connect(url) as ws:
        total_diamonds = 0
        peak_viewers = 0

        async for raw in ws:
            msg = json.loads(raw)

            if msg["event"] == "viewer_count":
                viewers = msg["data"]["viewerCount"]
                peak_viewers = max(peak_viewers, viewers)
                print(f"Viewers: {viewers} (peak: {peak_viewers})")

            elif msg["event"] == "gift":
                diamonds = msg["data"]["diamondCount"]
                total_diamonds += diamonds
                revenue = total_diamonds * 0.005
                print(f"Gift revenue: {total_diamonds} 💎 (${revenue:.2f})")

asyncio.run(track_analytics())

Preguntas frecuentes

¿TikTok tiene una API oficial de analíticas para transmisiones LIVE?

No. TikTok ofrece analíticas dentro de la app a través del LIVE Center para creadores, pero no hay una API pública para acceder a esos datos de forma programática. La API de TikTools entrega los eventos en tiempo real para que puedas crear tus propias analíticas.

¿Puedo seguir varias transmisiones a la vez?

Sí. Crea varios clientes TikTokLive, uno por transmisión. El plan Pro admite hasta 50 conexiones WebSocket simultáneas.

¿Qué tan preciso es el número de espectadores?

El número de espectadores viene directamente de los datos internos de TikTok y se actualiza cada pocos segundos. Coincide con el que se muestra en la app de TikTok.