YouTube Scraper: Channel Stats, Video Data, and Transcripts
The YouTube Data API is technically free, but 'free' means 10,000 units per day. A single `search.list` call costs 100 units — so you can run exactly 100 keyword searches before the 403 quotaExceeded error shuts you down until midnight UTC. I hit that limit in my first hour of testing. At that point you either pay Google for a quota increase, which they rarely approve, or you find a different way to get the data.
This guide covers what actually works for scraping YouTube in 2026 without burning through API units: channel subscriber counts and video stats from public pages, video metadata from YouTube's internal endpoints, and captions via the transcript API that most tools miss entirely. For comment scraping specifically — which has its own quirks and a separate keyword cluster — there's a dedicated YouTube comment scraper guide. And for channel analytics and subscriber data, the YouTube channel scraper guide goes deeper on that workflow.
Scrape YouTube search results and channel pages without API quotas
Clura runs inside your real Chrome browser. Open any YouTube search, channel, or playlist page, click Clura, export to CSV. No API key, no quota limits, no code. Free for up to 500 rows.
Add to Chrome — Free →Why the YouTube Data API Quota Kills Most Scraping Projects
The YouTube Data API v3 provides 10,000 units per day by default. A search.list request costs 100 units — limiting you to 100 searches per day before hitting a 403 quotaExceeded error. A videos.list request costs 1 unit, allowing 10,000 individual video lookups. Quota increases require a Google review process that takes weeks and is frequently denied for data research use cases.
Most YouTube scraping projects start with the Data API because it looks free and the documentation is solid. The quota wall hits differently depending on what you're doing. If you're pulling video details for known video IDs (`videos.list` at 1 unit each), 10,000 units means 10,000 videos per day — that's actually workable. The problem is discovery: finding those video IDs in the first place requires `search.list` at 100 units each, and suddenly your daily budget is 100 searches. For any kind of trend monitoring, competitor research, or keyword-based data collection, that's nothing.
| API Call | Units | Daily Limit at 10k units | Common Use Case |
|---|---|---|---|
| search.list | 100 units | 100 searches/day | Find videos by keyword |
| videos.list | 1 unit | 10,000 videos/day | Get metadata for known video IDs |
| commentThreads.list | 1 unit | 10,000 requests/day | Pull comments for a video |
| channels.list | 1 unit | 10,000 requests/day | Get channel stats |
| captions.list | 50 units | 200 requests/day | List available caption tracks |
The quota increase process exists but rarely works for data research. Google's review form asks for a use case description, and 'I want to scrape YouTube data for competitive research' doesn't get approved. Production apps with user-facing features get quotas raised. Research scripts don't. The practical alternative is building around the API's most expensive calls — specifically `search.list` — using scraping instead.
What Data Can You Actually Scrape From YouTube?
YouTube public pages expose video titles, view counts, like counts, upload dates, channel names, subscriber counts, video descriptions, and tag lists. Transcripts (auto-generated captions) are accessible via a separate endpoint without API quota. Comments require either the API's commentThreads.list (1 unit each, workable) or a direct page scraper. Private videos, member-only content, and age-gated videos require login.
| Data Type | Accessible Without API? | Method | Notes |
|---|---|---|---|
| Video title, views, likes, upload date | Yes | Page scraper or Clura | Public videos only |
| Channel name, subscriber count, total views | Yes | Page scraper or Clura | Subscriber count sometimes hidden by channel |
| Video description and tags | Yes | Page scraper | Tags not always shown in UI — in page source |
| Video transcripts / auto-captions | Yes | timedtext API endpoint | No quota, no auth required |
| Comments (top-level + replies) | Partially | commentThreads.list (1 unit) or scraper | See dedicated comment scraper guide |
| Search results (videos for a keyword) | Yes | Page scraper or Clura | Replaces search.list at 100 units each |
| Playlist contents | Yes | Page scraper or Clura | Full video list with metadata |
| Private / members-only / age-gated | No | Requires authenticated session | Not publicly accessible |
The most underused path is YouTube's public transcript endpoint. Auto-generated captions for most English-language videos are available at a URL pattern you can construct from the video ID — no API key, no quota consumption, no authentication. This is increasingly valuable for AI workflows where you want to feed video content into an LLM without watching the video.
How to Scrape YouTube Search Results Without Burning API Quota
YouTube search results pages are scrapable with a real browser — they load as JavaScript-rendered HTML that Clura reads directly. Each result card contains the video title, channel name, view count, upload date, and video duration. This replaces the 100-unit search.list API call entirely for discovery use cases.
YouTube's search results page (youtube.com/results?search_query=...) loads as a React application that renders video cards into the DOM after JavaScript runs. Python's requests library gets an empty page — the same problem as new Reddit and new Google results. You need either a headless browser or a real browser session.
- Open YouTube and search for your keyword. Let the results page fully load.
- Scroll down to load more results — YouTube auto-loads additional videos as you scroll.
- Click the Clura extension icon. It detects the video card structure: title, channel name, view count, upload date, duration.
- Export to CSV. Each row is one video result with all visible metadata.
This replaces `search.list` entirely for keyword discovery. You're not limited to 100 searches per day — you're limited only by how many searches you actually need to run. For playlist pages, channel video tabs, and recommended video sections, the same workflow applies: open the page, scroll to load, run Clura, export.
Replace search.list with zero API quota usage
Clura reads YouTube search results, channel pages, and playlists directly in your browser — no API key, no quota. Export to CSV in one click.
Add to Chrome — Free →YouTube Transcript Scraper: Pulling Captions Without the API
YouTube auto-generates captions for most videos and exposes them via an undocumented timedtext endpoint. The URL pattern is: https://www.youtube.com/api/timedtext?v=[VIDEO_ID]&lang=en. This requires no API key and consumes no quota. The response is XML containing timestamped caption text that you can parse into a plain transcript.
The `youtube transcript scraper` use case has grown significantly in 2025–2026 because people are feeding video content into LLMs — summarizing interviews, extracting claims from news videos, building training datasets from educational content. The YouTube Data API's captions endpoint costs 50 units per request (200 requests/day limit), which makes bulk transcript collection impractical through official channels.
The timedtext endpoint bypasses this entirely. For any video with auto-generated or manually uploaded English captions, a GET request to `https://www.youtube.com/api/timedtext?v=VIDEO_ID&lang=en` returns an XML response with timestamped caption segments. Parse the `
The `youtube-transcript-api` Python library wraps this endpoint cleanly — it handles language fallbacks, merges segments, and returns plain text. It's not an official library and depends on the undocumented endpoint staying stable, but it has worked consistently since 2021. Block rate at reasonable volumes: ~5%. The main failure mode is videos with no captions (older content, some non-English channels) or videos where the channel has disabled caption download.
- Auto-generated captions: available on ~85% of English-language YouTube videos uploaded since 2018
- Manually uploaded transcripts: available if the channel provides them — generally higher accuracy
- Disabled captions: some channels turn off caption download; the endpoint returns a 403 for these
- Non-English videos: use `&lang=es`, `&lang=fr`, etc. — or `&type=list` to see available languages
YouTube Scraper Tools Compared: What Works in 2026
For search result discovery: Clura (no quota, real browser, on-demand). For video metadata at scale: YouTube Data API videos.list (1 unit each — the one endpoint worth using). For transcripts: youtube-transcript-api Python library (no quota, undocumented endpoint). For comments: commentThreads.list API (1 unit per request, workable) or a dedicated comment scraper.
| Tool / Method | Use Case | Block Rate | Cost | Quota? |
|---|---|---|---|---|
| Clura (Chrome extension) | Search results, channel pages, playlists | ~2% | Free / $29.99 lifetime | None |
| YouTube Data API — videos.list | Video metadata for known IDs | ~0% | Free (1 unit/req) | 10k units/day |
| YouTube Data API — search.list | Keyword search discovery | ~0% | Free (100 units/req) | 100 searches/day |
| youtube-transcript-api (Python) | Transcript / caption text | ~5% | Free | None |
| Playwright + YouTube pages | Full page scraping, JS-rendered | ~25% | Free + proxy cost | None |
| Python requests | Not viable — React-rendered pages | ~95% | Free | None |
The practical split: use the Data API for `videos.list` (cheap, reliable, structured JSON for video metadata when you have the video IDs) and use Clura or a page scraper for `search.list` replacement (discovery, finding video IDs in the first place). Transcripts go through the timedtext endpoint. Comments have their own decision tree — see the YouTube comment scraper guide for that workflow. For channel analytics and subscriber tracking specifically, the channel scraper guide covers what's accessible and what requires the API.
Is Scraping YouTube Legal?
Scraping publicly visible YouTube pages — video titles, view counts, channel stats — is generally legal under US law (hiQ v. LinkedIn precedent). YouTube's Terms of Service prohibit automated data collection, but ToS violations and legal violations are distinct categories. Downloading copyrighted video content is a separate issue governed by the DMCA and is not what data scraping tools do.
There's an important distinction to make upfront: scraping YouTube data (titles, views, channel stats, transcripts) is different from downloading YouTube videos. Video downloads implicate DMCA and copyright. Data extraction from public pages — the same information any logged-out user can see — falls under the hiQ v. LinkedIn framework where US courts have consistently found that accessing public web data doesn't violate the Computer Fraud and Abuse Act.
YouTube's Terms of Service (section 5.B) prohibit automated access without explicit Google permission. Google enforces this technically through quota limits, CAPTCHA, and rate limiting — not through legal action against individual researchers. The higher-risk categories: building a commercial product on scraped YouTube data, republishing video content (even text transcripts), or scraping at volumes that materially impact Google's infrastructure.
Frequently Asked Questions
What is a YouTube scraper?
A YouTube scraper is a tool that extracts data from YouTube pages — video titles, view counts, upload dates, channel stats, transcripts, and comment text — without manual copy-paste. Methods range from the official YouTube Data API (quota-limited) to browser-based tools like Clura that read pages directly, to Python libraries like youtube-transcript-api for caption extraction.
Why does my YouTube API return a 403 quotaExceeded error?
You've hit the 10,000 unit daily quota. The most expensive call is search.list at 100 units — 100 searches exhausts your daily budget. The fix is either requesting a quota increase from Google (slow, frequently denied for research use cases) or replacing search.list with direct page scraping using a browser-based tool like Clura, which has no quota.
How do I scrape YouTube without using the API?
Three paths: (1) Clura Chrome extension for search results, channel pages, and playlists — reads pages directly in your browser at ~2% block rate, no quota; (2) youtube-transcript-api Python library for captions — calls an undocumented timedtext endpoint without authentication; (3) Playwright for full page scraping at ~25% block rate. Python requests alone doesn't work — YouTube pages are React-rendered and return empty HTML.
How do I get YouTube transcripts without the API?
Call https://www.youtube.com/api/timedtext?v=[VIDEO_ID]&lang=en directly — no API key, no quota. The response is XML with timestamped caption segments. The youtube-transcript-api Python library wraps this cleanly. It works on ~85% of English-language videos uploaded since 2018. Videos with disabled captions or no auto-generation return a 403.
Can I scrape YouTube search results?
Yes. Open youtube.com, search your keyword, scroll to load results, open Clura, export. Each result card gives you video title, channel name, view count, upload date, and duration. This replaces the 100-unit search.list API call for discovery workflows — no quota, no authentication required.
What is the best free YouTube scraper?
Clura is the most accessible free option for on-demand extraction — search results, channel pages, playlists — with no quota constraints. For transcript extraction, youtube-transcript-api is free and open source. For video metadata on known video IDs, the YouTube Data API's videos.list (1 unit per call) is reliable and unlikely to hit quota limits.
Is scraping YouTube legal?
Scraping publicly visible YouTube data — titles, view counts, channel stats — for research and internal business use is generally legal in the US under the CFAA framework (hiQ v. LinkedIn). YouTube's ToS prohibit automated scraping, but ToS violations aren't criminal acts. Downloading copyrighted video content is a separate, higher-risk category governed by DMCA.
Why does Python requests return empty content on YouTube?
YouTube's pages are React applications — the HTML delivered to requests is an empty shell with no video data. Content is injected by JavaScript after page load, which requests never runs. Use Clura (real Chrome browser) for page-level extraction, or the YouTube Data API / timedtext endpoint for structured data access.
Conclusion
The YouTube API quota is the constraint that shapes every YouTube scraping project. For video metadata on known IDs, videos.list at 1 unit each is reliable and worth using. For discovery — finding videos in the first place — replace search.list with a browser scraper. For transcripts, the timedtext endpoint is free and quota-free. The API is still useful; it's just useful for specific calls, not all of them.
The three-post structure matters here: this hub covers the general case, the channel scraper guide goes deeper on subscriber and analytics data, and the comment scraper guide covers the nested comment extraction problem separately. Start here to understand the landscape, then go to whichever spoke matches your actual use case.
Explore related guides:
- YouTube Comment Scraper — Extracting comments and replies without burning API quota — sentiment analysis and research workflows.
- YouTube Channel Scraper — Subscriber counts, video stats, and channel metadata for competitive research and influencer vetting.
- Social Media Scraper Guide — All eight platforms compared — YouTube, TikTok, Reddit, Instagram, X, Facebook, Pinterest, Telegram.
- Scraper API Comparison — When a managed API makes more sense than building your own YouTube data pipeline.
- Scraping Dynamic Websites — Why React-rendered pages like YouTube require a different approach from static HTML scraping.
- Avoid Getting Blocked — Rate limiting, behavioral detection, and TLS fingerprinting — how YouTube's defenses work.
Scrape YouTube search results without touching your API quota
Clura reads YouTube pages directly in your Chrome browser. Search, scroll, click Clura, export CSV. Works on search results, channel pages, playlists, and video lists. No quota, no API key, free for up to 500 rows.
Add to Chrome — Free →