YouTube Scraper API: Videos, Transcripts, Shorts & Channels avatar

YouTube Scraper API: Videos, Transcripts, Shorts & Channels

Pricing

from $1.70 / 1,000 videos

Go to Apify Store
YouTube Scraper API: Videos, Transcripts, Shorts & Channels

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

Saulius AutomatesIT

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

12 hours ago

Last modified

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 v3This Actor
SetupGoogle Cloud project, API keyan Apify token
Daily limit10,000 quota units; one search costs 100, so about 100 searches a day. More needs Google's quota auditnone
Search filtersyessort by date, views or rating; upload date; duration
Like count, tags, categoryyes, with a second call per batchin every row
Transcriptsonly for videos you ownany video with captions, included in the price
Pricefree 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

  1. Put keywords in Search queries, or paste URLs in YouTube URLs: videos, Shorts, channels (@handle, /channel/UC...), playlists or search pages.
  2. Set Max videos per input (default 50, up to 5,000 per search, playlist or channel tab).
  3. Optional: sort and filter searches; choose videos, shorts and/or streams for channels.
  4. 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"
}
  • type is video, short or stream (a live stream, live now or finished).
  • Channel inputs add channelSubscribers, channelSubscribersText and channelVideoCount (YouTube shows subscribers rounded, such as 21.3M). Playlist inputs add playlistId and playlistTitle.
  • position is the video's place in the search results, channel tab or playlist.
  • detailsComplete is false on 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 error row and costs nothing.
  • With Include transcripts on, each row adds transcript (plain text), transcriptLanguage and transcriptIsAutoGenerated, plus transcriptSegments (text, start, duration in seconds) when timestamps are on. No captions: transcript is null and transcriptError says 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:

EventPrice
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 ApifyClient
client = 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.

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.