LurkAPI

The best YouTube scrapers in 2026, job by job

yt-dlp handles video details, channel lists and comments when YouTube trusts your server's IP. Transcripts get cut off first: use an API for those.

5 min read

A sorting machine on a bench drops cards, tiles and paper slips into three trays while its fourth chute is jammed with paper tape beside an amber flag

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
What works for each job. A flagged server is one that YouTube answers with its bot check.

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:

yt-dlp on a flagged server
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:

Same server: details kept coming, transcripts stopped at video 39.

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:

A channel’s latest 100 videos
yt-dlp --flat-playlist -J \
  --playlist-end 100 \
  https://www.youtube.com/@mkbhd/videos

It’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.

YouTube’s top comments on Tim Urban’s TED talk: the one with 58K likes is 39th. Sorted by likes, it’s second.

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:

Video details

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

Video comments

“Inside the mind of master procrastinator”

Me: adds to “watch later”

@Somedaymorn · 74K likes · 508 replies

Video transcript

“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

3 calls3 credits
What the video, comments and transcript endpoints return for one talk. Each heading links to its docs.
The transcript call · 1 credit
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.

The same 1,000 comments: 50 page calls on LurkAPI, or 1,000 billed records on a per-item API.

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,000CommentsVideos
LurkAPI$0.023 to $0.045$0.45 to $0.90
ScrapeCreatorsNot 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
SupadataNot listed$0.99 to $16.67
Self-serve plans as of October 2026, cheapest to dearest. Apify and Bright Data return a transcript as part of the video record; ScrapeCreators charges per page of comments but doesn’t publish how many a page holds.

Questions

Why does yt-dlp say sign in to confirm you're not a bot?

YouTube has flagged the IP you're running from, which happens to many cloud servers on their very first request. The ways around it are an account's cookies (the tools warn the account can be banned), a PO-token plugin, a different IP, or an API that fetches the data for you.

Does scrapetube still work?

No. Since YouTube's May 2026 redesign it returns an empty list without raising an error. Use yt-dlp --flat-playlist for a channel's videos instead.

How many comments can you scrape from a YouTube video?

About 1,000 top comments, or a few thousand if you sort by newest. YouTube stops paging there, whatever tool or API you use.

Can the YouTube Data API get transcripts?

Only for videos you're allowed to edit. Its captions.download method needs edit permission on the video and costs 200 quota units, so it can't read captions on other people's videos.

What is the best YouTube scraper for Python?

yt-dlp for video details and channel lists, and youtube-comment-downloader for comments, as long as YouTube trusts your server's IP. For transcripts at any volume, call a transcript API from Python instead.

Keep reading