YouTube Scraper — Videos, Channels, Shorts & Search avatar

YouTube Scraper — Videos, Channels, Shorts & Search

Pricing

from $0.90 / 1,000 results

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

YouTube Scraper — Videos, Channels, Shorts & Search

Scrape YouTube search results (with filters), channel info, a channel's videos, Shorts and live streams, playlists and full video details (likes, tags, chapters, exact date). No API key. From $1.50 per 1,000 results.

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

Zee Lex

Zee Lex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape public YouTube data without an API key or quota. The scraper covers:

  • search results, with YouTube's own filters
  • channel info: subscribers, total views, joined date, country, links
  • a channel's videos, Shorts and live streams
  • playlists
  • full video details: description, tags, exact publish date, likes, comment count, chapters and captions

It uses plain HTTP and YouTube's own InnerTube API, with no browser, so it is fast and runs at 512 MB.

What you get

Item typeWhenMain fields
video / shortsearch, channel tabs, playlists, video URLstitle, channel (name, ID, handle, verified), views, duration, published time + date, thumbnail, live/upcoming/members-only flags, badges, snippet, source, position
same + detailsincludeVideoDetails: truedescription, likeCount, commentCount, tags, keywords, category, chapters, isFamilySafe, availableCountriesCount, hasCaptions; exact publishedAt
channelchannel URLs (includeChannelInfo), channel searchhandle, title, description, subscribers, total videos, total views, joined date, country, verified, avatar, banner, links, keywords
playlistplaylist URLs, playlist searchtitle, channel, video count, thumbnail
status (free)inputs that can't be scrapednot_found, private, unavailable (terminated, members-only), age_restricted, error

Each run also stores a RUN_SUMMARY record. For every source it gives items saved, pages, blocks, proxy escalations, status and why paging stopped. It also gives totals by type, the percentage of each field that came back empty, and an overall status of ok, partial, no_results or failed.

Input examples

Search with filters: long, HD videos from this month, most viewed first

{
"searchQueries": ["home espresso setup", "latte art tutorial"],
"searchType": "video",
"uploadDate": "month",
"duration": "long",
"sortBy": "views",
"features": ["hd"],
"maxResultsPerQuery": 100
}

A channel's videos and Shorts, with channel info and only uploads from the last 30 days

{
"startUrls": ["https://www.youtube.com/@mkbhd"],
"channelTabs": ["videos", "shorts"],
"maxVideosPerChannel": 50,
"includeChannelInfo": true,
"publishedAfter": "2026-09-28"
}

A playlist

{
"startUrls": ["https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi"],
"maxVideosPerPlaylist": 200
}

A single video with full details

{
"startUrls": ["https://www.youtube.com/watch?v=aircAruvnKk"],
"includeVideoDetails": true
}

startUrls accepts any mix of the following:

  • video URLs: watch?v=, youtu.be/, /shorts/, /live/ and /embed/
  • channel URLs: @handle, /channel/UC…, /c/… and /user/…. Add /videos, /shorts or /streams to scrape just that tab.
  • playlist URLs
  • YouTube search-result URLs, which keep their own sp= filters
  • bare video, playlist or channel IDs, and bare @handles

Output samples

Video with details (includeVideoDetails: true)

{
"type": "video",
"videoId": "aircAruvnKk",
"url": "https://www.youtube.com/watch?v=aircAruvnKk",
"title": "But what is a neural network? | Deep learning chapter 1",
"channelName": "3Blue1Brown",
"channelId": "UCYO_jab_esuFRV4b17AJtAw",
"channelUrl": "https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw",
"channelHandle": "@3blue1brown",
"isVerifiedChannel": true,
"viewCount": 21034567,
"durationSeconds": 1120,
"durationText": "18:40",
"publishedTimeText": "8 years ago",
"publishedAt": "2017-10-05T15:00:01.000Z",
"publishedAtIsApproximate": false,
"thumbnailUrl": "https://i.ytimg.com/vi/aircAruvnKk/hqdefault.jpg",
"isLive": false,
"isUpcoming": false,
"isMembersOnly": false,
"badges": ["4K", "CC"],
"descriptionSnippet": "What are the neurons, why are there layers, and what is the math",
"source": "search: neural networks",
"position": 1,
"scrapedAt": "2026-10-28T09:53:33.224Z",
"description": "Home page: https://www.3blue1brown.com …",
"likeCount": 312456,
"commentCount": 12000,
"tags": ["neural networks", "deep learning", "3blue1brown"],
"keywords": "neural networks, deep learning, 3blue1brown",
"category": "Education",
"chapters": [{ "title": "Introduction", "startSeconds": 0 }, { "title": "What are neurons?", "startSeconds": 194 }],
"isFamilySafe": true,
"availableCountriesCount": 3,
"hasCaptions": true
}

Channel

{
"type": "channel",
"channelId": "UCYO_jab_esuFRV4b17AJtAw",
"url": "https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw",
"handle": "@3blue1brown",
"title": "3Blue1Brown",
"description": "3Blue1Brown, by Grant Sanderson, is some combination of math and entertainment…",
"subscriberCount": 7230000,
"videoCount": 212,
"viewCount": 612345678,
"joinedAt": "2015-03-04",
"country": "United States",
"isVerified": true,
"avatarUrl": "https://yt3.googleusercontent.com/…",
"bannerUrl": "https://yt3.googleusercontent.com/…",
"links": [{ "title": "Patreon", "url": "https://www.patreon.com/3blue1brown" }],
"keywords": ["Mathematics", "linear algebra", "calculus"]
}

Playlist and status items

{ "type": "playlist", "playlistId": "PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi", "url": "https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi", "title": "Neural networks", "channelName": "3Blue1Brown", "channelId": "UCYO_jab_esuFRV4b17AJtAw", "videoCount": 8, "thumbnailUrl": "https://i.ytimg.com/vi/aircAruvnKk/hqdefault.jpg" }
{ "type": "status", "input": "https://www.youtube.com/@doesnotexist", "status": "not_found", "message": "Channel not found (HTTP 404)." }

Use cases

  • Influencer research: search a niche with searchType: "channel", then pull subscribers, views, country and links for each channel.
  • Competitor tracking: schedule a weekly run on competitors' channels with publishedAfter so you only get new uploads, Shorts and streams.
  • Content strategy: compare titles, durations, views and upload times across the top results for your keywords.
  • Lead lists: export channel handles, countries and the business and social links from the About panel.
  • AI datasets: collect titles, descriptions, tags and chapters at scale, deduplicated by video ID.

Limitations

  • Only public data is collected. Private, members-only, age-restricted and removed videos come back as free status items when you give them directly. In lists they are skipped or flagged with isMembersOnly.
  • List dates are approximate. Search results, channel tabs and playlists only show "3 weeks ago", so publishedAt is estimated and publishedAtIsApproximate is true. Turn on includeVideoDetails to get the exact date.
  • How publishedAfter behaves depends on where the video comes from:
    • Channel tabs: paging stops at the first older video.
    • Searches: older videos are only filtered out. Paging gives up after 3 pages in a row with nothing new.
    • Shorts: lists show no date, so Shorts are only filtered when includeVideoDetails is on.
    • Playlists and direct video URLs: the filter isn't applied.
  • Duration filter: YouTube's buckets are under 3 minutes, 3–20 minutes and over 20 minutes.
  • Sorting: YouTube search now only supports Relevance and Popularity (view count). For the newest videos, use the uploadDate filter (last hour, today, this week…).
  • maxVideosPerChannel applies per tab. Videos plus Shorts can give up to twice that number per channel.
  • Shorts in lists have no duration or date. Live streams show concurrent viewers instead of total views.
  • YouTube changes its page layout often. All layout knowledge is kept in src/mappings.ts, so a change usually needs a small edit to that one file.
  • Blocking: heavy runs can trigger YouTube's bot check. Blocked requests are retried on a fresh session with exponential backoff. From the second retry they move to RESIDENTIAL proxy, up to 4 retries. If RUN_SUMMARY shows many blocks, lower maxConcurrency.

Pricing

Pay per event, with lower prices on higher Apify plans:

EventFreeBronzeSilverGold+
result: per 1,000 videos, Shorts, channels or playlists$1.50$1.30$1.10$0.90
video-details: per 1,000 videos enriched from the watch page (only with includeVideoDetails)$1.00$0.90$0.80$0.70
  • status items are free (private, removed, not found).
  • Example: 1,000 search results cost $1.50; with full details, $2.50. That is cheaper than most YouTube scrapers on the Store.
  • The run stops cleanly once your maximum charge is reached.