πŸŽ₯ VTuber Schedule API

Real-time VTuber livestream schedules & channel metadata

Official API for VTuber schedule and channel data

Subscribe on RapidAPI β†’ ⭐ View on GitHub

πŸ“Š API Performance

<0.4s
Average Response Time
99.9%
Uptime Target
200+
Organizations Supported
Real-time
Data Freshness

✨ Key Features

πŸ”΄

Live Streams

Get currently-live VTuber streams across all major organizations in real-time

πŸ“…

Upcoming Schedule

View upcoming streams for the next 48 hours with accurate scheduling data

🏒

Multi-Organization

Supports Hololive, Nijisanji, VSpo, Phase Connect, and 200+ more

🌍

Timezone Conversion

Convert stream times to any IANA timezone (Asia/Kolkata, America/New_York, etc.)

πŸ“Ί

Channel Metadata

Access subscriber counts, channel names, organizations, and more

⚑

Smart Caching

Optimized caching for lightning-fast responses and stable performance

πŸš€ Quick Start

1. Subscribe on RapidAPI

Get your API key by subscribing at RapidAPI Marketplace

2. Make Your First Request

Test the API with a simple cURL request:

curl --request GET \
  --url 'https://vtuber-schedule.p.rapidapi.com/v1/live?limit=10' \
  --header 'X-RapidAPI-Host: vtuber-schedule.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_API_KEY_HERE'

3. Integrate into Your App

Use in any language that supports HTTP requests (Python, JavaScript, PHP, etc.).

πŸ“‘ API Endpoints

GET /v1/live POPULAR

Returns VTuber streams that are currently live.

Query Parameters

Parameter Type Required Description Example
org string No Filter by organization Hololive, Nijisanji, VSpo
lang string No Filter by language (ISO 639-1) en, ja, id, ko, zh
min_viewers integer No Minimum concurrent viewers 1000, 5000, 10000
tz string No IANA timezone for start_local field Asia/Kolkata, America/New_York
limit integer No Max results (1–50, default: 25) 10, 25, 50
offset integer No Pagination offset (default: 0) 0, 25, 50

Response Example

{
  "status": "ok",
  "updated_at": "2026-03-07T05:00:00.000Z",
  "count": 2,
  "streams": [
    {
      "id": "6OPvhDmBPzs",
      "title": "hololive SUPER EXPO 2026 EXPO STAGE",
      "status": "live",
      "platform": "youtube",
      "url": "https://youtube.com/watch?v=6OPvhDmBPzs",
      "thumbnail": "https://i.ytimg.com/vi/6OPvhDmBPzs/maxresdefault.jpg",
      "start_scheduled": "2026-03-07T03:00:00.000Z",
      "start_actual": "2026-03-07T03:02:15.000Z",
      "live_viewers": 15234,
      "topic": "celebration",
      "channel": {
        "id": "UCJFZiqLMntJufDCHc6bQixg",
        "name": "hololive ホロラむブ - VTuber Group",
        "english_name": "hololive",
        "org": "Hololive",
        "lang": "ja",
        "photo": "https://yt3.ggpht.com/..."
      }
    }
  ]
}
GET /v1/upcoming

Returns VTuber streams scheduled for the next 48 hours.

Parameters: Same as /v1/live endpoint.

Response: Same structure as /v1/live but with "status": "upcoming".

GET /v1/channels

Returns VTuber channel metadata and statistics.

Query Parameters

Parameter Type Description Example
org string Filter by organization Hololive, Nijisanji
lang string Filter by language en, ja, id
limit integer Max results (1–50) 10, 25
offset integer Pagination offset 0, 25

Response Example

{
  "status": "ok",
  "count": 3,
  "channels": [
    {
      "id": "UC5CwaMl1eIgY8h02uZw7u8A",
      "name": "Suisei Channel",
      "english_name": "Hoshimachi Suisei",
      "org": "Hololive",
      "lang": "ja",
      "photo": "https://yt3.ggpht.com/...",
      "platform": "youtube",
      "subscriber_count": 2830000,
      "video_count": 1075,
      "description": null
    }
  ]
}

πŸ’‘ Common Use Cases

Discord Bot – Stream Notifications

import requests
import discord

# Get live Hololive EN streams
response = requests.get(
    'https://vtuber-schedule.p.rapidapi.com/v1/live',
    params={'org': 'Hololive', 'lang': 'en'},
    headers={
        'X-RapidAPI-Key': 'YOUR_KEY',
        'X-RapidAPI-Host': 'vtuber-schedule.p.rapidapi.com'
    }
)

data = response.json()
for stream in data['streams']:
    await channel.send(
        f"πŸ”΄ **{stream['title']}**\n"
        f"πŸ‘€ {stream['channel']['name']}\n"
        f"πŸ‘οΈ {stream['live_viewers']:,} viewers\n"
        f"πŸ”— {stream['url']}"
    )

Website Widget – Schedule Display

// Fetch upcoming streams in user's timezone
fetch('https://vtuber-schedule.p.rapidapi.com/v1/upcoming?tz=America/New_York&limit=10', {
  headers: {
    'X-RapidAPI-Key': 'YOUR_KEY',
    'X-RapidAPI-Host': 'vtuber-schedule.p.rapidapi.com'
  }
})
.then(res => res.json())
.then(data => {
  data.streams.forEach(stream => {
    document.getElementById('schedule').innerHTML += `
      <div class="stream-card">
        <img src="${stream.thumbnail}" alt="${stream.title}">
        <h3>${stream.title}</h3>
        <p>${stream.channel.name}</p>
        <time>${stream.start_local}</time>
      </div>
    `;
  });
});

Mobile App – Popular Streams

// Swift example – Get high-viewer streams
let url = URL(string: "https://vtuber-schedule.p.rapidapi.com/v1/live?min_viewers=5000&limit=20")!
var request = URLRequest(url: url)
request.addValue("YOUR_KEY", forHTTPHeaderField: "X-RapidAPI-Key")
request.addValue("vtuber-schedule.p.rapidapi.com", forHTTPHeaderField: "X-RapidAPI-Host")

URLSession.shared.dataTask(with: request) { data, response, error in
    if let data = data {
        let streams = try? JSONDecoder().decode(APIResponse.self, from: data)
        // Display popular streams in app
    }
}.resume()

⚑ Performance & Caching

Caching Strategy

Endpoint Cache Duration Reason
/v1/live 60 seconds Real-time updates for live viewer counts
/v1/upcoming 5 minutes Schedules rarely change within minutes
/v1/channels 1 hour Metadata and subscriber counts update slowly

Rate Limits

Note: Rate limits are determined by your RapidAPI subscription plan. Check your plan details on RapidAPI for specific limits.

Response Times

🚨 Error Handling

HTTP Status Codes

Code Meaning Solution
200 Success Request processed successfully
400 Bad Request Check parameter values (e.g., limit > 50, invalid timezone)
403 Forbidden Invalid API key or unauthorized access
429 Too Many Requests Rate limit exceeded – wait before retrying
502 Bad Gateway Upstream data source unavailable – retry after 30 s

Error Response Format

{
  "error": "Unknown timezone: InvalidZone",
  "status_code": 400
}

🎯 Best Practices

Optimize API Usage

Timezone Handling

Tip: Always pass the tz parameter with user's timezone for better UX. Common values:
  • America/New_York (US East)
  • America/Los_Angeles (US West)
  • Europe/London (UK)
  • Asia/Tokyo (Japan)
  • Asia/Kolkata (India)

Data Freshness

For critical applications requiring real-time data:

🏒 Supported Organizations

The API supports 200+ VTuber organizations. Most popular:

🌸 Hololive

Cover Corporation's flagship agency with JP, EN, and ID branches.

🎭 Nijisanji

ANYCOLOR's multi-branch agency with global presence.

⚑ VSpo

Gaming-focused VTuber agency under Brave Group.

πŸŒ™ Phase Connect

English-speaking indie VTuber agency.

πŸŽͺ VOMS Project

Independent VTuber group (Pikamee, Tomoshika, Monoe).

⭐ Independents

Solo VTubers not affiliated with agencies.

Don’t see an organization? New organizations are added to the VTuber Schedule API catalog on an ongoing basis.

❓ Frequently Asked Questions

How often is data updated?

Live stream data is updated every 60 seconds, and upcoming schedules refresh every 5 minutes, balancing freshness with performance.

Can I access the API without RapidAPI?

Currently, access is provided through RapidAPI for authentication, usage tracking, and billing.

Do you support archived/past streams?

Right now, the API focuses on live and upcoming streams only. Past stream data may be added in future versions.

Can I filter by specific VTubers?

Not directly. Use /v1/channels to get channel IDs, then filter results client-side.

Is there a free tier?

RapidAPI offers free tier plans with limited requests. Check the pricing page for current plans.

πŸ› οΈ Support & Contact

Need Help?

Service Status

Check API health:

curl https://vtuber-schedule.p.rapidapi.com/ping \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: vtuber-schedule.p.rapidapi.com"

Expected response: {"status": "ok"}