YouTube Channel Scraper
Pricing
from $0.35 / 1,000 videos
YouTube Channel Scraper
List every video, Short or live stream on a YouTube channel. Accepts handles like @mkbhd, channel URLs, or raw channel IDs and resolves them for you. Returns video ID, title, view count, duration, publish time and thumbnail, paginated as deep as you need, with no API key or quota.
Pricing
from $0.35 / 1,000 videos
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
YouTube Channel Videos Scraper
Lists what a YouTube channel has published. Give it channels and it returns one row per video, with the title, view count, publish date, duration, thumbnail and live status exactly as the channel page shows them.
No API key, no quota, and no login is involved: the actor reads YouTube's own public browse endpoint, the same one the website calls.
Input
| Field | Type | Notes |
|---|---|---|
channels | array | Required. Handles (@mkbhd), channel URLs (youtube.com/@mkbhd, youtube.com/c/LinusTechTips, youtube.com/user/marquesbrownlee, youtube.com/channel/UC...) and bare channel IDs (UC...) are all accepted, mixed freely. |
tab | string | videos (default), shorts, or live. |
maxResults | integer | Videos per channel, default 50. Pages hold about 30 items, so larger numbers simply fetch more pages. |
proxyConfiguration | object | Recommended. YouTube answers datacenter addresses with a bot check. |
Handles and custom URLs are turned into a channel ID through YouTube's
navigation/resolve_url endpoint before anything is listed, so a run costs one
extra request per non-ID input and nothing after that.
Output
One dataset item per video:
{"channel_id": "UCXuqSBlHAE6Xw-yeJA0Tunw","tab": "videos","video_id": "DXK-F0SjC_E","url": "https://www.youtube.com/watch?v=DXK-F0SjC_E","title": "I put the NEWEST CPU in the OLDEST Motherboard","view_count_text": "721K views","view_count": 721000,"concurrent_viewers_text": null,"published_time_text": "1 day ago","scheduled_text": null,"duration_text": "13:48","duration_seconds": 828,"thumbnail_url": "https://i.ytimg.com/vi/DXK-F0SjC_E/hq720.jpg","is_live": false,"is_upcoming": false}
What the source does not give, and is therefore null
A channel tab is a listing page, not a video page. Missing values are null,
never 0 and never an empty string, because a zero reads as a measurement.
- Exact view counts. The tab shows
721K views.view_count_textcarries that string unchanged;view_countcarries YouTube's own rounded figure (721000). It is not an exact count, and no exact count is available here. - Absolute publish dates. Only relative text (
1 day ago,Streamed 1 month ago) is provided. Nothing is converted to a timestamp, because "1 month ago" cannot be turned into a date without inventing one. - Shorts have no duration and no publish date. The Shorts tab carries the
title and view count only, so
duration_text,duration_secondsandpublished_time_textarenullfor every Short. - Live items have no view count. While a stream is running the tab shows
12K watchinginstead, which is inconcurrent_viewers_text;view_countstaysnullbecause watchers are not views. - Upcoming items carry
scheduled_text(Scheduled for 8/25/26, 4:00 AM) andis_upcoming: true, with no view count and no duration. - Descriptions, tags, likes and comment counts are not on the tab at all and are not returned.
Reliability
YouTube refuses datacenter addresses with a bot check. Those refusals, along with HTTP 403, 429 and 5xx, are treated as temporary: the actor rotates to a new proxy address and retries. A channel that genuinely does not exist returns an error alert and is reported once, without retries, so a typo costs one request rather than a run's budget.
Pricing
Pay per event. One charge per video delivered to the dataset, after it has been pushed, and a small actor-start charge per run. Videos repeated across pages are de-duplicated before charging, so no video is ever paid for twice in a run.