YouTube Channel Scraper - Videos & Shorts avatar

YouTube Channel Scraper - Videos & Shorts

Pricing

from $0.50 / 1,000 video rows

Go to Apify Store
YouTube Channel Scraper - Videos & Shorts

YouTube Channel Scraper - Videos & Shorts

Scrape every video from any YouTube channel with views, duration, publish date and thumbnails, plus a channel summary row: subscribers, total video count, description, keywords, avatar and RSS feed. Long-form uploads, Shorts and past live streams. Date and view filters are free.

Pricing

from $0.50 / 1,000 video rows

Rating

0.0

(0)

Developer

DONGMIN KIM

DONGMIN KIM

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

YouTube Channel Scraper — All Videos, Shorts & Channel Stats

Give it a channel, get back the whole back catalogue: every video with views, duration, publish date and thumbnail, plus a channel summary row with subscriber count, total videos, description, keywords, avatar and RSS feed URL.

Works with @handles, /channel/UC… URLs, and legacy /c/ and /user/ URLs. Multiple channels per run.

What it does well

  • Videos, Shorts and past live streams — pick one tab or scrape all of them.
  • Full pagination — the entire catalogue, not the first 30 videos.
  • Server-side filters — newer than N days, above N views, or under N seconds. Filtered videos are not billed.
  • Shorts get the same depth as videos — the Shorts shelf publishes only id, title and views, so Include details fetches each Short's real length, exact date, description and keywords.
  • Channel summary row — subscribers, video count, description, keywords, avatar, RSS URL.
  • Cheap and stable — this actor only reads listing pages, so it stays on datacenter proxies and rarely gets throttled.

Input

{
"channelUrls": ["@veritasium", "https://www.youtube.com/@3blue1brown"],
"tab": "videos",
"maxVideosPerChannel": 500,
"publishedWithinDays": 90,
"minViewCount": 10000
}

Every option

The same wording you see in the Apify console, with the JSON key for API and MCP callers.

OptionWhat it doesDefault
ChannelschannelUrls (required)@handles, /channel/UC… URLs, or legacy /c/ and /user/ URLs. One row per channel plus one row per video is written to the dataset.
Which videostabLong-form uploads, Shorts, past live streams, or everything."videos"
Max videos per channelmaxVideosPerChannelVideos arrive 30 per request, so this is the main cost control. Leave empty for the full back catalogue.200
Only videos newer than (days)publishedWithinDays0 disables the filter. YouTube only exposes relative dates on listing pages ("3 weeks ago"), so this is approximate to within a day. Filtered videos are not billed.0
Minimum viewsminViewCountDrop videos below this view count. Filtered videos are not billed.0
Maximum length (seconds)maxDurationSeconds0 disables. On the Shorts tab this needs Include details on, because the shelf publishes no length there — it separates true short-form from the 3-minute Shorts YouTube now allows. Long-form videos carry their length already. Filtered videos are not billed.0
Include a channel summary rowincludeChannelRowWrite one row per channel with subscribers, total video count, description, keywords, avatar and RSS URL.true
Include details (length, exact date, description)includeDetailsSpends one extra request per row to fetch real length, exact publish date, description and keywords. Shorts need it — that shelf publishes only id, title and views — while long-form videos already arrive with length and an approximate date. The date costs one further request, because YouTube returns the upload date only to a different client.false
ConcurrencyconcurrencyHow many channels to read in parallel.3
ProxyproxyConfigurationLeave the default. This actor only reads listing pages, so it almost always stays on cheap datacenter proxies.{"useApifyProxy":true}

Output

Two row types share one dataset, told apart by type.

One channel row:

{
"type": "channel",
"channelId": "UCHnyfMqiRRG1u-2MsSQLbXA",
"channelName": "Veritasium",
"channelUrl": "https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA",
"handle": "@veritasium",
"handleUrl": "https://www.youtube.com/@veritasium",
"subscriberCount": 21100000,
"subscriberCountText": "21.1M subscribers",
"videoCount": 526,
"description": "An element of truth - videos about science...",
"keywords": "\"science videos\" science \"science education\"...",
"avatarUrl": "https://yt3.googleusercontent.com/...",
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA",
"videosFound": 500
}

Then one row per video:

{
"type": "video",
"videoId": "wt4p2oalmRY",
"url": "https://www.youtube.com/watch?v=wt4p2oalmRY",
"title": "Is spider web really stronger than steel?",
"viewCount": 5500000,
"durationSeconds": 1618,
"publishedText": "9 days ago",
"approxAgeDays": 9,
"thumbnailUrl": "https://i.ytimg.com/vi/wt4p2oalmRY/hqdefault.jpg",
"isShort": false,
"tab": "videos",
"channelId": "UCHnyfMqiRRG1u-2MsSQLbXA",
"channelName": "Veritasium",
"channelUrl": "https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA"
}

Every field

You are billed per row, so here is everything a row can contain. A field is absent when YouTube did not publish it for that channel or video.

FieldRowsWhat it is
typeboth"channel" or "video" — how you split the two shapes apart.
channelIdbothThe UC… id. Stable; handles are not.
channelNamebothDisplay name.
channelUrlbothCanonical /channel/UC… URL, built from the id.
handlechannelThe @handle, when the channel has one.
handleUrlchannelyoutube.com/@handle, or the owner URL when there is no handle.
descriptionchannelThe channel's About text.
keywordschannelThe channel's own keyword string, as YouTube stores it.
subscriberCountchannelParsed from the display text, so it is rounded the way YouTube rounds it.
subscriberCountTextchannelThe unparsed original, e.g. "21.1M subscribers".
videoCountchannelTotal uploads the channel reports — not the number scraped.
avatarUrlchannelLargest available avatar.
rssUrlchannelThe channel's RSS feed, useful for cheap polling between runs.
videosFoundchannelHow many videos this run actually returned for the channel.
videoIdvideoThe 11-character id.
urlvideowatch?v= URL.
titlevideoVideo title.
publishedTextvideoYouTube's relative text, e.g. "9 days ago" — see the note below. Never present on Shorts.
approxAgeDaysvideoAge in days: from publishedAt when details are on, otherwise publishedText converted, accurate to about a day.
publishedAtvideoExact upload timestamp. Only with includeDetails.
durationSecondsvideoLength in seconds.
viewCountvideoViews, parsed from the display text.
thumbnailUrlvideoLargest available thumbnail.
isShortvideotrue when YouTube served the item as a Short.
tabvideoWhich tab it came from: "videos", "shorts" or "live".

A note on dates and Shorts

YouTube's listing pages only expose relative publish text ("3 weeks ago"), not exact timestamps. approxAgeDays converts that for filtering and sorting, but it is accurate to about a day. Switch on Include details for an exact publishedAt, at one extra request per row.

The Shorts shelf is thinner than the videos grid, and it changes what the filters can do. Measured across two channels, twenty Shorts each: videoId, url, title and viewCount came back 20/20, while durationSeconds, publishedText and thumbnailUrl came back 0/20. So on the Shorts tab:

  • Minimum views works as usual — view count is on the shelf.
  • Only videos newer than and Maximum length need Include details, and the run stops with an explanation if you set one without it. A filter that can never fire is worse than no filter.
  • On All tabs, a date or length filter with details off drops every Short and warns you, rather than quietly passing them through unchecked.

Who this is for

  • Competitive analysts — snapshot a rival weekly and diff the results — what they published, what got views, what length they settled on.
  • Influencer sourcers — subscriber counts and output volume across a list of channels, in one table.
  • Data teams feeding other tools — video URLs straight into a transcript, comments or sponsorship run.
  • Archivists — a structured record of a catalogue as it changes.

Common uses

  • Competitor tracking — snapshot a rival channel weekly and diff the results.
  • Content research — find which topics and lengths actually get views in a niche.
  • Influencer sourcing — pull subscriber counts and output volume across a list of channels.
  • Feeding other tools — take the video URLs straight into a transcript or comments run.
  • Archiving — keep a structured record of a catalogue over time.

Pricing

Pay per row delivered — one event per channel summary, one per video. Videos removed by your date or view filters, and failed channels, cost nothing.

Starting a run costs $0.00002 — the platform's $0.00001 minimum, charged once per GB of memory, and these Actors run on 2 GB. That is two cents per thousand runs, and it is the only charge not tied to a row you received.

Other Actors in this family

Same engines, same billing, no account or API key on any of them.

YouTube & video

Search demand

E-commerce

Hiring

FAQ

Will I get blocked, or my account banned? There is no account to ban — no login, no cookies. This one only reads listing pages, which are the cheapest thing YouTube serves and the least defended, so it usually finishes the whole back catalogue without leaving datacenter proxies. YouTube signals throttling with an HTTP 200 and an error body rather than an error code, which is the trap that silently halves most scrapers' results; this one detects it by reason and rotates.

Does it need a YouTube API key? No. The Data API caps at 10,000 quota units/day, which is roughly 100 channel listings; this has no such limit.

Can I get exact publish dates? Not from listing pages — see the note above.

Can I run it on a schedule? Yes, via Apify Schedules, webhooks, or the API. Also available over MCP for AI agents.

Is it legal to scrape a YouTube channel's video list? This reads listing pages YouTube serves publicly, with no login and nothing bypassed, and the fields are facts about videos — titles, view counts, dates — rather than the videos themselves. Public-data scraping is broadly treated as lawful in the US; YouTube's Terms of Service are a separate contract question. Not legal advice.

How much does 1,000 videos cost? $0.50, plus $5.00 per 1,000 channel summary rows and $0.00002 for the run. Videos your date or view filters remove are never billed.

Can I export the results to Excel or Google Sheets? Yes. Every run's dataset downloads as CSV, Excel, JSON, XML or RSS from the Storage tab, or straight from the API if you want a live link a spreadsheet can pull.

Can I connect it to Zapier, Make or n8n? Yes — Apify publishes integrations for all three, plus webhooks that fire when a run finishes. A common setup is a schedule here and a webhook into your own database or Slack.

Do I need to write code? No. Fill the form in the console and press Start. If you do want code, the Apify client libraries for Python and JavaScript call this the same way, and it is available over MCP so an AI agent can call it directly.