Youtube Channel Videos Scraper avatar

Youtube Channel Videos Scraper

Pricing

$0.75 / 1,000 channel videos

Go to Apify Store
Youtube Channel Videos Scraper

Youtube Channel Videos Scraper

YouTube Channel Videos Scraper is an Apify actor that extracts a channel's videos at scale — latest uploads, popular videos, and filtered ranges — and returns a clean dataset of per-video records suitable for analytics, monitoring, and downstream enrichment.

Pricing

$0.75 / 1,000 channel videos

Rating

5.0

(1)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

32

Total users

3

Monthly active users

17 days ago

Last modified

Share

Extract a channel's videos at scale — latest uploads, popular videos, filtered ranges. Uses YouTube Data API v3 for fast, reliable extraction with pagination up to thousands of videos per channel. No browser or proxy required.

YouTube Channel Videos Scraper

Key Features

  • Channel resolution — Accepts @handle, channel URL, /channel/UC..., /c/custom, /user/legacy
  • Deep pagination — Extract up to 5,000 videos per channel via uploads playlist
  • Statistics enrichment — Views, likes, comments via batched videos.list API calls
  • Content details — Duration, HD/SD, caption flags, licensed content, topic categories
  • Shorts & Live detection — Automatic classification based on duration and broadcast content
  • Date filtering — Filter by publish date range (startDate / endDate)
  • Sorting — Newest, oldest, or most popular (by view count)
  • Multi-channel — Process multiple channels in a single run with cross-channel deduplication
  • Channel profile — Subscriber count, total views/videos, description, country, joined date, avatar & banner per record (no extra API quota)
  • Full enrichment — Descriptions, tags, thumbnails, topic categories, extracted description links, and hashtags always included — nothing to configure
  • Lightweight — No browser needed — runs on apify/actor-node:22
  • Reliable — Graceful per-channel error handling, partial result output, and detailed run summary

Why Choose This Actor?

  • Official API, not scraping — built on the official YouTube Data API v3. No residential proxies, no unofficial endpoints, no browser automation to break when YouTube changes its HTML. That means fewer failed runs and no dependency on a paid proxy plan.
  • Clean, flat, spreadsheet-ready output — a single flat record per video imports straight into Google Sheets, Excel, or a BI tool. No nested unwrapping required.
  • Deep by default — up to 5,000 videos per channel, multiple channels per run, with cross-channel deduplication.
  • Rich per-video metadata — statistics, duration, Shorts/Live flags, tags, topic categories, caption/definition/licensed flags, thumbnails, channel profile, description links, and hashtags — full enrichment on every record, no setup required.
  • Cost control built inmaxVideosPerChannel and maxTotalResults cap how many records a run produces (and bills), even across many channels.
  • Transparent & auditable — every record carries source, runId, sourceChannelRef, and retrievedAt, and each run writes a RUN_SUMMARY.json.

How It Works

  1. Resolve channel — Convert @handle, URL, or channelId to a canonical channelId via channels.list
  2. Get uploads playlist — Fetch the channel's uploads playlist ID via contentDetails
  3. Paginate playlist — Extract video IDs via playlistItems.list (50 per page, up to 5,000)
  4. Enrich videos — Batch enrich with videos.list (50 per call) for stats, duration, descriptions, tags, and topics
  5. Filter & sort — Apply date range, Shorts/Live toggles, and sort order
  6. Output — Push clean per-video records to dataset + write RUN_SUMMARY.json

Input

Channel Settings

FieldTypeDefaultDescription
channelRefsstring[]requiredChannel references: @handle, channel URL, /channel/UC..., /c/customURL
maxVideosPerChannelinteger200Max videos per channel (1–5,000)
maxTotalResultsinteger0Global cap on total videos across all channels (0 = no limit)
includeShortsbooleantrueInclude YouTube Shorts (videos ≤60 seconds)
includeLivebooleanfalseInclude live streams and premieres

Filtering & Sorting

FieldTypeDefaultDescription
startDatestring""Include videos published on/after this date (YYYY-MM-DD)
endDatestring""Include videos published on/before this date (YYYY-MM-DD)
publishedWithinDaysinteger0Only include videos from the last N days (0 = disabled; applied on top of start/end date)
sortBystring"newest"newest / oldest / popular (popular sorts by view count)
dedupeAcrossChannelsbooleantrueSkip duplicate videos across channels

Enrichment — always on

Every run returns the complete record. Channel profile (subscribers, total views/videos, description, country, joined date, avatar, banner), statistics, content details, thumbnails, full description, description links, hashtags, tags, and topic categories are all included automatically — there are no enrichment toggles to set.


Input Examples

Example 1 — Latest 200 videos from a single channel

Fetch the 200 most recent videos from one channel, newest first. Every record comes fully enriched.

{
"channelRefs": [
"@mkbhd"
],
"maxVideosPerChannel": 200,
"includeShorts": true,
"includeLive": false,
"sortBy": "newest",
"dedupeAcrossChannels": true
}

Pull each channel's most-viewed uploads from the last 90 days across three channels, capped at 1,000 total billed records.

{
"channelRefs": [
"@mkbhd",
"https://www.youtube.com/@veritasium",
"UC_x5XG1OV2P6uZZ5FSM9Ttw"
],
"maxVideosPerChannel": 500,
"maxTotalResults": 1000,
"publishedWithinDays": 90,
"includeShorts": true,
"includeLive": true,
"sortBy": "popular",
"dedupeAcrossChannels": true
}

Output

Each video is a flat JSON record with up to 39 fields — full channel and video enrichment is included on every record.

Output Fields

FieldTypeDescription
retrievedAtstringFetch timestamp (ISO 8601)
channelIdstringChannel ID
channelTitlestringChannel name
channelHandlestring@handle
channelUrlstringCanonical channel URL
sourceChannelRefstringThe original input reference that produced this record
channelSubscriberCountintegerChannel subscribers (null if hidden)
channelVideoCountintegerTotal public videos on the channel
channelViewCountintegerTotal channel views
channelCountrystringChannel country code
channelPublishedAtstringChannel creation/joined date (ISO 8601)
channelDescriptionstringChannel "About" text
channelAvatarUrlstringChannel avatar image URL
channelBannerUrlstringChannel banner image URL
videoIdstringVideo ID
videoUrlstringWatch URL or /shorts/ URL
titlestringVideo title
publishedAtstringPublish timestamp (ISO 8601)
publishDatestringYYYY-MM-DD
orderinteger1-based result position within the channel (after sort)
videoTypestringNormalized type: regular / short / live
durationstringISO 8601 duration (e.g., PT12M36S)
durationSecondsintegerDuration in seconds
isShortsbooleanShorts flag (duration ≤60s)
isLivebooleanLive/premiere indicator
viewCountintegerViews
likeCountintegerLikes (may be hidden)
commentCountintegerComments (may be disabled)
thumbnailsobjectThumbnail URLs (default/medium/high/standard/maxres)
descriptionstringFull video description
descriptionLinksobject[]Links extracted from the description ({ url, text })
hashtagsstring[]Hashtags extracted from the title + description
tagsstring[]Video tags
definitionstringhd / sd
captionstringtrue / false
licensedContentbooleanLicensing flag
topicCategoriesstring[]Wikipedia topic category URLs
sourcestringapi or api_partial
runIdstringApify run ID

Output Example

Output — All Fields Table View


Export Formats

Results are stored in an Apify dataset and can be exported in one click to JSON, CSV, Excel, XML, or HTML, or pulled programmatically via the Apify API and the Python / JavaScript clients. The flat record structure maps cleanly to spreadsheet columns.


Pricing

This Actor uses pay-per-event billing — you are charged per video record emitted. Failed channels emit an error item and are not charged.

Example costs at $0.75 / 1,000 videos (see the Actor's Pricing tab on Apify for the current rate):

ScenarioVideosEst. cost
1 channel × 200 videos200~$0.15
5 channels × 200 videos1,000~$0.75
1 channel × 1,000 videos1,000~$0.75
10 channels × 500 videos5,000~$3.75

Use maxTotalResults to hard-cap the number of billed records on large multi-channel runs.


Performance

ScenarioTypical Time
1 channel x 200 videos~30–90 seconds
10 channels x 200 videos~5–15 minutes
1 channel x 5,000 videos~10–40 minutes

Run Summary

Each run saves RUN_SUMMARY.json to the Key-Value Store with:

  • Total channels processed / failed
  • Total videos emitted
  • Per-channel video counts
  • Errors by channel
  • API call count and quota usage
  • Start and completion timestamps

Error Items

If a channel can't be resolved or processed, the Actor pushes a distinct error item to the dataset instead of failing the whole run (and does not charge for it):

{
"isError": true,
"sourceChannelRef": "@this-channel-does-not-exist",
"error": "Could not resolve channel: \"@this-channel-does-not-exist\"",
"retrievedAt": "2026-07-09T05:00:00.000Z",
"runId": "JxebN0GRa9nkLuhDa"
}

Filter these out with isError (or keep them to audit which inputs failed).


Use Cases

  • Competitor analysis — Export and compare video catalogs across channels
  • Content audits — Analyze upload frequency, Shorts vs long-form ratio, and engagement
  • Dataset generation — Build research datasets of niche channels
  • Marketing research — Identify trending topics and high-performing content
  • Monitoring & alerts — Track new uploads from partner/influencer channels
  • Watchlist building — Create video lists for further scraping (comments, transcripts, etc.)

Limitations

  • Uploads playlist only — Private and unlisted videos are excluded (YouTube API limitation)
  • Shorts detection — Based on duration heuristic (≤60s); may not catch all edge cases
  • Live detection — Only detects currently live or upcoming; past live streams show as false
  • Hidden stats — Like count and comment count may be null if the creator has hidden them; channelSubscriberCount is null when the channel hides its subscriber count
  • No verification flag — The official YouTube Data API does not expose a channel "verified" status, so it is not included
  • Sequential processing — Channels are processed one at a time (concurrent processing planned for a future release)

FAQ

Is this legal? The Actor reads only publicly available channel and video data through the official YouTube Data API v3. It does not access private, deleted, or unlisted videos, and it collects no private personal data.

Do I need a proxy? No. Because it uses the official API, there is no proxy or residential-IP requirement and no proxy plan to pay for.

Do I need my own API key? No. The Actor is ready to run out of the box — you don't need to provide, configure, or manage anything.

Is there a limit on how many videos I can pull? Up to 5,000 per channel per run, across as many channels as you like. Very large runs may be subject to YouTube's daily API limits; if a job reaches that ceiling it can be continued the next day.

Why is likeCount or commentCount sometimes empty? The creator has hidden likes, or disabled comments — YouTube then returns no value.

How do I control cost? Use maxVideosPerChannel and maxTotalResults to cap how many videos (and therefore billed records) a run produces.

Which export formats are supported? JSON, CSV, Excel, XML, and HTML — plus the Apify API and Python/JS clients.


Support & Feedback

If you encounter any issues or have feature requests, please open an issue on GitHub.