Download OpenAPI specification:
A live tracker of VTubers, based on generals from /vt/
Get list of current and recently offline streamers
| last_update | number Timestamp in seconds when the data was exported | ||||||||||||||||||||||||||||||||||||||||
object Data used by our webapp, like the latest timestamp for the news | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
object Lists the last time we crawled/accessed the platforms for data | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| featured | Array of numbers List of streamer IDs that are currently featured | ||||||||||||||||||||||||||||||||||||||||
object (GetListTags) Tags used in the list, the keys here are the name of the group | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
Array of objects (GetListStreamers) List of streamers | |||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||
object (GetListStats) Some statistics | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
{- "last_update": 1737382823,
- "_meta": {
- "latest_news": 1737198652,
- "latest_news_eco": 1737098731,
- "latest_site_updates": 1737303681
}, - "last_crawl": {
- "twitch": 1737382823,
- "youtube": 1737382823,
- "soopkr": 1737382823,
- "chzzk": 1737382823,
- "bilibili": 1737382823,
- "kick": 1737382823,
- "rplay": 1737382823,
- "fansly": 1737382823
}, - "featured": [
- 1063,
- 1234,
- 5678
], - "tags": {
- "country": [
- {
- "id": 1,
- "group": "country",
- "title": "Australia",
- "color": "#AEE2FF"
}, - {
- "id": 19,
- "group": "country",
- "title": "France",
- "color": "#AEE2FF"
}, - {
- "id": 21,
- "group": "country",
- "title": "Russia",
- "color": "#AEE2FF"
}, - {
- "id": 16,
- "group": "country",
- "title": "United Kingdom",
- "color": "#AEE2FF"
}
], - "genre": [
- {
- "id": 71,
- "group": "genre",
- "title": "+18",
- "color": "#E1AFD1"
}, - {
- "id": 56,
- "group": "genre",
- "title": "art",
- "color": "#E1AFD1"
}, - {
- "id": 136,
- "group": "genre",
- "title": "ASMR",
- "color": "#E1AFD1"
}, - {
- "id": 49,
- "group": "genre",
- "title": "horror",
- "color": "#E1AFD1"
}, - {
- "id": 57,
- "group": "genre",
- "title": "music",
- "color": "#E1AFD1"
}
], - "group": [
- {
- "id": 30,
- "group": "group",
- "title": "V-Dere",
- "color": "#D37676"
}, - {
- "id": 44,
- "group": "group",
- "title": "VShojo",
- "color": "#D37676"
}
], - "lang": [
- {
- "id": 50,
- "group": "lang",
- "title": "English",
- "color": "#B9F3FC"
}, - {
- "id": 58,
- "group": "lang",
- "title": "French",
- "color": "#B9F3FC"
}, - {
- "id": 69,
- "group": "lang",
- "title": "German",
- "color": "#B9F3FC"
}, - {
- "id": 60,
- "group": "lang",
- "title": "Japanese",
- "color": "#B9F3FC"
}, - {
- "id": 82,
- "group": "lang",
- "title": "Russian",
- "color": "#B9F3FC"
}
], - "model": [
- {
- "id": 51,
- "group": "model",
- "title": "2D",
- "color": "#7BD3EA"
}, - {
- "id": 52,
- "group": "model",
- "title": "3D",
- "color": "#7BD3EA"
}, - {
- "id": 73,
- "group": "model",
- "title": "IRL",
- "color": "#7BD3EA"
}, - {
- "id": 53,
- "group": "model",
- "title": "PNG",
- "color": "#7BD3EA"
}
], - "other": [
- {
- "id": 77,
- "group": "other",
- "title": "TTS",
- "color": "#F5F5F5"
}, - {
- "id": 27,
- "group": "other",
- "title": "duo",
- "color": "#F5F5F5"
}
], - "thread": [
- {
- "id": 40,
- "group": "thread",
- "title": "/asp/",
- "color": "#B0C5A4"
}, - {
- "id": 1,
- "group": "thread",
- "title": "/euro/",
- "color": "#B0C5A4"
}, - {
- "id": 38,
- "group": "thread",
- "title": "/lig/",
- "color": "#B0C5A4"
}, - {
- "id": 78,
- "group": "thread",
- "title": "/pcg/",
- "color": "#B0C5A4"
}, - {
- "id": 37,
- "group": "thread",
- "title": "/pink/",
- "color": "#B0C5A4"
}, - {
- "id": 47,
- "group": "thread",
- "title": "/vsj+/",
- "color": "#B0C5A4"
}, - {
- "id": 80,
- "group": "thread",
- "title": "/wvt/",
- "color": "#B0C5A4"
}
]
}, - "list": [
- {
- "id": 1063,
- "name": "고세구 (Gosegu)",
- "last_live": 1734601719,
- "is_live": 1,
- "twitch": "gosegugosegu",
- "youtube": "gosegu",
- "soopkr": "gosegu2",
- "chzzk": "1e4bd7bf6e5f0b8e66614b5b9888c51d",
- "bilibili": "1265680561",
- "kick": "kick",
- "rplay": "64b8c128d5e97406de465931",
- "fansly": "fansly",
- "avatar_proxied": "IPbaZgH4J03BHwEoEtVDeLa0Ys8=/64x64",
- "avatar_proxied2x": "qy55ntEtbLADY89UAKNr_FkLaqo=/128x128",
- "tags": [
- {
- "id": 1,
- "group": "country",
- "title": "South Korea",
- "color": "#AEE2FF"
}
], - "live": {
- "platform": "twitch",
- "title": "트위치 바이빵가루",
- "category": "Just Chatting",
- "is_nsfw": 0,
- "is_premium": 0,
- "thumbnail_proxied": "eQIxaX5pA-idWGx_HBdZoGKVWGA=/160x90",
- "thumbnail_proxied2x": "Qu5oDGhXKwUmFYrrAdFFK9jIZgM=/320x180",
- "on_twitch": 1,
- "on_youtube": 1,
- "on_soopkr": 1,
- "on_chzzk": 0,
- "on_bilibili": 0,
- "on_kick": 0,
- "on_rplay": 0,
- "on_fansly": 0,
- "viewers_twitch": 24,
- "viewers_youtube": 178,
- "viewers_soopkr": 5,
- "viewers_chzzk": 0,
- "viewers_bilibili": 0,
- "viewers_kick": 0,
- "viewers_rplay": 0,
- "viewers_fansly": 0,
- "viewers": 207
}, - "last_check": {
- "twitch": 1756298206,
- "youtube": 1756298206,
- "soopkr": 1756298206,
- "chzzk": 1756298206,
- "bilibili": 1756298206,
- "kick": 1756298206,
- "rplay": 1756298206,
- "fansly": 1756298206
}, - "last_seen": {
- "twitch": 1764173504,
- "youtube": 1764173504,
- "soopkr": 1764173504,
- "chzzk": 1764173504,
- "bilibili": 1764173504,
- "kick": 1764173504,
- "rplay": 1764173504,
- "fansly": 1764173504
}
}
], - "stats": {
- "status": {
- "total": 937,
- "live": 85,
- "offline": 764,
- "gonefishing": 40,
- "unknown": 36,
- "disabled": 12
}, - "platforms": {
- "twitch": 64,
- "youtube": 31,
- "soopkr": 0,
- "chzzk": 0,
- "bilibili": 0,
- "kick": 0,
- "rplay": 0,
- "fansly": 0
}, - "viewers": {
- "total": 69578,
- "twitch": 36505,
- "youtube": 33073,
- "soopkr": 0,
- "chzzk": 0,
- "bilibili": 0,
- "kick": 0,
- "rplay": 0,
- "fansly": 0
}
}
}All streamers, but no details about live streams
| id | number Unique ID for this streamer |
| name | string Given name, might include alternative names or romanized names |
| last_live | number Timestamp in seconds when the last stream started (or was found live) |
| is_live | number Boolean |
| twitch | null or string Can be |
| youtube | null or string Can be |
| soopkr | null or string Can be |
| chzzk | null or string Can be |
| bilibili | null or string Can be |
| kick | null or string Can be |
| rplay | null or string Can be |
| fansly | null or string Can be |
| avatar | null or string Can be |
| avatar_proxied | null or string Can be |
| avatar_proxied2x | null or string Can be |
Array of objects (TagObject) The list of tags given to this streamer | |
Array of objects (LinkObject) List of links to their website or social media | |
| twitch_id | null or string The streamer's Twitch ID, can be |
| youtube_id | null or string The streamer's YouTube ID, can be |
| kick_id | null or string The streamer's Kick ID, can be |
| last_refresh | number Timestamp in seconds when the streamer data was last refreshed |
| disabled | number Boolean |
object An object that lists the last time we checked a platform for this streamer. All unix timestamps are in seconds. | |
object An object that lists the last timestamp in seconds when we saw a streamer live on a platform. |
[- {
- "id": 1063,
- "name": "고세구 (Gosegu)",
- "last_live": 1734601719,
- "is_live": 1,
- "twitch": "gosegugosegu",
- "youtube": "gosegu",
- "soopkr": "gosegu2",
- "chzzk": "1e4bd7bf6e5f0b8e66614b5b9888c51d",
- "bilibili": "1265680561",
- "kick": "kick",
- "rplay": "64b8c128d5e97406de465931",
- "fansly": "fansly",
- "avatar_proxied": "IPbaZgH4J03BHwEoEtVDeLa0Ys8=/64x64",
- "avatar_proxied2x": "qy55ntEtbLADY89UAKNr_FkLaqo=/128x128",
- "tags": [
- {
- "id": 1,
- "group": "country",
- "title": "South Korea",
- "color": "#AEE2FF"
}
], - "twitch_id": "707328484",
- "youtube_id": "UCV9WL7sW6_KjanYkUUaIDfQ",
- "kick_id": "32989457",
- "last_refresh": 1725734707,
- "disabled": 0,
- "last_check": {
- "twitch": 1756298206,
- "youtube": 1756298206,
- "soopkr": 1756298206,
- "chzzk": 1756298206,
- "bilibili": 1756298206,
- "kick": 1756298206,
- "rplay": 1756298206,
- "fansly": 1756298206
}, - "last_seen": {
- "twitch": 1764173504,
- "youtube": 1764173504,
- "soopkr": 1764173504,
- "chzzk": 1764173504,
- "bilibili": 1764173504,
- "kick": 1764173504,
- "rplay": 1764173504,
- "fansly": 1764173504
}
}
]This is a filtred version of /api/streamers
with only the hidden streamers who don't appear in
/api/list.
A streamer is hidden when it hasn't been live for more than 15 days, has not been seen live yet, or has been disabled.
| id | number Unique ID for this streamer |
| name | string Given name, might include alternative names or romanized names |
| last_live | number Timestamp in seconds when the last stream started (or was found live) |
| is_live | number Boolean |
| twitch | null or string Can be |
| youtube | null or string Can be |
| soopkr | null or string Can be |
| chzzk | null or string Can be |
| bilibili | null or string Can be |
| kick | null or string Can be |
| rplay | null or string Can be |
| fansly | null or string Can be |
| avatar | null or string Can be |
| avatar_proxied | null or string Can be |
| avatar_proxied2x | null or string Can be |
Array of objects (TagObject) The list of tags given to this streamer | |
Array of objects (LinkObject) List of links to their website or social media | |
| twitch_id | null or string The streamer's Twitch ID, can be |
| youtube_id | null or string The streamer's YouTube ID, can be |
| kick_id | null or string The streamer's Kick ID, can be |
| last_refresh | number Timestamp in seconds when the streamer data was last refreshed |
| disabled | number Boolean |
object An object that lists the last time we checked a platform for this streamer. All unix timestamps are in seconds. | |
object An object that lists the last timestamp in seconds when we saw a streamer live on a platform. |
[- {
- "id": 1063,
- "name": "고세구 (Gosegu)",
- "last_live": 1734601719,
- "is_live": 1,
- "twitch": "gosegugosegu",
- "youtube": "gosegu",
- "soopkr": "gosegu2",
- "chzzk": "1e4bd7bf6e5f0b8e66614b5b9888c51d",
- "bilibili": "1265680561",
- "kick": "kick",
- "rplay": "64b8c128d5e97406de465931",
- "fansly": "fansly",
- "avatar_proxied": "IPbaZgH4J03BHwEoEtVDeLa0Ys8=/64x64",
- "avatar_proxied2x": "qy55ntEtbLADY89UAKNr_FkLaqo=/128x128",
- "tags": [
- {
- "id": 1,
- "group": "country",
- "title": "South Korea",
- "color": "#AEE2FF"
}
], - "twitch_id": "707328484",
- "youtube_id": "UCV9WL7sW6_KjanYkUUaIDfQ",
- "kick_id": "32989457",
- "last_refresh": 1725734707,
- "disabled": 0,
- "last_check": {
- "twitch": 1756298206,
- "youtube": 1756298206,
- "soopkr": 1756298206,
- "chzzk": 1756298206,
- "bilibili": 1756298206,
- "kick": 1756298206,
- "rplay": 1756298206,
- "fansly": 1756298206
}, - "last_seen": {
- "twitch": 1764173504,
- "youtube": 1764173504,
- "soopkr": 1764173504,
- "chzzk": 1764173504,
- "bilibili": 1764173504,
- "kick": 1764173504,
- "rplay": 1764173504,
- "fansly": 1764173504
}
}
]All tags available, even those not used by any streamer
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
object (TagGroupObject) | |||||||
| |||||||
{- "country": {
- "title": "country",
- "color": "#AEE2FF",
- "tags": [
- {
- "id": 1,
- "title": "Australia"
}, - {
- "id": 19,
- "title": "France"
}, - {
- "id": 21,
- "title": "Russia"
}, - {
- "id": 16,
- "title": "United Kingdom"
}
]
}
}Upcoming YouTube live streams scheduled for the next 48 hours
| last_update | number Timestamp in seconds when the data was exported | ||||||||||||||||||||||||||||||||||||||||
Array of objects List of upcoming streams | |||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||
{- "last_update": 1718118747,
- "list": [
- {
- "stream_id": 558238,
- "upcoming_time": 1718119800,
- "id": 1063,
- "name": "고세구 (Gosegu)",
- "last_live": 1734601719,
- "is_live": 1,
- "twitch": "gosegugosegu",
- "youtube": "gosegu",
- "soopkr": "gosegu2",
- "chzzk": "1e4bd7bf6e5f0b8e66614b5b9888c51d",
- "bilibili": "1265680561",
- "kick": "kick",
- "rplay": "64b8c128d5e97406de465931",
- "fansly": "fansly",
- "avatar_proxied": "IPbaZgH4J03BHwEoEtVDeLa0Ys8=/64x64",
- "avatar_proxied2x": "qy55ntEtbLADY89UAKNr_FkLaqo=/128x128",
- "tags": [
- {
- "id": 1,
- "group": "country",
- "title": "South Korea",
- "color": "#AEE2FF"
}
], - "live": {
- "platform": "twitch",
- "title": "트위치 바이빵가루",
- "category": "Just Chatting",
- "is_nsfw": 0,
- "is_premium": 0,
- "thumbnail_proxied": "eQIxaX5pA-idWGx_HBdZoGKVWGA=/160x90",
- "thumbnail_proxied2x": "Qu5oDGhXKwUmFYrrAdFFK9jIZgM=/320x180",
}
}
]
}We're manually archiving the news from /news/, with sources if possible
| page | integer Page number |
object Pagination information | |||||||
| |||||||
Array of objects List of news | |||||||
Array
| |||||||
{- "pagination": {
- "current": 1,
- "total": 3,
- "has_next": true
}, - "list": [
- {
- "timestamp": 1718001875,
- "categories": {
- "Hololive": [
- {
- "id": 1,
- "title": "Shiori Novella shows off her silver play button.",
}, - {
- "id": 2,
- "title": "Takanashi Kiara unveils a new outfit, themed after 80s jazzercise videos.",
}
], - "Other Corpos": [
- {
- "id": 3,
- "title": "Miria Rubellite of CosmonoahV, a JP agency, graduates on 6/9.",
- "links": [ ]
}, - {
- "id": 4,
- "title": "Varium announces 3 new talents.",
}
]
}
}
]
}Manual archive of Stock Watch anon's posts
| page | integer Page number |
object Pagination information | |||||||||
| |||||||||
Array of objects List of news | |||||||||
Array
| |||||||||
{- "pagination": {
- "current": 1,
- "total": 2,
- "has_next": true
}, - "list": [
- {
- "timestamp": 1726044004,
- "content": "Stock Watch anon here. [...]",
}
]
}Manual archive of Acapella Media's magazine
| last_update | number Timestamp in seconds when the data was exported | ||||||||||||||||
Array of objects List of issues | |||||||||||||||||
Array
| |||||||||||||||||
{- "last_update": 1751497579,
- "list": [
- {
- "number": 1,
- "issue": "August 2023",
- "title": "The magazine for your oshi",
- "post_date": 1692725334,
- "thumbnail": "https://vt-files.rita.moe/acapella/thumbnail/01 - Issue one - The magazine for your oshi.jpg",
- "pdf": "https://vt-files.rita.moe/acapella/pdf/01 - Issue one - The magazine for your oshi.pdf",
- "zip": "https://vt-files.rita.moe/acapella/zip/01 - Issue one - The magazine for your oshi.zip",
- "dump": "https://vt-files.rita.moe/acapella/dump/01 - Issue one - The magazine for your oshi.pdf"
}
]
}Changelog and notices about the site
| last_update | number Timestamp in seconds when the data was exported | ||||||||
Array of objects List of updates | |||||||||
Array
| |||||||||
{- "last_update": 1736329921,
- "list": [
- {
- "id": 1,
- "timestamp": 1736328235,
- "content": "This is a test!<br/>\nBeeh",
- "level": "default"
}
]
}