YouTube Scraper: Channels, Videos, Transcripts & Comments
Pricing
from $1.79 / 1,000 videos
YouTube Scraper: Channels, Videos, Transcripts & Comments
Scrape YouTube channels and videos — subscriber and view counts, full video lists with pagination, complete transcripts, and comments with replies. Transcripts included, not a paid add-on. No login. Pricing: videos $1.79/1K, video details with transcript $2.49/1K, comments $1.49/1K.
Pricing
from $1.79 / 1,000 videos
Rating
0.0
(0)
Developer
Socialhz
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Give it a list of YouTube channels and video links. Get back each channel's full statistics and video history, each video's details and complete transcript, and comments with their replies — in one run, with no YouTube login and no API key of your own.
Transcripts are included in the video price. They are not a paid add-on here.
Mix channels and videos in the same list. Each entry is routed automatically.
Built for AI and content pipelines, creator vetting, competitor research and audience analysis.
What it does
- Channels — subscriber count, lifetime view total, how many videos exist, creation date, country, banner, links to their other social accounts
- Video history with real pagination — YouTube returns 30 videos per page and this Actor keeps going, so you can pull a channel's back catalogue rather than just its latest page
- Full transcripts — the spoken content as plain text, with the caption language, ready to feed a model or a search index
- Video detail — views, likes, comments, length, category, language, keywords, hashtags, age restriction, live and unlisted flags
- Comments with replies — author, text, likes, reply count, and whether a comment is pinned or written by the creator
- Videos or Shorts — a channel's long-form feed and its Shorts feed are separate, and you choose which to read
- Title and description kept apart — YouTube serves them as one blob; this Actor splits them so the title column is a title
- No duplicates — paginated pages overlap, and repeats are dropped before they are ever charged
Input
| Field | Type | Default | Description |
|---|---|---|---|
targets | array | — | Required. Channels and videos, mixed freely. Max 200 per run |
maxVideosPerChannel | integer | 30 | How far back to go per channel. 30 is one page |
contentType | select | video | Read a channel's Videos or its Shorts |
includeTranscript | boolean | true | Return the transcript with each video you supply |
includeComments | boolean | false | Return comments on videos you supply |
maxCommentsPerVideo | integer | 20 | The first 20 arrive free with the video |
Accepted entries
Channels @MrBeastMrBeastyoutube.com/@MrBeastyoutube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVAUCX6OQ3DkcsbYNE6H8uQQuVAVideos youtube.com/watch?v=dQw4w9WgXcQyoutu.be/dQw4w9WgXcQyoutube.com/shorts/_JUlWtSCNbs
Example input
{"targets": ["@MrBeast","https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxVideosPerChannel": 60,"includeTranscript": true,"includeComments": false}
Output
One record per entry, carrying type (channel or video), label and status.
Channel records
| Field | Type | Description |
|---|---|---|
channelId, handle, displayName | string | null | Identity |
description | string | null | About-panel text |
subscriberCount | number | null | Subscribers |
totalViews | number | null | Lifetime views across the channel |
videoCount | number | null | How many videos the channel has published |
createdAt, location | string | null | When and where |
isVerified, isFamilySafe, privacyStatus | Status flags | |
profileImageUrl, bannerImageUrl | string | null | Images |
externalLinks, keywords | array | Their other accounts, and channel keywords |
videos | array | Each with title, description, link, views, likes, comments, publish date, thumbnail, hashtags |
videosReturned, morePagesAvailable | How many you got, and whether more exist |
Put subscriberCount and totalViews beside videoCount and you have average views per video — the quickest read on whether an audience is real.
Video records
| Field | Type | Description |
|---|---|---|
videoId, url, title, description | string | null | Identity and text, kept separate |
publishedAt | string | null | ISO 8601 UTC |
viewCount, likeCount, commentCount | number | null | Engagement |
channelName, channelHandle, channelId | string | null | Who published it |
durationSeconds, category, language | Length, YouTube category, language | |
keywords, hashtags, mentions | array | Metadata |
transcript | string | null | The spoken content as plain text |
transcriptLanguage, subtitles | Caption language and tracks | |
isLive, isPrivate, isUnlisted, ageRestriction | Status flags | |
comments | array | Author, text, likes, reply count, pinned and creator flags |
commentsReturned, moreCommentsAvailable | How many you got, and whether more exist |
Every record also carries status: ok, not_found for a channel or video that is not publicly available, or unavailable if the source could not be reached.
Pricing
| Event | Price |
|---|---|
| Video from a channel feed | $1.79 per 1,000 |
| Channel looked up | $1.79 per 1,000 |
| Video detail, transcript included | $2.49 per 1,000 |
| Extra comment beyond the first 20 | $1.49 per 1,000 |
| Run start | $0.005 per run |
The same price applies on every Apify plan.
An entry that is not a YouTube channel or video is rejected before any lookup and costs nothing, as are duplicates. Repeated videos and comments across paginated pages are dropped before they are charged.
Worked examples
Totals are rounded to the nearest cent.
Channel snapshot — 10 channels, 30 videos each 10 × $0.00179 + 300 × $0.00179 + $0.005 = ≈$0.56
Back catalogue — one channel, 600 videos 1 × $0.00179 + 600 × $0.00179 + $0.005 = ≈$1.08
Transcript pull — 500 videos with transcripts 500 × $0.00249 + $0.005 = $1.25
Set Maximum cost per run in the run options to cap spend. The Actor stops cleanly at that ceiling and returns everything it charged for.
Good to know
This source is deliberate rather than fast. A channel page takes eight to twenty seconds, so a deep pull is a long run — 600 videos is twenty pages and several minutes. Requests are given ninety seconds before being retried, which is why a slow source costs you a slower run rather than an empty one. Set the run timeout generously for large jobs.
The first 20 comments come free with the video. Leaving the comment limit at 20 adds nothing to your bill. Ask for more and only the extra pages are charged.
Transcripts depend on captions existing. Where a video has no captions in any form, transcript comes back null. Most substantial channels caption their content.
You supply the channels and videos. There is no keyword search — this Actor reads what you point it at.
Tips
- Check the ratio before you pay a creator. Lifetime views divided by video count, against subscriber count, exposes a bought audience faster than any single number.
- Pull transcripts in bulk, then search them. One run over a channel's catalogue gives you a corpus you can query offline without touching YouTube again.
- Comments are unfiltered product research. Sort by like count and the top comments are the objections and praise an audience actually agrees on.
- Shorts and Videos are different businesses. Run both feeds for the same channel and compare — many creators perform very differently across the two.
- Start shallow. One page per channel is enough to rank a list; go deep only on the channels that survive that cut.
Support
Report a problem through the Issues tab on this Actor's page. Issues are reviewed regularly.
When reporting, please include the run ID, the input you used, and what you expected.
For volume enquiries, custom requirements, or anything not specific to a single run, email socialhtz@gmail.com.