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

YouTube Scraper API: Videos, Shorts, Channels & Search

Pricing

from $1.70 / 1,000 videos

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

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

Saulius AutomatesIT

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 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.

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 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
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"]
}

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.

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

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. 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.

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.