Skip to main content
The Streamer Alerts Bot supports 5 major streaming platforms using public endpoints and HTML parsing - no API credentials needed.

Platform Overview

Kick

Fast-growing streaming platform with full live status support

Twitch

Leading game streaming platform via GraphQL API

YouTube

Live streams from YouTube channels

Rumble

Alternative platform with HTML scraping support

TikTok

Live streams from TikTok creators

Platform Details

🟢 Kick

Color: #53FC18 (Green) | Emoji: 🟢URL Format: https://kick.com/{username}

How It Works

Kick uses the official public API endpoint:
const apiUrl = `https://kick.com/api/v2/channels/${username}`;

Features Supported

  • Live status detection via livestream.is_live
  • Stream title from session_title
  • Current viewer count
  • Stream start time
  • Stream language and mature content flags
  • Stream tags array
  • Username and profile picture
  • Follower count
  • Verified badge status
  • User bio (cleaned of HTML)
  • Category/game information
  • Category banner images

Implementation Details

// From kick.ts:79-159
export async function checkKickLive(username: string): Promise<LiveStatus> {
  const url = `https://kick.com/${username}`;
  const apiUrl = `https://kick.com/api/v2/channels/${username}`;

  const response = await fetch(apiUrl, {
    headers: {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
      Accept: "application/json",
    },
  });

  const data = await response.json();

  if (data.livestream?.is_live) {
    return {
      isLive: true,
      platform: "kick",
      username: data.user?.username,
      title: data.livestream.session_title,
      viewers: data.livestream.viewer_count,
      followers: data.followers_count,
      // ... more fields
    };
  }
}
Note: Kick stream thumbnails from stream.kick.com are private/blocked. The bot uses category banners instead for visual elements.

Platform Configuration

All platform configurations are centralized in constants.ts:6-40:
export const PLATFORMS: Record<
  Platform,
  { name: string; color: number; emoji: string; urlTemplate: string }
> = {
  kick: {
    name: "Kick",
    color: 0x53fc18, // Green
    emoji: "🟢",
    urlTemplate: "https://kick.com/{username}",
  },
  twitch: {
    name: "Twitch",
    color: 0x9146ff, // Purple
    emoji: "🟣",
    urlTemplate: "https://twitch.tv/{username}",
  },
  youtube: {
    name: "YouTube",
    color: 0xff0000, // Red
    emoji: "🔴",
    urlTemplate: "https://youtube.com/@{username}",
  },
  rumble: {
    name: "Rumble",
    color: 0x85c742, // Green
    emoji: "🟢",
    urlTemplate: "https://rumble.com/c/{username}",
  },
  tiktok: {
    name: "TikTok",
    color: 0x010101, // Black
    emoji: "⚫",
    urlTemplate: "https://tiktok.com/@{username}/live",
  },
};

No API Keys Required

Zero Configuration - All platforms work out of the box without API credentials. The bot uses:
  • Public APIs (Kick, Twitch GraphQL)
  • HTML parsing (YouTube, Rumble, TikTok)
  • Standard HTTP requests with User-Agent headers
Disclaimer: These APIs are not owned or maintained by this project. Use at your own risk. Availability and functionality may change without notice.

Error Handling

Each platform checker includes robust error handling:
try {
  const response = await fetch(url);
  if (!response.ok) {
    if (response.status === 404) {
      return baseResult; // User not found
    }
    throw new Error(`HTTP ${response.status}`);
  }
  // ... process data
} catch (error) {
  logger.error(`Error checking ${platform} live status for ${username}:`, error);
  return { ...baseResult, error: String(error) };
}

Return Type

All platform checkers return a LiveStatus object with the following structure:
isLive
boolean
required
Whether the streamer is currently live
platform
string
required
Platform identifier: "kick" | "twitch" | "youtube" | "rumble" | "tiktok"
username
string
required
The streamer’s username
url
string
required
Channel or stream URL
title
string
Stream title (only when live)
viewers
number
Current viewer count
followers
number
Follower/subscriber count
thumbnail
string
Stream preview image URL
profileImage
string
User avatar URL
verified
boolean
Verification/partner badge status
category
string
Game/category name
tags
string[]
Stream tags array

Build docs developers (and LLMs) love