Real-time VTuber livestream schedules & channel metadata
Official API for VTuber schedule and channel data
Get currently-live VTuber streams across all major organizations in real-time
View upcoming streams for the next 48 hours with accurate scheduling data
Supports Hololive, Nijisanji, VSpo, Phase Connect, and 200+ more
Convert stream times to any IANA timezone (Asia/Kolkata, America/New_York, etc.)
Access subscriber counts, channel names, organizations, and more
Optimized caching for lightning-fast responses and stable performance
Get your API key by subscribing at RapidAPI Marketplace
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'
Use in any language that supports HTTP requests (Python, JavaScript, PHP, etc.).
Returns VTuber streams that are currently live.
| 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 |
{
"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/..."
}
}
]
}
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".
Returns VTuber channel metadata and statistics.
| 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 |
{
"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
}
]
}
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']}"
)
// 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>
`;
});
});
// 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()
| 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 |
| 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": "Unknown timezone: InvalidZone",
"status_code": 400
}
tz parameter with user's timezone for better UX. Common values:
For critical applications requiring real-time data:
/v1/live every 60β120 seconds for viewer count updates./v1/upcoming every 5β10 minutes for schedule changes./v1/channels daily for metadata updates.The API supports 200+ VTuber organizations. Most popular:
Cover Corporation's flagship agency with JP, EN, and ID branches.
ANYCOLOR's multi-branch agency with global presence.
Gaming-focused VTuber agency under Brave Group.
English-speaking indie VTuber agency.
Independent VTuber group (Pikamee, Tomoshika, Monoe).
Solo VTubers not affiliated with agencies.
Live stream data is updated every 60 seconds, and upcoming schedules refresh every 5 minutes, balancing freshness with performance.
Currently, access is provided through RapidAPI for authentication, usage tracking, and billing.
Right now, the API focuses on live and upcoming streams only. Past stream data may be added in future versions.
Not directly. Use /v1/channels to get channel IDs, then filter results client-side.
RapidAPI offers free tier plans with limited requests. Check the pricing page for current plans.
GET /ping.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"}