YouTube Scraper: Search, Channels, Playlists & Video Details
Pricing
from $1.50 / 1,000 video listeds
YouTube Scraper: Search, Channels, Playlists & Video Details
Scrape YouTube without the API or quotas: keyword search with filters, all videos/Shorts/streams of a channel, playlists, and video details (views, likes, duration, publish date, description, tags, subscribers). Export as JSON, CSV or Excel.
Pricing
from $1.50 / 1,000 video listeds
Rating
0.0
(0)
Developer
PulseData
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
7
Monthly active users
an hour ago
Last modified
Categories
Share
YouTube Scraper
YouTube Scraper collects YouTube search results, every video of a channel (Videos, Shorts and Live tabs), every video of a playlist, and full details for single videos. It returns one JSON item per video, channel or playlist with title, views, duration, publish date, channel and thumbnail, and with details also likes, full description, tags, category and the channel's subscriber count. It costs $1 per 1,000 listed items and $2 per 1,000 detailed videos today; from 4 October 2026 the prices change (see Pricing).
No YouTube Data API key is needed and there is no daily quota: the actor reads YouTube's public pages.
Features
- Scrape YouTube search results for any keyword, as videos, channels or playlists, sorted by relevance, upload date, view count or rating, and filtered by upload date (last hour, today, this week, this month, this year).
- Export all videos of a YouTube channel, including the Shorts and Live tabs, with a channel profile item (subscribers, video count, description, handle, avatar, RSS URL).
- Export a YouTube playlist to CSV or Excel, every video with its position in the list.
- Get YouTube video views, likes and tags without the API: exact view count, like count, publish date, full description, keywords, category, duration and channel subscriber count for a list of video URLs.
- Find YouTube channels in a niche by running a search with the result type set to channels.
- Accepts channel URLs (
/@handle,/channel/UC…,/c/name,/user/name) or bare@handles, playlist URLs or IDs, and video URLs in watch,youtu.be, Shorts, embed and live formats.
Use cases
- Keyword and SEO research: see which videos and channels rank for a search term, with their views and upload dates,.
- Competitor tracking: schedule a daily run on a competitor's channel with a small
maxVideosPerChannelto record new uploads and their view counts. - Influencer discovery: search with
searchType: "channel"to list channels on a topic with subscriber counts. - Content audits: pull every video of a channel, sort by views, and compare Shorts against long-form uploads.
- Datasets for AI and analytics: collect video metadata at scale and pass the URLs to the transcript and comments actors listed below.
Input
Search queries, channels, playlists and single videos can be combined in one run.
{"searchQueries": ["python tutorial"],"searchType": "video","searchSort": "view_count","searchUploadDate": "year","maxResultsPerQuery": 100,"channelUrls": ["https://www.youtube.com/@3blue1brown"],"channelTabs": ["videos", "shorts"],"maxVideosPerChannel": 0,"playlistUrls": ["https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi"],"maxVideosPerPlaylist": 0,"videoUrls": ["https://www.youtube.com/watch?v=aircAruvnKk"],"fetchDetailsForListedVideos": false}
| Field | Type | Default | What it does |
|---|---|---|---|
searchQueries | array | [] | Keywords to search, one per line. |
searchType | string | video | video, channel or playlist. |
searchSort | string | relevance | relevance, upload_date, view_count or rating. |
searchUploadDate | string | any | any, hour, today, week, month or year. |
maxResultsPerQuery | integer | 50 | Results per query; 0 means as many as YouTube returns. |
channelUrls | array | [] | Channel URLs or handles. |
channelTabs | array | ["videos"] | Any of videos, shorts, streams. |
maxVideosPerChannel | integer | 100 | Per channel and per tab; 0 means all. |
playlistUrls | array | [] | Playlist URLs or IDs. |
maxVideosPerPlaylist | integer | 0 | 0 means all. |
videoUrls | array | [] | Videos to fetch full details for. |
fetchDetailsForListedVideos | boolean | false | Fetch full details for every video found via search, channels and playlists (one extra request per video). |
concurrency | integer | 5 | Parallel detail requests, 1 to 20. |
proxyConfiguration | object | no proxy | Optional Apify Proxy settings. |
Output
A listed video from a search:
{"type": "video","videoId": "lIId8IDP6TU","url": "https://www.youtube.com/watch?v=lIId8IDP6TU","title": "Lecture 2 : Strings & Conditional Statements | Python Full Course","description": "This lecture was made with a lot of love …","channelName": "Shradha Khapra","channelId": "UC1XBh-m27kkgwLAwu_SRJBg","channelUrl": "https://www.youtube.com/@shradhaKD","channelIsVerified": false,"publishedTimeText": "2 years ago","publishedAt": "2024-08-19T14:10:45.184Z","durationText": "55:41","durationSeconds": 3341,"viewCountText": "6,255,142 views","viewCount": 6255142,"thumbnailUrl": "https://i.ytimg.com/vi/lIId8IDP6TU/hq720.jpg","isLive": false,"badges": [],"source": "search:python tutorial","position": 1}
A detailed video (from videoUrls or with fetchDetailsForListedVideos) adds likeCount, likeCountText, the full description, keywords, category, uploadDate, isFamilySafe, channelSubscriberCount, channelSubscriberCountText and detailed: true, and its publishedAt is the exact publish date.
A channel item (first item for each channel URL):
{"type": "channel","channelId": "UCYO_jab_esuFRV4b17AJtAw","url": "https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw","handle": "@3blue1brown","handleUrl": "https://www.youtube.com/@3blue1brown","title": "3Blue1Brown","description": "…","subscriberCountText": "8.55M subscribers","subscriberCount": 8550000,"videoCountText": "242 videos","videoCount": 242,"avatarUrl": "…","rssUrl": "…","source": "https://www.youtube.com/@3blue1brown"}
Notes on the data:
publishedAton listed videos is computed from YouTube's relative text ("2 years ago"), so it is approximate. Detailed videos carry the exact date.- Items from a channel's Shorts tab contain the title, view count, thumbnail and URL only. Turn on details if you need more fields.
- On channel tabs YouTube does not show the channel on each video card, so channel fields on those items may be empty. The channel item at the start covers it.
- If a search, channel or playlist fails, the dataset gets an item with
type: "error"or anerrorfield explaining why.
Pricing
Pay per event. Current prices:
| Event | Price | Per 1,000 |
|---|---|---|
video-listed (a video from search, channel or playlist) | $0.001 | $1 |
item-listed (a channel or playlist item, including the channel profile item) | $0.001 | $1 |
video-detail (a video with full details) | $0.002 | $2 |
Scheduled price change on 4 October 2026: video-listed becomes $0.0015 ($1.50 per 1,000), item-listed becomes $0.0015 ($1.50 per 1,000), video-detail becomes $0.003 ($3 per 1,000), and a start fee of $0.01 per run (apify-actor-start) is added.
Worked example: one channel with 500 videos in the Videos tab, listed without details, is 1 channel item plus 500 listed videos. Today that costs 501 x $0.001 = $0.50. From 4 October 2026 it costs 501 x $0.0015 + $0.01 = $0.76. The same channel with fetchDetailsForListedVideos on is 500 detailed videos plus the channel item: 500 x $0.002 + $0.001 = $1.001 today, and 500 x $0.003 + $0.0015 + $0.01 = $1.51 (rounded) from 4 October 2026. With details on, a video is charged only the detailed price.
FAQ
Do I need a YouTube Data API key? No. The actor reads YouTube's public pages, so there is no key and no daily quota.
How many search results can I get per query?
Set maxResultsPerQuery to 0 to take everything YouTube returns, usually several hundred. YouTube stops paging at some point, so for broad terms combine searchUploadDate and searchSort or run several related queries.
Can I get the full list of a channel's videos?
Yes. Set maxVideosPerChannel to 0 and choose the tabs (videos, shorts, streams). The limit applies per tab.
What is the difference between listed and detailed videos? Listed items come from search, channel or playlist pages: title, views, duration and an approximate date. Details add the exact publish date, likes, full description, keywords, category and the channel's subscriber count, at the detailed price.
Do I need proxies? Usually not. The actor runs without a proxy and, if YouTube starts returning errors and you have not set a proxy yourself, it switches to Apify residential proxy for the retries.
What can it not do? It does not download video files, and it does not return transcripts or comments (use the sister actors below). It only sees public content, so private videos and members-only content are out of reach.
How do I export or automate it? Download the dataset as JSON, CSV, Excel or other formats, call the actor through the Apify API or SDKs, schedule runs, trigger webhooks, or connect it to Google Sheets, Make, Zapier or n8n. It can also be used as an MCP tool by AI agents.
Example pages
- Export YouTube search results to a spreadsheet
- List every video of a YouTube channel
- Export the videos of a YouTube playlist
- Get views, likes and details for a list of videos
- Scrape all Shorts of a YouTube channel
- YouTube keyword research: what ranks for a search term
- Find this week's most viewed videos on a topic
- Find YouTube channels in a niche
- Track a competitor channel's new uploads
- Find a channel's most viewed videos
Related actors
- YouTube Channel Videos Scraper: a channel-only version of this actor with a shorter input form.
- YouTube Transcript Scraper: transcripts and subtitles for the video URLs this actor returns.
- YouTube Comments Scraper: comments and replies for the same videos.
- Google Ads Transparency Center Scraper: see a brand's YouTube video ads alongside its organic uploads.