YouTube Scraper
Pricing
from $3.00 / 1,000 results
YouTube Scraper
Scrape videos, channels, playlists, and search results from YouTube. Extract metadata, subtitles, and channel info.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Beautiful Scrape
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape public data from YouTube — videos, channels, playlists, and search results — beyond what the YouTube Data API allows.
What does YouTube Scraper do?
YouTube Scraper extracts public data from YouTube pages. It can scrape video metadata, channel information, playlist contents, and search results in bulk.
- Extract video titles, descriptions, view counts, likes, comments count, duration, and more
- Scrape channel info: subscriber count, total videos, total views, description, location, join date
- Break down playlists and enumerate all videos
- Search YouTube by keywords with filtering and sorting
- Download subtitles and transcripts (auto-generated or user-uploaded)
- Export data in JSON, CSV, Excel, or HTML via the Apify platform
What data can you scrape from YouTube?
| Field | Description |
|---|---|
| 📺 Channel name | Name of the video's channel |
| 👍 Likes | Number of likes on the video |
| 📝 Video title | Title of the video |
| 💬 Comments count | Total number of comments |
| 🔗 Video URL | Direct link to the video |
| 📍 Channel location | Geographic location of the channel |
| 🖍 Subtitles | Auto-generated and user-uploaded transcripts |
| 🌐 Channel URL | Link to the channel page |
| 📼 Total videos | Number of videos on the channel |
| 👁️ View count | Number of views on the video |
| 👀 Total views | Total views across all channel videos |
| 📈 Subscribers | Number of channel subscribers |
| ⏱️ Duration | Length of the video |
| 📅 Publish date | When the video was uploaded |
| #️⃣ Hashtags | Hashtags associated with the video |
| 📽️ Thumbnails | Video thumbnail URLs |
How to scrape YouTube data
- Create a free Apify account using your email.
- Open YouTube Scraper.
- Add one or more YouTube URLs or search terms.
- Click the Start button and wait for the data to be extracted.
- Download your data in JSON, CSV, Excel, or HTML.
Input
You can configure the scraper through the Apify Console UI or by providing a JSON input.
Start URLs
Paste YouTube URLs to scrape. Supports:
- Video URLs:
https://www.youtube.com/watch?v=... - Channel URLs:
https://www.youtube.com/@ChannelName - Playlist URLs:
https://www.youtube.com/playlist?list=... - Search result URLs:
https://www.youtube.com/results?search_query=... - Shorts:
https://www.youtube.com/shorts/... - Live streams:
https://www.youtube.com/live/...
Search keywords
Search YouTube by typing keywords just like you would in the YouTube search bar. Each keyword produces a separate set of results.
Result limits
| Parameter | Default | Description |
|---|---|---|
maxResults | 10 | Max regular videos per URL/search |
maxResultsShorts | 0 | Max Shorts (search only) |
maxResultStreams | 0 | Max live streams (search only) |
Filtering by date
When scraping by search term: Use searchDateFilter to filter by hour, day, week, month, or year.
When scraping by channel URL: Use oldestPostDate with relative values like 3 days, 1 week, 2 months, or absolute dates like 2024-01-15.
Sorting
Channel videos: Use channelSortBy — newest (default), popular, or oldest.
Search results: Use searchSortBy — relevance, date, viewCount, or rating.
Subtitles
Enable subtitle extraction with downloadSubtitles: true. Configure:
| Parameter | Default | Description |
|---|---|---|
subtitlesLanguage | "en" | Preferred language code |
subtitlesFormat | "plaintext" | Format: plaintext, srt, or vtt |
preferAutoGeneratedSubtitles | false | Prefer auto-generated over user-uploaded |
saveSubsToKVS | false | Save to Apify key-value store with URL reference |
Input example
{"startUrls": [{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }],"maxResults": 10,"downloadSubtitles": true,"subtitlesFormat": "plaintext"}
Search example:
{"searchKeywords": ["web scraping tutorial"],"maxResults": 20,"maxResultsShorts": 5,"searchSortBy": "date","searchDateFilter": "month"}
Output
Results are pushed to the Apify dataset. You can download them in JSON, CSV, Excel, or HTML.
Single video
{"title": "Stromae - Santé (Live)","id": "CW7gfrTlr0Y","url": "https://www.youtube.com/watch?v=CW7gfrTlr0Y","thumbnailUrl": "https://i.ytimg.com/vi/CW7gfrTlr0Y/maxresdefault.jpg","viewCount": 35582192,"date": "2021-12-21T00:00:00.000Z","likes": 512238,"duration": "00:03:17","type": "video","channelName": "StromaeVEVO","channelUrl": "https://www.youtube.com/@StromaeVEVO","numberOfSubscribers": 6930000,"commentsCount": 14,"text": "Stromae - Santé (Live From The Tonight Show...)","descriptionLinks": [{ "url": "https://stromae.lnk.to/la-solassitude", "text": "https://stromae.lnk.to/la-solassitude" }],"isMonetized": null,"commentsTurnedOff": false,"hashtags": ["#Stromae", "#Santé"],"isAgeRestricted": false}
Channel scrape
When scraping a channel, results include channel-level metadata:
{"id": "HV6OlMPn5sI","title": "Raimu - The Spirit Within","duration": "29:54","channelName": "Lofi Girl","channelUrl": "https://www.youtube.com/@LofiGirl","date": "2024-01-15T00:00:00.000Z","viewCount": 410458,"fromYTUrl": "https://www.youtube.com/@LofiGirl/videos","numberOfSubscribers": 13100000,"channelDescription": "That girl studying by the window non-stop...","channelJoinedDate": "Mar 18, 2015","channelLocation": "France","channelTotalVideos": 409,"channelTotalViews": 1710167563,"isChannelVerified": true}
Playlist scrape
{"id": "CdgDLaxe2Q4","title": "Lecture 4 | String Theory and M-Theory","duration": "1:23:37","channelName": "Stanford","channelUrl": "https://www.youtube.com/@stanford","url": "https://www.youtube.com/watch?v=CdgDLaxe2Q4&list=PL6i60qoDQhQG...&index=4","viewCount": 106000,"fromYTUrl": "https://www.youtube.com/playlist?list=PL6i60qoDQhQG...","order": 4}
Search results
{"id": "CwRMBKk8St0","title": "LET'S ARGUE: Beyoncé Fails the Bechdel Test!","duration": "13:48","channelName": "fantano","channelUrl": "https://www.youtube.com/@fantano","viewCount": 635379,"fromYTUrl": "https://www.youtube.com/results?search_query=bechdel+test","type": "video","order": 1}
Subtitles
When downloadSubtitles is enabled, the subtitles field contains:
{"subtitles": [{"srtUrl": "https://api.apify.com/v2/key-value-stores/.../records/subtitles_abc_en_auto_generated","type": "auto_generated","language": "en","srt": "1\n00:00:0,320 --> 00:00:4,960\nEver feel like you've been chasing the wrong path?..."}]}
Error items
When the scraper cannot retrieve data for a given input, it pushes an error item to the dataset instead of silently skipping it. You can identify errors by the presence of an error field.
{"url": "https://www.youtube.com/@somechannel","input": "somechannel","error": "CHANNEL_DOES_NOT_EXIST","note": "Channel does not exist"}
Error codes
| Error code | Meaning |
|---|---|
CHANNEL_DOES_NOT_EXIST | Channel URL points to a channel that does not exist |
NOT_FOUND | Page was not found |
VIDEO_UNAVAILABLE | Video is not available (deleted, region-blocked, etc.) |
AGE_RESTRICTED | Video is age-restricted and cannot be accessed without login |
CHANNEL_HAS_NO_VIDEOS | Channel exists but has no uploaded videos |
CHANNEL_HAS_NO_LIVE_VIDEOS | Channel exists but has no live videos |
CHANNEL_HAS_NO_SHORTS | Channel exists but has no Shorts |
DATE_FILTER_TOO_STRICT | Videos exist but none match the active date filter |
NO_VIDEOS | No videos found on the page |
NO_RESULTS | No results collected — check that video-type limits are set above 0 |
NO_VALID_START_URLS | All provided start URLs were invalid or malformed |
INVALID_INPUT | Actor failed due to bad configuration |
FAQ
Can I scrape dislikes from YouTube videos? No. Dislikes are not public information and cannot be scraped.
Can I scrape subtitles from YouTube videos?
Yes. Enable downloadSubtitles in the input to extract both auto-generated and user-uploaded subtitles in SRT, WebVTT, or plain text format.
Can I scrape YouTube Shorts and live streams?
Yes. When scraping by search term, set maxResultsShorts and/or maxResultStreams above 0. When scraping by direct URL, Shorts and live stream URLs are automatically detected.
How to filter videos by date?
When scraping by search term, use searchDateFilter. When scraping by channel URL, use oldestPostDate.
Can I integrate this scraper with other apps? Yes. The Apify platform supports integrations with Make, Zapier, Slack, Google Drive, and many more. You can also use webhooks or the Apify API.