For video details, a channel’s uploads and comments, yt-dlp is the best free YouTube scraper, provided YouTube trusts the IP it runs from. For transcripts, and for anything that has to keep running on a server, use an API: transcripts are the first thing YouTube cuts off, and the official Data API only reads captions on videos you can edit.
This covers the data: titles, counts, comments and captions. Downloading the video files themselves is a different job.
Video details
Pick: yt-dlp where YouTube trusts your IP, an API anywhere else
- Trusted serverWorks: yt-dlp, pytubefix
- Flagged serverNo: Bot check
- Data APIWorks: With an API key
- LurkAPIWorks: 1 credit per video
A channel’s videos
Pick: yt-dlp --flat-playlist
- Trusted serverWorks: Fast, views rounded
- Flagged serverWorks: Still works
- Data APIWorks: With an API key
- LurkAPIWorks: 1 credit per page of 30
Comments
Pick: youtube-comment-downloader where YouTube trusts your IP, an API anywhere else
- Trusted serverWorks: Works, no key needed
- Flagged serverPartly: Hit or miss
- Data APIWorks: With an API key
- LurkAPIWorks: 1 credit per page of 20
Transcripts
Pick: An API, like LurkAPI’s
- Trusted serverPartly: Refused after a few dozen
- Flagged serverNo: Bot check
- Data APINo: Only videos you can edit
- LurkAPIWorks: 1 credit per video
Video details
Pick: yt-dlp where YouTube trusts your IP, an API anywhere else
A channel’s videos
Pick: yt-dlp --flat-playlist
Comments
Pick: youtube-comment-downloader where YouTube trusts your IP, an API anywhere else
Transcripts
Pick: An API, like LurkAPI’s
Your server’s IP decides whether a free scraper works
Set up two cloud servers the same way, install the same yt-dlp, and one can pull a hundred videos while the other gets this on its first request:
ERROR: [youtube] QVv3mQzlrN0: Sign in to confirm you’re not a bot. Use --cookies-from-browser or --cookies for the authentication. (…)pytubefix fails the same way (it calls it BotDetection), and so does any tool that reads the watch page. On a fresh cloud server it’s close to a coin flip, and it comes on the very first request. You won’t see it from your laptop, because a home connection is the kind of IP YouTube trusts. Test from the machine the scraper will run on, and not with a famous video: on the flagged servers, Rick Astley’s Never Gonna Give You Up still loaded while every other video hit the check.
The ways around a flagged IP all cost something: an account’s cookies (both tools warn the account can be banned), a PO-token plugin you have to keep updated, or a different IP.
A trusted IP has a limit too, and transcripts reach it first. Run a hundred videos back to back on one server and transcripts stop long before details do:
The cutoff comes after a few dozen videos and moves from week to week, so test a hundred from the server you’ll run on.
Free tools handle details, channel lists and comments
For one video, yt-dlp -J prints everything the watch page knows, exact views and likes included. pytubefix is quicker when all you need is the title, views, length and date.
For a channel’s videos, use the flat playlist. It works even on servers YouTube has flagged, and returns 100 videos in a second or two:
yt-dlp --flat-playlist -J \
--playlist-end 100 \
https://www.youtube.com/@mkbhd/videosIt’s fast because it only reads the channel page, so views come rounded (9,000,000) and there are no upload dates. Pass the ids you care about to a details call when you need exact numbers. Skip scrapetube: since YouTube’s May 2026 redesign it runs for about a minute, returns an empty list and raises nothing, so a pipeline just records a channel with no videos. The fixes in its issue tracker are still unmerged.
For comments, youtube-comment-downloader (no key, no browser) and yt-dlp’s --write-comments both pull 500 top comments in under 20 seconds. Every tool, paid or free, stops at about 1,000 top comments per video, or a few thousand if you sort by newest. And top doesn’t mean most liked: on Tim Urban’s TED talk, a comment with 58K likes sits 39th, behind ones with a few hundred. Pull a few pages and sort by likes yourself.
The official YouTube Data API stops at 10,000 quota units a day. More than that takes Google’s compliance audit.
For transcripts, use an API
youtube-transcript-api works until it’s refused, after a few dozen videos. If you use yt-dlp, ask for --sub-langs en, not "en.*": the wildcard also requests YouTube’s auto-translated tracks, which answer HTTP Error 429: Too Many Requests and fail the run after the English file is saved. And the Data API can’t help with other people’s videos, because its caption download needs permission to edit the video.
An API fetches from its own IPs, so yours doesn’t matter. With LurkAPI it’s one call per video, and the same key reads the video’s details and comments. One TED talk, three calls:
Inside the Mind of a Master Procrastinator | Tim Urban | TED
TED, verified, 27.9M subscribers
- Views
- 62,067,899
- Likes
- 2,055,409
- Comments
- 79,656
- Length
- 14:04
- Published
- Apr 6, 2016
Most replayed
“Inside the mind of master procrastinator”
Me: adds to “watch later”
@Somedaymorn · 74K likes · 508 replies
“So in college, I was a government major, which means I had to write a lot of papers.”
First of 315 timed lines, from the speaker’s own captions
curl -G \
https://api.lurkapi.com/v1/youtube/video/transcript \
-d url=arj7oStGLkU \
-H "x-api-key: $LURK_KEY"To try a few by hand, the free YouTube transcript tool runs the same call, 5 a day without an account. Why the free libraries get refused, and what each workaround costs, has its own post.
Paid YouTube APIs: paying per page or per item
Paid APIs bill one of two ways, and for comments and channel lists the difference outweighs any headline price. LurkAPI and ScrapeCreators charge per request, so a page of 20 comments is one call. Apify and Bright Data charge per item, so the same page is 20 billed records.
So 1,000 comments are 50 calls with us, $0.023 to $0.045 depending on the pack. Billed per item, they cost $0.90 to $2.00 on Apify and $1.30 to $1.50 on Bright Data.
| Per 1,000 | Comments | Videos |
|---|---|---|
| LurkAPI | $0.023 to $0.045 | $0.45 to $0.90 |
| ScrapeCreators | Not listed | $0.99 to $1.88 |
| Apify | $0.90 to $2.00 | $2.40 to $4.00 |
| Bright Data | $1.30 to $1.50 | $1.30 to $1.50 |
| Supadata | Not listed | $0.99 to $16.67 |



