Guide développeur

TikTok LIVE API d'analytics

Suis en temps réel le nombre de spectateurs, les revenus des cadeaux, le volume du chat et les indicateurs d'engagement de n'importe quel stream TikTok LIVE. Crée des tableaux de bord, des systèmes d'alerte et des outils d'analytics.

Quelles données d'analytics sont disponibles ?

TikTok ne fournit pas d'API d'analytics publique pour les LIVE. L'API TikTools comble ce manque en livrant chaque événement du stream en temps réel via WebSocket. Tu peux calculer n'importe quel indicateur à partir de ces événements bruts :

  • Nb de spectateurs - mise à jour du nombre de spectateurs en temps réel toutes les quelques secondes
  • Revenus des cadeaux - chaque événement de cadeau inclut sa valeur en diamants (1 diamant ≈ 0,005 $)
  • Volume du chat - messages par minute, participants uniques, fréquence des mots-clés
  • Taux d'engagement - likes, partages, follows par période
  • Pic d'audience - suis les records sur toute la session
  • Classement des cadeaux - meilleurs soutiens classés par total de diamants dépensés

Démarrage rapide : données de tableau de bord en temps réel

Cet exemple collecte toutes les données d'analytics en temps réel. Branche-le sur n'importe quel framework frontend ou enregistre-les dans une base de données :

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)

Sortie attendue

📊 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

Enregistrer en base de données

Stocke les événements dans PostgreSQL, MongoDB ou n'importe quelle base de données pour une analyse historique :

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 brut (tous les langages)

Crée tes analytics en Python, Go, Rust ou tout langage qui gère le 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 a-t-il une API d'analytics officielle pour les LIVE ?

Non. TikTok fournit des analytics dans l'app via le LIVE Center pour les créateurs, mais il n'existe pas d'API publique pour accéder à ces données par programmation. L'API TikTools livre des événements bruts en temps réel que tu peux utiliser pour créer tes propres analytics.

Puis-je suivre plusieurs streams en même temps ?

Oui. Crée plusieurs clients TikTokLive - un par stream. L'offre Pro permet jusqu'à 50 connexions WebSocket simultanées.

Le nombre de spectateurs est-il précis ?

Le nombre de spectateurs vient directement des données internes de TikTok et se met à jour toutes les quelques secondes. Il correspond au chiffre affiché dans l'app TikTok.