YouTube Scraper API: Videos, Shorts, Channels & Search
Pricing
from $1.70 / 1,000 videos
YouTube Scraper API: Videos, Shorts, Channels & Search
Scrape YouTube videos, Shorts and live streams from search results, channels and playlists. Exact views, likes, publish date, duration, category, tags, hashtags and description for every video. No API key, no quota, no login; also via MCP. $2 per 1,000 videos.
Pricing
from $1.70 / 1,000 videos
Rating
0.0
(0)
Developer
Saulius AutomatesIT
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Scrape YouTube search results, whole channels, playlists and single videos or Shorts. Every video comes back with exact view count, like count, publish date, duration, category, tags, hashtags, description and channel. Channel inputs also give the channel's subscriber count.
No YouTube API key, no daily quota, no login, no browser. $2 per 1,000 videos.
What you can use it for
- Content and competitor research: every video a channel has published, with views and likes, to see what works.
- Keyword and trend research: the top videos for any search term, newest first or most viewed, filtered by upload date and length.
- Influencer discovery: search a niche and get the channels behind the videos that rank.
- Shorts research: a channel's Shorts tab, or Short URLs, with views and likes.
- Data for AI agents and dashboards: fresh YouTube metrics through the API, n8n, Make, Zapier or the Apify MCP server.
YouTube Data API vs this Actor
| YouTube Data API v3 | This Actor | |
|---|---|---|
| Setup | Google Cloud project, API key | an Apify token |
| Daily limit | 10,000 quota units; one search costs 100, so about 100 searches a day. More needs Google's quota audit | none |
| Search filters | yes | sort by date, views or rating; upload date; duration |
| Like count, tags, category | yes, with a second call per batch | in every row |
| Price | free within the quota | $2 per 1,000 videos |
If 100 searches a day is enough and you already run a Google Cloud project, use the official API. If you need thousands of videos today, use this Actor.
How to use it
- Put keywords in Search queries, or paste URLs in YouTube URLs: videos, Shorts, channels (
@handle,/channel/UC...), playlists or search pages. - Set Max videos per input (default 50, up to 5,000 per search, playlist or channel tab).
- Optional: sort and filter searches; choose videos, shorts and/or streams for channels.
- Run it and download the results as JSON, CSV or Excel, or read them through the API.
Input example
{"searchQueries": ["web scraping tutorial", "iphone 17 review"],"startUrls": ["https://www.youtube.com/@mkbhd","https://www.youtube.com/playlist?list=PLu0W_9lII9agwh1XjRt242xIpHhPT2llg","https://www.youtube.com/shorts/R6yNUnRXZ64"],"maxResults": 100,"sortBy": "date","uploadDate": "month","channelContent": ["videos", "shorts"]}
Output
One item per video:
{"type": "video","videoId": "u0p_dBCEDs4","url": "https://www.youtube.com/watch?v=u0p_dBCEDs4","title": "How to Cook Pasta Perfectly: Here's Everything You Need to Know","description": "...","viewCount": 3054295,"likeCount": 21908,"durationSeconds": 140,"duration": "2:20","publishedAt": "2013-05-03T07:56:37-07:00","uploadedAt": "2013-05-03T07:56:37-07:00","category": "Howto & Style","keywords": ["Cooking", "pasta", "noodles", "tips", "kitchen", "recipe"],"hashtags": [],"channelId": "UCxAS_aK7sS2x_bqnlJHDSHw","channelName": "America's Test Kitchen","channelHandle": "@AmericasTestKitchen","channelUrl": "https://www.youtube.com/channel/UCxAS_aK7sS2x_bqnlJHDSHw","thumbnailUrl": "https://i.ytimg.com/vi/u0p_dBCEDs4/maxresdefault.jpg","isShort": false,"isLiveContent": false,"isFamilySafe": true,"isUnlisted": false,"detailsComplete": true,"source": "search","input": "cooking pasta","searchQuery": "cooking pasta","position": 8,"scrapedAt": "2026-10-05T18:07:42.808Z"}
typeisvideo,shortorstream(a live stream, live now or finished).- Channel inputs add
channelSubscribers,channelSubscribersTextandchannelVideoCount(YouTube shows subscribers rounded, such as 21.3M). Playlist inputs addplaylistIdandplaylistTitle. positionis the video's place in the search results, channel tab or playlist.detailsCompleteisfalseon the rare row where YouTube refused the full details: views, likes, date, channel and description are still there, but tags, category and exact publish time are not.- A video that is private, deleted or not available gives a free
errorrow and costs nothing.
The run summary (videos delivered, unavailable videos, failures) is saved as OUTPUT in the run's key-value store.
Pricing
Pay per video, no subscription:
| Event | Price |
|---|---|
| Video | $0.002 ($2 per 1,000 videos) |
| Actor start | $0.00005 |
A search with 50 videos costs $0.10. A whole channel with 1,000 videos costs $2. Bronze, Silver and Gold Apify plans get 5%, 10% and 15% off. Proxy and compute are included. Apify's free plan's $5 of monthly credit covers about 2,500 videos.
Use it from code
API (cURL)
curl -X POST "https://api.apify.com/v2/acts/sauliusautomatesit~youtube-scraper-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["web scraping tutorial"], "maxResults": 20}'
Python
$pip install apify-client
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("sauliusautomatesit/youtube-scraper-api").call(run_input={"startUrls": ["https://www.youtube.com/@mkbhd"],"maxResults": 200,})videos = [v for v in client.dataset(run.default_dataset_id).iterate_items() if v["type"] != "error"]for v in sorted(videos, key=lambda v: v["viewCount"] or 0, reverse=True)[:10]:print(v["viewCount"], v["likeCount"], v["title"])
run.default_dataset_id is for apify-client 3.x; on 2.x write run["defaultDatasetId"]. Pass max_total_charge_usd=1 to .call() to cap a run at $1.
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sauliusautomatesit/youtube-scraper-api').call({ searchQueries: ['lofi hip hop'], sortBy: 'views' });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((v) => `${v.viewCount} ${v.url}`));
MCP (Claude, Cursor, any MCP client)
Add https://mcp.apify.com/?tools=sauliusautomatesit/youtube-scraper-api as a remote MCP server and your agent can search YouTube as a tool.
Limits, honestly
- Search returns what YouTube search shows a visitor in the United States, in English. Very deep searches thin out: YouTube usually stops after several hundred results for one query.
- Comment counts are not included. For comments use a comments scraper; for transcripts, see below.
- Subscriber counts come from channel inputs and are rounded by YouTube (21.3M). Search results do not include them.
- Public videos only. No login, so no private, members-only or age-restricted videos.
Related Actors
- YouTube Transcript Scraper: transcripts and subtitles for the same videos, channels and searches, $2.50 per 1,000.
- Google Trends API: search interest over time, including YouTube search.
- Bing Search API: web results for any list of queries.
FAQ
Do I need a YouTube API key or Google account? No. The Actor reads what YouTube shows any visitor.
Is there a daily limit? No quota. Large runs take longer: about 1,000 videos in 6 minutes.
Can I get all videos of a channel? Yes. Paste the channel URL and set Max videos per input to the channel's video count (up to 5,000 per tab). Choose videos, Shorts and live streams separately.
Can I monitor a channel or keyword? Yes. Save the input as a task, sort by upload date, and schedule it.
Is it legal? It collects publicly visible video data. You are responsible for how you use it and for complying with the laws that apply to you.