YouTube Scraper API: Videos, Transcripts, Shorts & Channels
Pricing
from $1.70 / 1,000 videos
YouTube Scraper API: Videos, Transcripts, Shorts & Channels
YouTube Data API alternative with no quota: a YouTube search API, channel API and video API in one. Videos, Shorts and streams from search, channels and playlists with views, likes, dates, tags and full transcripts at no extra cost. No API key or 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
1
Total users
1
Monthly active users
12 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. Tick Include transcripts and every row also carries the video's full transcript, at no extra cost.
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.
- Transcript datasets for AI and RAG: metadata and full transcript of every video in a channel, playlist or search, in one row per video, for $2 per 1,000.
- 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 |
| Transcripts | only for videos you own | any video with captions, included in the price |
| 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"],"includeTranscripts": true,"transcriptLanguages": ["en"]}
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. - With Include transcripts on, each row adds
transcript(plain text),transcriptLanguageandtranscriptIsAutoGenerated, plustranscriptSegments(text,start,durationin seconds) when timestamps are on. No captions:transcriptis null andtranscriptErrorsays why. The Transcripts tab of the dataset shows them as a table.
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 |
Transcripts are included: a video with its transcript is still $0.002. 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.
- Transcripts come from the video's captions (uploaded or YouTube's auto captions) as plain text, with optional timestamps. Videos without captions get
transcriptError: NO_CAPTIONS. For SRT, VTT, chunked text or speech to text on videos without captions, use YouTube Transcript Scraper 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: transcript specialist: SRT, VTT, clean text and chunks for RAG, language fallback, $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 get transcripts too? Yes. Turn on Include transcripts. Each video row gets transcript, transcriptLanguage and transcriptIsAutoGenerated; turn on add timestamps for every caption line with its start time. No extra charge.
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.