YouTube Channel lives API
List a YouTube channel's live and past-live streams by handle or channel ID with cursor pagination (title, views, length, publish time).
$1.20/1k req, pay per request, no subscription.
{"id": "kQ7mZ2vT8pL","url": "https://www.youtube.com/watch?v=kQ7mZ2vT8pL","title": "RANKED GRIND to Diamond - road to top 500 !builds !coach","views": 3140,"lengthText": "3:12:08","publishedTime": "Streamed 4 hours ago","image": "https://i.ytimg.com/vi/kQ7mZ2vT8pL/hqdefault.jpg"}
Pricing and providers
YouTube Channel lives API pricing: one API, 2 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
Try it
Get YouTube channel lives in one request
This sample shows 11 of 12 fields. See every field
{
"found": true,
"data": {
"nextCursor": "Eg0SC1BpeGVsZm9yZ2UxQoABAQ",
"lives": [
{
"id": "kQ7mZ2vT8pL",
"url": "https://www.youtube.com/watch?v=kQ7mZ2vT8pL",
"title": "RANKED GRIND to Diamond - road to top 500 !builds !coach",
"views": 3140,
"lengthText": "3:12:08",
"publishedTime": "Streamed 4 hours ago",
"image": "https://i.ytimg.com/vi/kQ7mZ2vT8pL/hqdefault.jpg"
},
{
"id": "nR4wY9uX2sK",
"url": "https://www.youtube.com/watch?v=nR4wY9uX2sK",
"title": "Sunday chill stream - new patch reactions and viewer games",
"views": 8720,
"lengthText": "2:45:51",
"publishedTime": "Streamed 3 days ago",
"image": "https://i.ytimg.com/vi/nR4wY9uX2sK/hqdefault.jpg"
},
{
"id": "vB1cD6eF3gH",
"url": "https://www.youtube.com/watch?v=vB1cD6eF3gH",
"title": "Charity marathon for local food bank - 12 hour stream",
"views": 15600,
"lengthText": "12:03:44",
"publishedTime": "Streamed 2 weeks ago",
"image": "https://i.ytimg.com/vi/vB1cD6eF3gH/hqdefault.jpg"
}
]
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-31 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- channelIdstring
YouTube channel ID.
- cursorstring
Continuation token from a previous response for pagination.
- handlestring
@pixelforgegg
YouTube channel handle.
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `lengthText`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a live stream that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.
Response
JSON, one example value per field.
Populated whenever the provider has data for the entity.
- idstring
kQ7mZ2vT8pL
Populated whenever the provider has data for the entity.
- imagestring
https://i.ytimg.com/vi/kQ7mZ2vT8pL/hqdefault.jpg
URL of the live stream thumbnail image, tracking query parameters stripped.
- lengthTextstringcan require
3:12:08
Stream length as YouTube shows it, such as 3:29:31, or LIVE while it is streaming; null when the serving source does not report it.
- publishedTimestring
Streamed 4 hours ago
Populated whenever the provider has data for the entity.
- titlestring
RANKED GRIND to Diamond - road to top 500 !builds !coach
Populated whenever the provider has data for the entity.
- urlstring
https://www.youtube.com/watch?v=kQ7mZ2vT8pL
Populated whenever the provider has data for the entity.
- viewsinteger
3140
Views of a past stream, or people watching a stream that is live now. Every source reads it from YouTube's rounded label ("60K watching" is 60000), so it is approximate.
- nextCursorstring
Eg0SC1BpeGVsZm9yZ2UxQoABAQ
Opaque cursor for the next page of live streams, or null when this lane has no more. Pass it back as cursor to continue.
- foundboolean
true
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
FAQ
About the YouTube Channel lives API
The AnyAPI YouTube Channel lives API returns YouTube channel lives data as normalized JSON from one POST call to /v1/run/youtube.channel_lives. List a YouTube channel's live and past-live streams by handle or channel ID with cursor pagination (title, views, length, publish time). AnyAPI routes each request across 2 sources and falls back automatically when one fails. It costs from $1.20 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of YouTube channel lives calls through AnyAPI succeeded, with a median response time of 1.1 seconds across 512 measured calls.