โถ๏ธ YouTube Scraper
Pricing
from $2.00 / 1,000 results
โถ๏ธ YouTube Scraper
Scrape YouTube videos, Shorts, channels, playlists, comments, and search results, no API key or quota limit. Extract subtitles, transcripts, channel emails, and a computed virality score for creator research and content analysis.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
YouTube Scraper is an Apify Actor that extracts YouTube video, Shorts and live-stream data from links or search terms: views, likes, comments, subtitles, channel details and emails listed in channel descriptions. Paste video, channel, playlist or hashtag links and export JSON, CSV or Excel with an engagement rate and outlier score, no YouTube API key needed. Pay per result, from $2.00 per 1,000 results on the Gold, Platinum and Diamond plans. โถ Try it free
What can YouTube Scraper do?
- ๐ฏ One YouTube video scraper for every source - videos, Shorts, streams, channels, playlists, hashtags and search results in a single run.
- ๐ Built-in insights - engagement rate on every detailed result and a channel-relative outlier score, useful for YouTube Shorts analytics and YouTube Shorts research.
- ๐ง YouTube channel email extractor - About-panel details and emails found in the channel description.
- ๐ฌ Comments and subtitles - optional top comments and subtitle text per video, in the language and format you choose.
- ๐ YouTube search scraper filters - sort order, upload date, content type, length and feature filters such as HD, 4K and Creative Commons.
- ๐ Monitor mode - skip videos that an earlier run of this Actor already collected.
- โก Live results - each result is written to the dataset as soon as it is collected.
- ๐ Export and integrations - JSON, CSV, Excel, API, schedules and webhooks through Apify.
What data can I extract from YouTube?
| Field | Description |
|---|---|
๐ฌ id, url, type | Video ID, watch link and kind of result: video, short or stream. |
๐ title, description, category, keywords | Video title, description text, category and the tags set by the uploader. |
โฑ duration, durationText | Length in seconds (full results) or as shown in the list (playlist results). |
๐
date | Publish date of the video, or the relative time shown in a playlist. |
๐ viewCount, likes, commentsCount | Views, likes and comment count. Empty when YouTube does not show them. |
๐ซ commentsTurnedOff | Whether comments are disabled for the video. |
๐ผ thumbnailUrl | Link to the video thumbnail. |
๐ด isLiveContent, isUpcoming | Flags for live and upcoming streams. |
๐บ channelName, channelId, channelUrl | The channel that published the video. |
๐ engagementRate | (likes + comments) / views as a percentage, when the Outlier score option is on. |
๐ outlierScore | Object with ratio, channelMedianViews and label (viral_outlier, above_average, average or below_average). Channel URLs only. |
๐ข channelDescription, channelLocation, channelJoinedDate | Channel About text, country and join date (channel URLs only). |
๐ฅ numberOfSubscribers, channelTotalViews, channelTotalVideos | Channel totals from the About panel (channel URLs only). |
๐ง channelEmails, channelDescriptionLinks | Emails found in the channel description and the external links listed on the channel (channel URLs only). |
๐ฌ comments | Optional list of top comments: commentId, videoId, text, publishedTimeText, authorName, authorChannelId, authorIsChannelOwner, authorIsVerified, likesCountText, replyCount, replyLevel. |
๐ subtitles | Optional object: available, language, kind, format and content (or a reason when none is available). |
๐ fromPlaylist, playlistTitle | Playlist ID and title for results read from a playlist link. |
๐ท fromHashtag | Hashtag the video was found under. |
โ url, input, error, note | Error rows for inputs that could not be processed. |
Results are limited to what is publicly visible on YouTube. Private videos, hidden counts and disabled comments come back empty.
What can you do with the data from YouTube?
๐ฏ YouTube competitor analysis
- Add rival channel links to
urlsand setmaxResultsto 50. - Set
sortVideosBytoPOPULARand keepcomputeOutlierScoreon. - Export the dataset and sort by
outlierScoreto find the videos that beat the channel's usual views.
๐ค YouTube influencer research and channel email finder
- Paste creator channel links into
urlsand keepextractChannelDetailson for YouTube channel statistics export and bulk YouTube video metadata. - Run the Actor and open the Channel & Emails view.
- Filter by
numberOfSubscribersand usechannelEmailsfor outreach lists.
๐ YouTube keyword research and trend research
- Add terms to
searchQueriesand choosesortingOrdersuch asviews. - Narrow with
dateFilter(for examplemonth) andlengthFilter. - Review
title,keywordsandviewCountto see which topics and tags perform.
๐ Monitor new YouTube uploads (YouTube upload tracking)
- Add channel links and turn on
monitorMode. - Schedule the Actor daily or weekly in Apify.
- Each run reports only videos not seen in earlier runs.
๐ฌ Comments and subtitles for analysis
- Turn on
extractCommentsand setmaxComments. - Turn on
downloadSubtitlesand picksubtitlesLanguage. - Export the text for YouTube engagement analysis, sentiment work or content repurposing.
How do I use YouTube Scraper?
- Open YouTube Scraper on Apify and click Try for free.
- Paste video, Shorts, channel, playlist, hashtag or search-result links into YouTube URLs, or type terms into Search queries.
- Set Max videos per source, and add Max Shorts per source or Max streams per source if you want them.
- Pick search filters, comments, subtitles or monitor mode if you need them.
- Click Start and wait for the run to finish.
- Open the Dataset tab and export as JSON, CSV or Excel, or read the data through the API.
How much does it cost to scrape YouTube?
YouTube Scraper uses pay-per-event pricing: you pay for each result saved to the dataset, and Apify platform usage is billed in addition. The price per result depends on your Apify plan.
| Plan | Price per result | Per 1,000 results |
|---|---|---|
| ๐ Free | $0.003 | $3.00 |
| ๐ฅ Bronze | $0.0027 | $2.70 |
| ๐ฅ Silver | $0.0024 | $2.40 |
| ๐ฅ Gold, Platinum and Diamond | $0.002 | $2.00 |
Every run also has an Actor start event of $0.00005 per GB of memory, with a minimum of one. The default memory is 4 GB (4,096 MB), so one start is 4 events = $0.0002. Inputs that cannot be processed are saved as error rows and are not charged as results.
Worked example: 500 results on the Free plan cost 500 x $0.003 = $1.50, plus the $0.0002 start event. 10,000 results on the Gold plan cost 10,000 x $0.002 = $20.00, plus the start event.
Is scraping YouTube free?
The Actor is not free of charge: each saved result is billed at your plan's price. A small test is cheap, though. The default of 10 videos per source costs 10 x $0.003 = $0.03 on the Free plan, plus the $0.0002 start event and platform usage.
How much does YouTube Scraper cost per 1,000 results?
1,000 results cost $3.00 on the Free plan, $2.70 on Bronze, $2.40 on Silver and $2.00 on Gold, Platinum and Diamond. The $0.0002 start event and Apify platform usage are added to each run. You can also set a maximum spend per run, and the Actor stops cleanly when it is reached.
Input
Give YouTube Scraper links, search terms or both. Only urls is marked required in the input form, and everything else has a default. You can mix source types in one run.
Scrape by URL
Paste any mix of video, Shorts, channel (/@handle, /channel/ or /c/), playlist, hashtag and search-result links into urls. Channel links read the Videos, Shorts and Live tabs according to your limits. Video, playlist and hashtag links return the videos they point to.
Scrape by search query
Add plain terms to searchQueries to scrape YouTube search results in bulk. Each term is searched separately, as if typed into the YouTube search box, and the search filters apply.
Input fields
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
urls | array | Yes | Video, Shorts, channel, playlist, hashtag or search-result links. | [{"url": "https://www.youtube.com/@YouTube"}] |
searchQueries | array | No | Search terms, one per line. | [] |
maxResults | integer | No | Regular videos per search term, channel or playlist (0 to 5,000). | 10 |
maxResultsShorts | integer | No | Shorts per search term or channel. 0 skips Shorts (0 to 5,000). | 0 |
maxResultStreams | integer | No | Live or upcoming streams per search term or channel. 0 skips streams (0 to 5,000). | 0 |
sortingOrder | string | No | Search sort: relevance, rating, date or views. Blank skips the filter. | "" |
dateFilter | string | No | Upload window: hour, today, week, month or year. | "" |
videoType | string | No | video or movie. | "" |
lengthFilter | string | No | under4, between420 or plus20 (minutes). | "" |
isHD, is4K, is360, isHDR, is3D, isVR180 | boolean | No | Only include videos with that quality or format. | false |
hasSubtitles, hasCC, hasLocation | boolean | No | Only include videos with subtitles, a Creative Commons license or a location tag. | false |
isLive, isBought | boolean | No | Only include videos that are live now, or purchased content. | false |
sortVideosBy | string | No | Channel video order: NEWEST, POPULAR or OLDEST. | NEWEST |
extractComments | boolean | No | Collect top comments for every video. | false |
maxComments | integer | No | Comments per video (0 to 5,000). | 20 |
downloadSubtitles | boolean | No | Collect the subtitle track when available. | false |
subtitlesLanguage | string | No | Language code such as en, or any. | en |
subtitlesFormat | string | No | srt, vtt, plaintext or json3. | srt |
preferAutoGeneratedSubtitles | boolean | No | Prefer auto-generated captions over uploaded ones. | false |
computeOutlierScore | boolean | No | Add engagementRate and, on channel runs, outlierScore. | true |
extractChannelDetails | boolean | No | For channel URLs, add About-panel details and emails. | true |
monitorMode | boolean | No | Skip videos collected by earlier runs of this Actor on your account. | false |
proxyConfiguration | object | No | Optional connection settings. Leave the default unless you need your own. | {"useApifyProxy": false} |
browserFallback | boolean | No | Allow an extra retry step for requests that keep failing. | true |
maxConcurrency | integer | No | Sources processed at the same time (1 to 20). | 5 |
maxRequestRetries | integer | No | Attempts per failed request (1 to 10). | 3 |
maxScanned | integer | No | Search-result rows examined per query before stopping (100 to 200,000). | 20000 |
Example input:
{"urls": [{ "url": "https://www.youtube.com/@YouTube" }],"searchQueries": ["react tutorial"],"maxResults": 10,"maxResultsShorts": 5,"maxResultStreams": 0,"sortingOrder": "views","dateFilter": "month","extractComments": true,"maxComments": 20,"downloadSubtitles": true,"subtitlesLanguage": "en","subtitlesFormat": "srt","computeOutlierScore": true,"extractChannelDetails": true,"monitorMode": false}
Output
YouTube Scraper writes every result to the default Apify dataset as it is collected. Export it as JSON, CSV, Excel, XML or HTML from the Dataset tab or through the API. The dataset has table views for Overview, Insights, Channel & Emails, Comments, Media, Source and Errors. A run summary is saved to the key-value store under the key run-summary.
Video result
{"id": "abc123example","url": "https://www.example.com/watch?v=abc123example","type": "video","title": "Example video title","description": "Example description text.","duration": 612,"channelName": "Example Channel","channelId": "UCexample0000000000000000","channelUrl": "https://www.example.com/@examplechannel","date": "2026-01-15","viewCount": 125000,"likes": 4800,"commentsCount": 320,"commentsTurnedOff": false,"category": "Education","thumbnailUrl": "https://www.example.com/thumbnail.jpg","isLiveContent": false,"isUpcoming": false,"keywords": ["example", "tutorial"],"outlierScore": { "ratio": 1.8, "channelMedianViews": 69000, "label": "above_average" },"engagementRate": 4.096,"channelDescription": "Example channel description. Contact: contact@example.com","channelLocation": "United States","channelJoinedDate": "Joined Jan 1, 2015","numberOfSubscribers": 250000,"channelTotalViews": 90000000,"channelTotalVideos": 410,"channelDescriptionLinks": [{ "title": "Website", "displayText": "example.com", "url": "https://www.example.com" }],"channelEmails": ["contact@example.com"],"comments": [{"commentId": "example-comment-1","videoId": "abc123example","text": "Example comment text.","publishedTimeText": "2 days ago","authorName": "@example-user","authorChannelId": "UCexample1111111111111111","authorIsChannelOwner": false,"authorIsVerified": false,"likesCountText": "12","replyCount": 1,"replyLevel": 0}],"subtitles": {"available": true,"language": "en","kind": "asr","format": "srt","content": "1\n00:00:00,000 --> 00:00:03,000\nExample subtitle line."}}
Playlist result
Videos read from a playlist link are saved as lighter rows.
{"id": "abc123example","url": "https://www.example.com/watch?v=abc123example","type": "video","title": "Example playlist video","durationText": "10:12","date": "1 year ago","viewCount": 125000,"fromPlaylist": "PLexample000000","playlistTitle": "Example playlist"}
Error row
{"url": "https://www.example.com/watch?v=missing","input": "missing","error": "VIDEO_UNAVAILABLE","note": "Video is not available (deleted, region-blocked, etc.)"}
Notes and limitations
outlierScoreand the channel fields (channelDescription,channelEmailsand similar) appear only for results found through channel links.engagementRateis calculated from the visible likes and comment count; hidden counts can make it lower or empty.- Search results and hashtag pages return what YouTube lists at that moment, so counts can differ from what you see in a browser.
- Playlist results are lighter rows and have no likes, comments, subtitles or channel fields.
- The
vttsubtitle option currently returns the same timed-text layout assrt. - The run summary holds totals and counts such as
totalResults,videos,shorts,streams,errors,sources,resultsWithChannelEmails,resultsWithComments,resultsWithSubtitlesanddurationSeconds.
FAQ
Is it legal to scrape YouTube?
YouTube Scraper collects only publicly visible data. Rules such as GDPR, CCPA and the site's terms can still apply, especially to personal data like names and emails. This is not legal advice, so read the Apify guide to web scraping legality and consult a lawyer if unsure.
Do I need a YouTube account, cookies or an API key?
No. You can scrape YouTube without an API key: the input form has no field for a login, cookies or a YouTube Data API key, only links or search terms. That makes YouTube Scraper a practical YouTube Data API alternative when you want to avoid keys and daily quota units. You still need an Apify account to run it.
How many results can I get per run?
Each limit field accepts up to 5,000 per source: maxResults for videos, maxResultsShorts for Shorts and maxResultStreams for streams. A source is one search term, channel or playlist. To collect more, add more sources to urls or searchQueries. The default is 10 videos per source, which suits a quick test.
Can I scrape YouTube comments and subtitles?
Yes. Turn on extractComments to add top comments for each video, up to maxComments, or downloadSubtitles to download YouTube subtitles in bulk in your chosen language and format. Both are optional and add extra work per video. Videos with disabled comments or no captions return an empty list or an available: false subtitle object.
How is the outlier score calculated?
For channel links, the Actor compares each video's views with the median views of the channel videos it read in that run. The result is a ratio, the channelMedianViews and a label: viral_outlier at 3 or above, above_average at 1.5, average at 0.5 and below_average below that.
Can I export YouTube data to CSV or Excel?
Yes. Every run stores results in an Apify dataset, and you can download it as JSON, CSV, Excel, XML or HTML from the Dataset tab. The table views help you check columns first. You can also pull the data through the API, for example to extract YouTube comments to a spreadsheet or Google Sheets.
Can I schedule runs or monitor new YouTube uploads?
Yes. Apify schedules run YouTube Scraper daily, weekly or on any interval, and webhooks and integrations can pass results on to other tools. Turn on monitorMode and each run skips videos that earlier runs on your account already collected, so a scheduled run reports only new uploads and you pay only for new results.
Can I use YouTube Scraper with the Apify API or an MCP server?
Yes. You can start runs and fetch datasets through the Apify API, call the Actor from an MCP-compatible client, and use Apify's JavaScript and Python clients. The API tab on this page generates ready-to-use code for your input. See the Apify API documentation for authentication and endpoints.
Why am I getting fewer results than expected?
Common causes: the maxResults, maxResultsShorts or maxResultStreams limit is low or 0, search filters are too narrow, monitorMode skipped videos from earlier runs, or YouTube lists fewer videos for that source. Check the Errors view for rows with an error code, widen your filters and run again.
YouTube Scraper not working?
First open the Errors view in the dataset and read the note of each error row, then check that the links are public and typed correctly. If a run still fails or looks wrong, open the Issues tab on this Actor page with your run link and input, and we will look into it.
Related Actors
| Actor | Use it to |
|---|---|
| ๐ฌ YouTube Comments Scraper | Extract YouTube video comments and replies with author, text, likes and publish date. |
| ๐ฑ YouTube Shorts Scraper | Extract YouTube Shorts from any channel with views, likes, comments, hashtags and channel details. |
| โก Fast YouTube Channel Scraper | Scrape a channel's Videos, Shorts and Live tabs with exact counts, tags and transcripts. |
| ๐ฌ YouTube Transcript Scraper | Extract YouTube transcripts, subtitles and captions in bulk. |
Support and disclaimer
Found a bug or need a feature? Open an issue in the Issues tab. For custom solutions, integrations or questions, email hello.dataminds@gmail.com. YouTube Scraper is independent and not affiliated with or endorsed by YouTube or Google. Trademarks belong to their owners. It collects publicly available data only, and you are responsible for complying with applicable laws and the site's terms.
Last updated: 2026-10-17