YouTube Scraper
Pricing
from $5.00 / 1,000 results
YouTube Scraper
Get YouTube video titles, views, likes, comment counts, upload dates, durations, descriptions and channel stats from search terms, channel URLs (videos, Shorts, live) or video URLs. Export as JSON, CSV or Excel.
Pricing
from $5.00 / 1,000 results
Rating
5.0
(2)
Developer
Muhammad Noman Riaz
Maintained by CommunityActor stats
4
Bookmarked
28
Total users
3
Monthly active users
5 days ago
Last modified
Categories
Share
What does YouTube Scraper do?
YouTube Scraper collects public video data from YouTube without the YouTube Data API and its quotas. You give it search terms, channel URLs or video URLs, and it returns one dataset row per video. Each row has the video title, ID, URL, thumbnail, view count, like count, comment count, upload date, duration, description, hashtags and links found in the description. Every row also carries the channel's name, ID, handle, subscriber count, total views, video count, join date, avatar, banner and verified status. From a channel URL it can read the Videos tab, the Shorts tab and the Live tab, each with its own limit. Search results can be narrowed with YouTube's own filters, such as upload date, length, HD, 4K, live or Creative Commons. Results can be downloaded as JSON, CSV, Excel or HTML, or read through the Apify API. It suits content research, competitor tracking and building video lists for analysis.
What data can you get from YouTube?
| Video | Channel |
|---|---|
| Title, video ID, URL, thumbnail | Channel name, ID, URL, handle |
| Views, likes, comment count | Subscribers, total views, video count |
| Upload date, duration | Join date, description, links |
| Description, hashtags, description links | Avatar and banner image URLs |
Type: video, short or stream | Verified badge |
| Location and collaborators when shown |
How to scrape YouTube
- Open the Actor in Apify Console and go to the Input tab.
- Add search terms, or paste video and channel URLs into Direct URLs.
- Set Maximum videos, and for channels optionally Maximum Shorts per channel and Maximum live streams per channel.
- Click Start and download the dataset when the run finishes.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | none | Keywords to search on YouTube. |
startUrls | array of URLs | [] | Video URLs (youtube.com/watch?v=..., youtu.be/...) and channel URLs (/@handle, /channel/ID, /c/name, /user/name). Other URLs are skipped. |
maxResults | integer | 10 | Videos per search term and per channel Videos tab. 0 skips them. |
maxResultsShorts | integer | 0 | Shorts per channel URL. |
maxResultStreams | integer | 0 | Past, live or upcoming streams per channel URL. |
dateFilter | hour, today, week, month, year | none | Search only: upload date. |
videoType | video, movie | none | Search only: result type. |
lengthFilter | under4, between420, plus20 | none | Search only: video length. |
isHD, is4K, isHDR, is3D, is360, isVR180, isLive, hasSubtitles, hasCC, hasLocation, isBought | boolean | false | Search only: YouTube feature filters. They can be combined. |
proxyConfiguration | object | {"useApifyProxy": false} | Proxy for requests to YouTube. |
Input example
{"searchQueries": ["crawlee web scraping"],"startUrls": ["https://www.youtube.com/@NASA","https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxResults": 15,"maxResultsShorts": 2,"maxResultStreams": 2,"dateFilter": "year","proxyConfiguration": { "useApifyProxy": true }}
Output example
One real row from a local test run on the NASA channel (long text fields shortened here):
{"title": "Planetary Defenders: This Is Not an Exercise","translatedTitle": null,"type": "video","id": "5b3n-u_0QAI","url": "https://www.youtube.com/watch?v=5b3n-u_0QAI","thumbnailUrl": "https://i.ytimg.com/vi/5b3n-u_0QAI/maxresdefault.jpg","viewCount": 512650,"date": "2026-10-14T15:05:17.000Z","likes": 9612,"location": null,"channelName": "NASA","channelUrl": "https://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ","channelUsername": "NASA","collaborators": null,"channelId": "UCLA_DiR1FfKNvjuUpBHmylQ","channelDescription": "NASA's mission is to pioneer the future in space exploration, scientific discove...","channelJoinedDate": "Jun 3, 2008","channelDescriptionLinks": [{ "text": "nasa.gov", "url": "https://nasa.gov" }],"channelLocation": "","channelAvatarUrl": "https://yt3.googleusercontent.com/eIf5fNPcIcj9ig-wZBeq4stFy1lgjWTW1nLT5dYlFkHZprZ03QBiMcbpwNMB6XSBjrSFGtAGQg=s160-c-k-c0x00ffffff-no-rj","channelBannerUrl": "https://yt3.googleusercontent.com/y8Srh-oCcilLvBO8jAPI546m1bn0puA5DIvQiBZ1cSxc_rZfKxKSFlTCtoCQCtB6viUf1NGsaQ=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj","channelTotalVideos": 6100,"channelTotalViews": 1129592359,"numberOfSubscribers": 15100000,"isChannelVerified": true,"inputChannelUrl": "https://www.youtube.com/@NASA","isAgeRestricted": false,"aboutChannelInfo": { "...": "the channel fields above, repeated" },"duration": "00:20:15","commentsCount": 0,"text": "When a newly discovered asteroid posed a potential risk to Earth, a global planetary defense system was put to the test ...","translatedText": null,"descriptionLinks": [{ "url": "https://www.youtube.com/redirect?...", "text": "https://science.nasa.gov/planetary-de..." }],"subtitles": null,"order": 1,"commentsTurnedOff": false,"fromYTUrl": "https://www.youtube.com/@NASA/videos","isMonetized": false,"hashtags": [],"formats": [],"isMembersOnly": false,"input": "https://www.youtube.com/@NASA","fromChannelListPage": "videos"}
fromChannelListPage tells you where a row came from: videos, shorts, streams, search or direct.
FAQ
Can I scrape a whole YouTube channel?
Yes, up to your limits. Paste the channel URL and set Maximum videos to the number of videos you want. The scraper pages through the Videos tab until it reaches that number or the end of the channel. Shorts and live streams have their own limits.
Does it need a YouTube API key?
No. It reads the same public pages a browser loads, so there is no API key and no daily quota.
Can it scrape YouTube comments or transcripts?
No. It returns the comment count only. For comment text use YouTube Comments Scraper. For transcripts and subtitles use YouTube Video Transcript Scraper.
Can I combine search filters?
Yes. Upload date, type, length and the feature filters are sent to YouTube together as one filter set.
Do I need a proxy?
Small runs often work without one. For larger runs on the Apify platform, turn on Apify Proxy so YouTube is less likely to block or rate limit the run.
Is it legal to scrape YouTube?
The scraper only reads publicly visible data. You are responsible for how you use it, including YouTube's terms and privacy laws such as the GDPR when data relates to people.
Known limits
- Playlist, hashtag and search result page URLs are not supported in Direct URLs. Use Search terms for searches.
- Search reads the first results page only (typically around 20 videos), so a search term never returns more than that.
- Search results come in YouTube's relevance order. There is no sort option.
- Shorts are read from the first page of the Shorts tab only, which is about 40 items.
- Every video is loaded from its own watch page, so large runs take time.
translatedTitle,translatedText,subtitles,formats,isMembersOnly,isAgeRestrictedandcommentsTurnedOffare kept for format compatibility and always hold their empty orfalsevalue.isMonetizedis a rough guess from the page HTML and should not be relied on.commentsCountis0when YouTube does not show a count on the watch page. Upcoming streams have aviewCountof0.channelTotalVideosandnumberOfSubscriberscome from YouTube's rounded display values, such as 6.1K.- If YouTube answers with HTTP 429 (rate limit), the run saves what it has and stops.
- A video found twice in one run is saved once.
Related scrapers
- YouTube Video Transcript Scraper for transcripts and subtitles.
- YouTube Comments Scraper for comment text.