YouTube scraper and API: videos, transcripts and comments without an API key
The YouTube Data API is free, official and small: 10,000 units a day, a search costs 100 of them, transcripts are not offered at all. Everything on a public video page is visible without an account, and that is what a scraper reads. This page shows what you get per video, how transcripts and comments work, where the limits are, and what it costs.
Data API versus scraper
| YouTube Data API v3 | Scraper | |
|---|---|---|
| Setup | Google Cloud project, API key, OAuth for some calls | a keyword or a URL |
| Quota | 10,000 units a day; search = 100 units, video = 1, comment thread page = 1 | none, pay per row |
| Transcripts | not available (captions download needs the owner's OAuth) | yes, any public video with captions |
| Comments | yes, 100 per page | yes, top or newest |
| Likes, tags, category | yes | yes |
| Subscriber and comment counts | yes | yes, when the counts option or comment collection is on; often null in ordinary searches otherwise |
| Channel record (country, joined date, links) | partly (no links) | yes |
| Best for | an app that acts on behalf of users, small volumes | research, monitoring, datasets, AI pipelines |
The scraper
The YouTube Scraper on Apify takes search queries, channel URLs, playlist URLs or video URLs and returns one row per video. Transcripts and comments are options on the same run. A row carries:
- Video:
id,url,title,durationSeconds,viewCount,likeCount,publishedAt(date and time),category,description,keywords,thumbnailUrl,isShort,isLive. - Channel:
channelName,channelId,channelUrl. Turn on the counts option forsubscriberCountandcommentCountin keyword searches; collecting comments also fills them. Both are oftennullby default. - Transcript:
transcriptas timed segments{start, duration, text},transcriptTextas one string,transcriptLanguage. - Comments: separate rows with
text,author,authorChannelId,likeCount,replyCount,publishedTextand thevideoIdthey belong to; replies as rows under their comment withparentId. - Channel record (option): one row per channel with
description,country,joinedAt, all-timeviewCount,videoCount,subscriberCount,handleand externallinks.
For a clean export by row type, enable Separate datasets by row type. The original dataset stays intact; the run also offers Videos, Comments and Channels datasets. This makes CSV or Excel exports easier. Extra copies use storage and download transfer but do not add result charges.
A checked search-to-transcript example
In a test run on 19 September 2026, the query python tutorial returned Python Full Course for Beginners with the video details, 4,530 timed caption segments and 263,320 characters of transcript text in one video row. The same run also saved one comment and one channel record. With separate datasets enabled, those rows were copied into three clean exports without changing the original output. The video and transcript would cost $0.0008 at the Actor's current Free-tier event prices; the three-row run with the transcript and channel add-on would cost $0.0023. Counts and search results can change over time.
For comparison, Streamers' official YouTube Scraper currently lists $4 per 1,000 videos on Free and offers existing subtitles in the video row. Smart API's YouTube Scraper lists $0.25 per 1,000 results, but its published examples require a separate video-details task after search to obtain views and likes and do not document a timed transcript. Competitor features and prices here are based on their published pages.
Speed: about 100 videos with details in 10-60 seconds depending on the source; listing only, several hundred a minute.
Calling it from code
curl -X POST "https://api.apify.com/v2/acts/alfalfa~youtube-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"searchQueries":["python tutorial"],"sortBy":"views","uploadDate":"month","maxVideos":50,"transcript":true}'
Longer jobs: start the run, poll it, read the dataset when it finishes. Schedules, webhooks and the n8n, Make and Zapier nodes work as for any Apify Actor; the API overview shows the pattern.
Things to know before you trust the numbers
- Search is what a visitor sees. About 20 videos per page, rarely more than 500-600 results for one query, US English settings. Split by upload date for more.
- Channels and playlists go deep. A channel's videos tab or its uploads playlist pages through the whole history, thousands of videos.
- Rounded counts. Views and likes are exact; subscriber and comment counts are what YouTube displays ("21.2M", "2.4M").
- Transcripts need captions. Manual or auto-generated; live streams have none while live. Multi-hour videos produce tens of thousands of segments.
- Comment replies come on request, up to a number per comment, and count towards the per-video comment limit.
Uses that pay for themselves
- AI and research. Transcripts of a whole channel or a topic as plain text for summaries, RAG or translation.
- Monitoring. Every new video on a keyword this week, with views and likes, into a sheet; a competitor's channel every Monday.
- Comment analysis. Top or newest comments of a launch video or a podcast with likes and authors, for sentiment and feedback mining.
- Content planning. The most viewed videos of a niche this month, their length, tags and titles.
Questions people ask
Is this allowed?
The scraper reads public pages without logging in and stores nothing but the results in your dataset. Respect YouTube's terms and the uploader's copyright when you reuse content, and personal data laws for comment authors.
Why is it this cheap?
A video's details are a few kilobytes and the scraper runs in a few megabytes of memory, so platform costs per thousand videos are cents. Transcripts are bigger, hence their own small price.
Does it download videos?
No. Metadata, transcripts and comments only.