Tutorial

TikTok LIVE API Guía de Python

Conéctate a cualquier transmisión de TikTok LIVE desde Python con la API WebSocket de TikTools. Recibe mensajes de chat, regalos, espectadores y más en tiempo real: listo para producción y totalmente gestionado.

¿Por qué usar TikTools con Python?

El cliente de Python TikTokLive, con licencia MIT, se conecta directamente al protocolo de transmisión de TikTok y delega las firmas a un backend gestionado (por defecto Euler Stream, que tiene su propio plan gratis y planes de pago). Es un modelo de cliente autoalojado + firmas gestionadas, mantenido por el equipo de Euler Stream.

TikTools es un servicio de API gestionado independiente con su propia infraestructura de firmas. Gestiona los cambios de protocolo del lado del servidor, publica un objetivo de disponibilidad del 99.9% y funciona con cualquier lenguaje mediante WebSocket estándar. No necesitas manejar el protocolo: solo conéctate y recibe eventos. Elige el modelo que mejor le funcione a tu equipo.

Modelo de alojamiento✓ Totalmente gestionado - 99.9% de disponibilidad~ Cliente autoalojado + firmas gestionadas
Configuración✓ pip install websockets~ pip install TikTokLive
Mantenimiento✓ Ninguno - se gestiona en el servidor~ Actualizaciones del cliente + del backend de firmas

Requisitos previos

Opción 1: asyncio + websockets

La forma más sencilla: usa la librería estándar websockets para conectarte a la API WebSocket de TikTools:

pip install websockets
import asyncio
import websockets
import json
import os

API_KEY = os.environ.get("TIKTOOL_API_KEY", "YOUR_API_KEY")
STREAMER = "tv_asahi_news"  # TikTok username (without @)

async def connect():
    uri = f"wss://api.tik.tools?uniqueId={STREAMER}&apiKey={API_KEY}"

    async with websockets.connect(uri) as ws:
        print(f"✅ Connected to @{STREAMER}")

        async for message in ws:
            event = json.loads(message)
            event_type = event.get("event", "")
            data = event.get("data", {})

            if event_type == "chat":
                user = data.get("user", {}).get("uniqueId", "?")
                comment = data.get("comment", "")
                print(f"[CHAT] {user}: {comment}")

            elif event_type == "gift":
                user = data.get("user", {}).get("uniqueId", "?")
                gift = data.get("giftName", "?")
                diamonds = data.get("diamondCount", 0)
                print(f"[GIFT] {user} sent {gift} ({diamonds} 💎)")

            elif event_type == "member":
                user = data.get("user", {}).get("uniqueId", "?")
                print(f"[JOIN] {user} joined")

            elif event_type == "roomUserSeq":
                viewers = data.get("viewerCount", 0)
                print(f"[VIEWERS] {viewers} watching")

asyncio.run(connect())

Opción 2: API REST con requests

Para consultas puntuales (info de la sala, perfiles de usuario), usa la API REST:

pip install requests
import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://api.tik.tools"

# Get room info for a streamer
resp = requests.get(f"{BASE}/webcast/room_info/", params={
    "uniqueId": "tv_asahi_news",
    "apiKey": API_KEY,
})
data = resp.json()
print(f"Title: {data.get('title', 'N/A')}")
print(f"Viewers: {data.get('viewer_count', 0)}")
print(f"Status: {'LIVE' if data.get('alive') else 'OFFLINE'}")

Ejecutar los scripts

# Set your API key as environment variable
export TIKTOOL_API_KEY=your_api_key_here

# Run the WebSocket example
python tiktok_live.py

Resultado esperado

✅ Connected to @tv_asahi_news
[VIEWERS] 1,234 watching
[CHAT] viewer42: Hello everyone!
[GIFT] big_fan sent Rose (1 💎)
[CHAT] news_watcher: Great coverage
[JOIN] new_viewer joined
[VIEWERS] 1,237 watching

Próximos pasos

  • Guarda eventos en una base de datos - envía los eventos a PostgreSQL, MongoDB o SQLite
  • Crea un dashboard - usa Flask o FastAPI para crear un dashboard web en tiempo real
  • Análisis con IA - pasa los mensajes del chat a GPT/Claude para análisis de sentimiento
  • Varias transmisiones - monitorea varias transmisiones a la vez (plan Pro: 50 conexiones)