Youtube Channel Videos Details Scraper
Pricing
from $1.00 / 1,000 results
Youtube Channel Videos Details Scraper
Extract granular data on every video, from rich thumbnails to detailed view counts, empowering data-driven decisions for content creation, audience engagement and channel growth. Whether you're a seasoned YouTuber, a digital marketer, or an AI researcher, unlock the insights you need to thrive in...
Pricing
from $1.00 / 1,000 results
Rating
5.0
(4)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
5
Bookmarked
116
Total users
0
Monthly active users
6 hours ago
Last modified
Categories
Share
Overview
This actor allows you to scrape detailed information about videos from a specific YouTube channel. It extracts comprehensive metadata, engagement metrics, and rich media assets for each video, providing valuable insights for content creators, marketers, and researchers analyzing YouTube channel performance and content strategies.
Explore More Scrapers
If you found this YouTube Channel Video Details Scraper useful, be sure to check out our other powerful scrapers and actors at memo23's Apify profile. We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.
Features
- Channel-wide Video Extraction: Scrape the whole Videos grid of a channel, page after page.
- Shorts and Live Tabs:
maxResultsShortsandmaxResultsStreamsadd the channel's other two grids, each with its own budget. - Video Metadata: Video id, URL, title, duration (as text and in seconds), view count (as text and as a number), relative publish age and a parsed
publishedAt, thumbnail URL and a live flag. - Channel Information: Every row carries the channel's name, id, URLs, description, keywords, avatar, RSS feed, family-safe flag, subscriber count and video count.
- Date Filtering:
oldestPostDatecuts the feed off at an ISO date or a span like3 months, and under the default order the run stops as soon as it passes the cutoff instead of paging the rest of the channel. - Feed Order:
sortVideosByreloads the grid through the channel's own Latest / Popular / Oldest chips. - Proxy Support: Built-in proxy configuration to enhance scraping reliability and avoid blocks.
A grid card is all this actor reads, so what YouTube does not print on a card is not here: no like count, no comment count, no tags, no categories, and no full description — descriptionSnippet is filled only on the older renderer YouTube still serves to some exits, and is null otherwise.
How to Use
- Set Up: Ensure you have an Apify account and access to the Apify platform.
- Configure Input: Set the YouTube channel URL you want to scrape video details from (see Input Configuration section).
- Adjust Settings: Configure options like
maxItems, concurrency, and proxy settings as needed. - Run the Scraper: Execute the scraper on the Apify platform.
- Data Collection: The scraper will output detailed data about videos from the specified YouTube channel.
Input Configuration
Here's an example of how to set up the input for the YouTube Channel Video Details Scraper:
{"startUrls": [{"url": "https://www.youtube.com/@AllTHEMOVIE/videos"}],"maxItems": 100,"maxResultsShorts": 0,"maxResultsStreams": 0,"oldestPostDate": "","sortVideosBy": "newest","maxConcurrency": 10,"minConcurrency": 1,"maxRequestRetries": 3,"proxyConfiguration": {"useApifyProxy": true}}
Input Fields Explanation
startUrls: Array containing the URL of the YouTube channel. A bare channel URL follows the channel's own Videos tab; a URL pointing straight at/videos,/shortsor/streamsscrapes that tab.maxItems: Maximum number of videos to take from the channel's Videos tab (default: 100). Counted per channel, so three start URLs at 100 return up to 300 rows.0takes nothing from the Videos tab, which is how you ask for shorts or streams only — there is no "unlimited" value, so set a high number to take a whole tab. A start URL that points straight at/shortsor/streamsis capped by this field too, unless that tab's own cap is above 0.maxResultsShorts: Rows to take from the channel's Shorts tab, on top ofmaxItems(default: 0 = skip the tab, at no request cost). Above 0 it also caps a start URL pointing straight at/shorts. A short card carries no publish date, sooldestPostDatedoes not apply to those rows.maxResultsStreams: Rows to take from the channel's Live tab, past streams plus anything live right now, on top ofmaxItems(default: 0 = skip the tab). Above 0 it also caps a start URL pointing straight at/streams. This field was calledmaxResultStreamsin the build before it; the old spelling is still accepted.oldestPostDate: Only return videos published on or after this date — an ISO date (2026-01-01) or a span (3 months). YouTube only publishes a relative age on a grid card, so hours, days and weeks are exact while months and years are read as the newest day in that bucket, which keeps borderline videos rather than dropping them. A row with no age at all — a short, a stream that is live right now, an upcoming premiere — has no date to compare and is always kept. Empty means no filter.sortVideosBy:newest(default),popularoroldest, using the channel's own sort chips. Onlynewestlets a run witholdestPostDatestop as soon as it passes the cutoff; the other two filter the feed row by row and give up after a run of pages that match nothing, which on a large channel can end the scan before it reaches the matches. PairoldestPostDatewithnewest.maxConcurrency: Maximum number of pages processed simultaneously (default: 10).minConcurrency: Minimum number of pages processed simultaneously (default: 1).maxRequestRetries: Number of retries for failed requests (default: 3).proxyConfiguration: Proxy settings for enhanced scraping reliability.
On the free plan a run is held to the first start URL and 10 rows shared across the three caps, in proportion to what was asked for — maxItems: 100 with maxResultsShorts: 20 becomes 8 videos and 2 shorts.
Output Structure
One row per video, flat, with the channel repeated on every row so a row is usable without a second lookup:
{"videoId": "gTKS8SAwUzE","url": "https://www.youtube.com/watch?v=gTKS8SAwUzE","title": "I Survived The Most Extreme Places On Earth","descriptionSnippet": null,"duration": "23:28","durationSeconds": 1408,"viewCountText": "66M views","viewCount": 66000000,"publishedTimeText": "3 days ago","publishedAt": "2026-09-06T15:51:48.761Z","thumbnailUrl": "https://i.ytimg.com/vi/gTKS8SAwUzE/hq720_custom_2.jpg","isLive": false,"type": "video","channelName": "MrBeast","channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA","channelUrl": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA","channelHandleUrl": "http://www.youtube.com/@MrBeast","channelDescription": "SUBSCRIBE FOR A COOKIE!\nNew MrBeast or MrBeast Gaming video every...","channelAvatarUrl": "https://yt3.googleusercontent.com/nxYrc_1_2f77DoBadyxMTmv7ZpRZapHR5jbuYe7PlPd5cIRJxtNNEYyOC0ZsxaDyJJzXrnJiuDE=s900-c-k-c0x00ffffff-no-rj","channelKeywords": "mrbeast6000 beast mrbeast Mr.Beast ...","channelRssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA","channelIsFamilySafe": true,"numberOfSubscribersText": "516M subscribers","numberOfSubscribers": 516000000,"channelTotalVideosText": "1K videos","channelTotalVideos": 1000,"inputChannelUrl": "https://www.youtube.com/@MrBeast/videos"}
Detailed Field Explanations
Video fields:
videoId: YouTube's own id for the video, and the key to join on.url: Watch URL for a video or a stream,youtube.com/shorts/<id>for a short.title: The title as printed on the card.descriptionSnippet: The teaser line under the title. Only the older renderer carries one; null on the current grid.duration/durationSeconds:"23:28"and1408. Both null on a short and on a stream that is live right now — YouTube prints no length on either card.viewCountText/viewCount:"66M views"and66000000. A card that is live reads"153 watching"instead, and parses the same way.publishedTimeText: The relative age exactly as YouTube printed it —"3 days ago","Streamed 7 days ago".publishedAt: That age resolved to an ISO timestamp, at the newest end of its bucket. Null when the card carries no age: shorts, live-right-now streams, upcoming premieres.thumbnailUrl: The largest thumbnail YouTube offered on the card.isLive: True while the video is streaming.type: Which tab the row came from —video,shortorstream. Not a judgement about the video itself.
Channel fields, identical on every row of a channel: channelName, channelId, channelUrl, channelHandleUrl, channelDescription, channelAvatarUrl, channelKeywords, channelRssUrl, channelIsFamilySafe, numberOfSubscribersText, numberOfSubscribers, channelTotalVideosText, channelTotalVideos, and inputChannelUrl — the URL you supplied, kept verbatim.
Output Changes
Two releases have changed the shape of a row, which matters if you consume the CSV export by column position or feed the JSON into a fixed schema:
- Rows are flat. They used to be the raw InnerTube renderer —
title.runs[0].text,viewCountText.simpleText, plusnavigationEndpoint,menu,trackingParamsandthumbnailOverlays. Those keys are gone; the fields above replace them. - Two columns were added on top of that:
publishedAtandtype. Every row now has them, including rows from the Videos tab of a run that never touched Shorts or Live.
Support
- For issues or feature requests, please use the Issues section of this actor.
- If you need customization or have questions, feel free to contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional Services
- Request customization or whole dataset: muhamed.didovic@gmail.com
- If you need anything else scraped, or this actor customized, email: muhamed.didovic@gmail.com
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: muhamed.didovic@gmail.com


