YouTube Scraper — Channels, Videos, Shorts & Search avatar

YouTube Scraper — Channels, Videos, Shorts & Search

Pricing

from $1.00 / 1,000 list results

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

YouTube Scraper — Channels, Videos, Shorts & Search

Scrape YouTube search results, channels, Shorts, live streams and playlists, plus optional full video details: views, likes, comments, tags, chapters, subscribers.

Pricing

from $1.00 / 1,000 list results

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

2 days ago

Last modified

Share

Scrape YouTube without an API key or login: search results with YouTube's own filters, channels (subscribers, total views, joined date, country, links, avatar, banner) with all their videos, Shorts and live streams, playlists, and full video details (likes, comment count, exact publish time, duration, tags, category, description, chapters). Export to JSON, CSV or Excel, or pull it through the API into Google Sheets, Make, Zapier, n8n or your own code.

  • Search by keyword with the filters from YouTube's filter menu: type (videos, Shorts, channels, playlists, movies), upload date, duration, features (Live, 4K, HD, Subtitles/CC, Creative Commons, 360°, VR180, 3D, HDR, Location) and popularity.
  • Paste any channel URL (/@handle, /channel/UC..., /c/name) or a bare @handle: one channel row plus the Videos, Shorts and/or Live tab, newest, most popular or oldest first, through every page.
  • Paste playlist URLs for all their videos, or video and Shorts URLs for full details.
  • Pay only for what you get: cheap list rows, and a separate price for videos with full details.
  • Monitoring mode: schedule it and get only new videos, plus channels whose subscriber or video count changed.

What data does YouTube Scraper extract?

Every row has type: video, short, channel or playlist, and id (video, channel or playlist id).

Video and Shorts rows (from searches, channel tabs and playlists):

FieldDescription
videoId, url, titleVideo id, watch or Shorts URL, title
viewCount, viewCountTextViews (YouTube rounds list views, e.g. "1.2M views")
publishedTimeText, publishedAt"7 days ago" as shown, and the approximate date it means (exact with details)
duration, durationSeconds"12:07" and 727
thumbnailUrlLargest thumbnail
isShort, isLive, isUpcoming, scheduledStartTimeShorts / live now / scheduled stream
channelName, channelId, channelHandle, channelUrl, channelIsVerifiedUploader
descriptionSnippet, badgesSearch only: snippet and badges ("4K", "CC", "New")
sourceType, sourceInput, position, searchQuery, channelTab, playlistId, playlistTitleWhere the row came from and its rank

Extra fields with full video details (video URLs, or any list with Full video details on):

FieldDescription
viewCountExact view count
likeCount, commentCount, commentCountTextExact likes; comment count as YouTube shows it ("5.7K")
publishDate, uploadDate, publishedAtExact publish time (2025-10-01T13:41:40-07:00)
description, tags, hashtags, categoryFull description, the uploader's keyword tags, hashtags, category
chapters[{title, startSeconds, start}]
isLiveContent, liveStartTime, liveEndTimeWas or is a live stream, with its times
isFamilySafe, isUnlistedFlags
channelSubscriberCount, channelAvatarUrl, collaboratorsChannel subscribers; co-creators on collaboration videos

Channel rows (one per channel URL; channels found by search have the first block):

FieldDescription
channelId, title, handle, channelUrl, avatarUrl, isVerifiedIdentity
subscriberCount, subscriberCountText, videoCountSubscribers (rounded by YouTube) and number of videos
viewCount, joinedDate, countryTotal channel views, joined date, country (when the channel sets one)
description, links, keywords, bannerUrlAbout text, the links listed on the About panel [{title, url}], channel tags, banner
hasBusinessEmailThe channel has a business email behind YouTube's sign-in + CAPTCHA (the address itself is not collected)

Playlist rows (search): playlistId, url, title, playlistType (Playlist, Course, Mix, Podcast), videoCount, firstVideoId, thumbnailUrl, channel fields.

How to scrape YouTube search results

Add terms to Search terms, pick filters (type, upload date, duration, features, prioritize) and set Max results per search. You can also paste a search URL from your browser (https://www.youtube.com/results?search_query=...&sp=...): the filters in the URL are kept.

{
"searchQueries": ["iphone 17 review"],
"searchType": "video",
"uploadDate": "month",
"features": ["4k"],
"maxResultsPerSource": 100
}

YouTube removed "Last hour" and "Sort by upload date" from search in 2025; for recent videos use Upload date: Today / This week, or monitoring mode.

How to scrape a YouTube channel's videos, Shorts and live streams

Paste channel URLs or @handles into YouTube URLs, choose Channel tabs (Videos, Shorts, Live) and Channel sort (newest, popular, oldest). Each channel gives one channel row and then its videos, page after page, until Max results per ... channel tab (set 10000 for a whole channel). A URL ending in /shorts or /streams scrapes only that tab. Set the limit to 0 to get channel rows only.

{
"urls": ["https://www.youtube.com/@mkbhd", "https://www.youtube.com/@NASA/streams"],
"channelTabs": ["videos", "shorts"],
"channelSort": "popular",
"maxResultsPerSource": 200
}

How to get YouTube video details (likes, comments, tags, chapters)

Video and Shorts URLs always come back with full details. For searches, channels and playlists, turn on Full video details; each video then costs the video-details price instead of the list price.

Output example (shortened):

{
"type": "video",
"id": "rng_yUSwrgU",
"url": "https://www.youtube.com/watch?v=rng_yUSwrgU",
"title": "iPhone 17 Review: No Asterisks!",
"viewCount": 6934137,
"likeCount": 174796,
"commentCount": 5700,
"publishDate": "2025-10-01T13:41:40-07:00",
"durationSeconds": 680,
"category": "Science & Technology",
"tags": ["iPhone 17", "iPhone 17 review", "iPhone 17 vs", "MKBHD"],
"chapters": [{"title": "The customer's dilemma", "startSeconds": 0, "start": "0:00"},
{"title": "Recommendation and value", "startSeconds": 69, "start": "1:09"}],
"isShort": false,
"channelName": "Marques Brownlee",
"channelHandle": "@mkbhd",
"channelSubscriberCount": 21400000,
"sourceType": "search",
"searchQuery": "iphone 17 review",
"position": 1
}

Channel row example (shortened):

{
"type": "channel",
"channelId": "UCHnyfMqiRRG1u-2MsSQLbXA",
"title": "Veritasium",
"handle": "@veritasium",
"subscriberCount": 21300000,
"videoCount": 539,
"viewCount": 4652811692,
"joinedDate": "2010-07-21",
"country": "United States",
"links": [{"title": "Patreon", "url": "https://patreon.com/veritasium"}],
"isVerified": true
}

Monitor changes on a schedule

Turn on Only new or changed items and save the input as a task with a Schedule (Apify Console → Save as task → Schedules). Each run remembers what earlier runs returned and outputs only new videos, Shorts and playlists, plus channel rows whose subscriber or video count changed; unchanged items are not output and not charged, and channel tabs stop paging at the first page that holds a video it has already seen. New rows carry changeType: "new"; changed channel rows carry changeType: "changed" and previousValues with the old counts. Use Monitoring key to keep several schedules on the same input apart.

How much does it cost to scrape YouTube?

Pay per result, no subscription:

  • List result: $0.001 — a video, Short, playlist or channel row from a search, channel tab or playlist (channel rows include the About panel).
  • Video with full details: $0.003 — replaces the list price for that video.

Platform usage is billed by Apify separately and is small: about $0.01 per 1,000 list rows on the default datacenter proxy, and about $0.10 per 1,000 detailed videos (mostly the residential proxy traffic described below).

Does it work without login or an API key?

Yes. It reads the same public data the YouTube website shows to a signed-out visitor, with no login, cookies or YouTube Data API quota. Proxy note: search, channel, playlist and video pages go through Apify Proxy (datacenter). For full video details, one small request (about 10 KB) per video goes through Apify RESIDENTIAL proxy, because YouTube asks datacenter IPs to sign in before it shows duration, tags and category; that is roughly $0.0001 of proxy traffic per video on your Apify account. If residential proxy is not available on your plan, the other details are still delivered.

Limits

  • No video or audio download, no comments text (see YouTube Comments Scraper), no transcripts (see YouTube Transcript Scraper).
  • Members-only, private and age-restricted videos need a login and are skipped.
  • List view counts and subscriber counts are rounded by YouTube ("1.2M"); detailed rows have exact views and likes. Comment counts are as YouTube shows them ("2.4M").
  • Business emails behind "Sign in to see email address" are not collected.

This Actor collects only publicly visible data: video and channel metadata, public channel names and handles, and the links channels publish on their About panel. It does not log in, solve CAPTCHAs or collect hidden contact data. You are responsible for how you use the data and for complying with YouTube's terms and the laws that apply to you (for example GDPR when you process data about people).

Integrations and API

Run it from the Apify API, the Python or JavaScript client, or connect it to Make, Zapier, n8n, Google Sheets and webhooks. The API tab has ready-made snippets.

Support

Found a bug or need a field? Open an issue in the Issues tab; it is usually answered within a day.