Guida per sviluppatori

TikTok LIVE API statistiche

Monitora in tempo reale numero di spettatori, entrate dai regali, volume della chat e metriche di engagement di qualsiasi LIVE di TikTok. Crea dashboard, sistemi di avviso e strumenti di analisi.

Quali dati statistici sono disponibili?

TikTok non offre un'API pubblica di statistiche per le LIVE. L'API TikTools colma questa lacuna consegnando ogni evento della diretta in tempo reale via WebSocket. Da questi eventi grezzi puoi calcolare qualsiasi metrica:

  • Numero di spettatori - aggiornamenti in tempo reale del numero di spettatori ogni pochi secondi
  • Entrate dai regali - ogni evento regalo include il valore in diamanti (1 diamante ≈ $0,005)
  • Volume della chat - messaggi al minuto, utenti unici in chat, frequenza delle parole chiave
  • Tasso di engagement - like, condivisioni e follow per periodo di tempo
  • Picco di spettatori - tieni traccia dei massimi raggiunti durante la sessione
  • Classifica dei regali - i migliori sostenitori ordinati per diamanti totali spesi

Avvio rapido: dati in tempo reale per la dashboard

Questo esempio raccoglie tutti i dati statistici in tempo reale. Collegalo a qualsiasi framework frontend o salvalo in un database:

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)

Output previsto

📊 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

Salva in un database

Salva gli eventi in PostgreSQL, MongoDB o qualsiasi database per l'analisi storica:

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 diretto (qualsiasi linguaggio)

Crea statistiche in Python, Go, Rust o qualsiasi linguaggio che supporti 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())

FAQ

TikTok ha un'API ufficiale di statistiche per le LIVE?

No. TikTok offre statistiche in-app tramite il LIVE Center per i creator, ma non esiste un'API pubblica per accedere a questi dati in modo programmatico. L'API TikTools consegna eventi grezzi in tempo reale con cui puoi costruire le tue statistiche.

Posso monitorare più dirette contemporaneamente?

Sì. Crea più client TikTokLive, uno per diretta. Il piano Pro supporta fino a 50 connessioni WebSocket simultanee.

Quanto è preciso il numero di spettatori?

Il numero di spettatori arriva direttamente dai dati interni di TikTok e si aggiorna ogni pochi secondi. Corrisponde al numero mostrato nell'app TikTok.