Check if YouTube channels are currently live streaming
Base URL: https://check.widecast.live
GET /resolve/:handle
Resolve a YouTube handle (e.g., @StarWars), URL, or channel ID to a channel ID.
Responses are cached for 30 days.
JavaScript
const response = await fetch('https://check.widecast.live/resolve/@StarWars');
const data = await response.json();
console.log(data.channelId);
Python
import requests
response = requests.get('https://check.widecast.live/resolve/@StarWars')
data = response.json()
print(data['channelId'])
cURL
curl "https://check.widecast.live/resolve/@StarWars"
{
"channelId": "UCZYTClx2T1of7BRZ86-4fow"
}
GET /:channelId
Check if a YouTube channel is currently live streaming. Returns basic information about the live stream. Responses are cached for 90 seconds.
JavaScript
const channelId = 'UCZYTClx2T1of7BRZ86-4fow';
const response = await fetch(`${'https://check.widecast.live'}/${channelId}`);
const data = await response.json();
if (data.live) {
console.log('Channel is live!', data.title);
console.log('Watch at:', data.url);
} else {
console.log('Channel is not live');
}
Python
import requests
channel_id = 'UCZYTClx2T1of7BRZ86-4fow'
response = requests.get(f'https://check.widecast.live/{channel_id}')
data = response.json()
if data['live']:
print('Channel is live!', data['title'])
print('Watch at:', data['url'])
else:
print('Channel is not live')
cURL
curl "https://check.widecast.live/UCZYTClx2T1of7BRZ86-4fow"
When Live (200 OK)
{
"live": true,
"videoId": "dQw4w9WgXcQ",
"title": "Example Live Stream",
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"publishedAt": "2024-01-01T12:00:00Z"
}
When Not Live (404 Not Found)
{
"live": false,
"videoId": null,
"title": null,
"thumbnail": null,
"url": null,
"publishedAt": null
}
GET /:channelId/extended
Get extended live stream details including viewer count, start time, chat ID, and multiple thumbnail sizes. Responses are cached for 90 seconds.
JavaScript
const channelId = 'UCZYTClx2T1of7BRZ86-4fow';
const response = await fetch(`${'https://check.widecast.live'}/${channelId}/extended`);
const data = await response.json();
if (data.live) {
console.log('Title:', data.title);
console.log('Viewers:', data.concurrentViewers);
console.log('Started:', data.actualStartTime);
}
Python
import requests
channel_id = 'UCZYTClx2T1of7BRZ86-4fow'
response = requests.get(f'https://check.widecast.live/{channel_id}/extended')
data = response.json()
if data['live']:
print('Title:', data['title'])
print('Viewers:', data['concurrentViewers'])
print('Started:', data['actualStartTime'])
cURL
curl "https://check.widecast.live/UCZYTClx2T1of7BRZ86-4fow/extended"
When Live (200 OK)
{
"live": true,
"videoId": "dQw4w9WgXcQ",
"title": "Example Live Stream",
"description": "Stream description...",
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"thumbnails": {
"default": "https://i.ytimg.com/vi/dQw4w9WgXcQ/default.jpg",
"medium": "https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg",
"high": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"standard": "https://i.ytimg.com/vi/dQw4w9WgXcQ/sddefault.jpg",
"maxres": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
},
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"publishedAt": "2024-01-01T12:00:00Z",
"channelId": "UCZYTClx2T1of7BRZ86-4fow",
"channelTitle": "Example Channel",
"liveBroadcastContent": "live",
"actualStartTime": "2024-01-01T12:00:00Z",
"scheduledStartTime": null,
"actualEndTime": null,
"concurrentViewers": 12345,
"activeLiveChatId": "Cg0KC..."
}
When Not Live (404 Not Found)
{
"live": false,
"videoId": null,
"title": null,
"description": null,
"thumbnail": null,
"thumbnails": null,
"url": null,
"publishedAt": null,
"channelId": "UCZYTClx2T1of7BRZ86-4fow",
"channelTitle": null,
"liveBroadcastContent": null,
"actualStartTime": null,
"scheduledStartTime": null,
"actualEndTime": null,
"concurrentViewers": null,
"activeLiveChatId": null
}