YouTube Channel Scraper avatar

YouTube Channel Scraper

Pricing

$1.00 / 1,000 results

Go to Apify Store
YouTube Channel Scraper

YouTube Channel Scraper

Collect public YouTube channel profiles, videos, Shorts, and streams. Export channel statistics, video titles, views, dates, durations, thumbnails, and optional descriptions.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

Scrape public YouTube channel profiles, regular videos, Shorts, and streams from one or many channel URLs. Export YouTube channel data to CSV, JSON, or Excel, including subscriber counts, channel views, video titles, view counts, dates, durations, thumbnails, and optional video descriptions. It works as a YouTube API alternative for public channel research without requiring a data API key.

A channel URL is enough to start. Set a separate limit for each video type, choose Newest, Popular, or Oldest, and receive one dataset row per result. Set all three type limits to zero when you need one profile row per channel. The output uses stable field names so recurring runs can be compared or loaded into a database.

What data can you extract from YouTube?

Each video row repeats the public channel fields. This makes CSV exports useful without joining a separate profile table. Counts displayed in shortened form by YouTube are approximate; the original label is retained beside the numeric value. Fields that the site does not expose for a particular row are null or an empty list.

FieldDescriptionExample
idVideo ID, or channel ID in profile-only modeIwZVXmQdX1E
titleVideo, Short, or stream titleNASA Moon Base: The First Six Months
durationList-page duration where shown1:07
dateDate label displayed on the channel tab2w ago
publishedAtExact date when video details are enabled and available2026-09-08
urlDirect public URL of the resulthttps://www.youtube.com/watch?v=IwZVXmQdX1E
viewCountNumeric view count, approximate unless detail data supplies a precise count502000
viewCountTextOriginal displayed view label502K
fromYTUrlChannel tab used to find the itemhttps://www.youtube.com/@NASA/videos
typeRecord kindvideo
thumbnailUrlPublic thumbnail addresshttps://i.ytimg.com/vi/IwZVXmQdX1E/hq720.jpg
orderZero-based position within a channel and type0
videoDescriptionPublic video description when details are enabledNo aim is too high...
videoDescriptionLinksURLs linked from that description[]
channelIdStable public channel IDUCLA_DiR1FfKNvjuUpBHmylQ
channelNameDisplayed channel nameNASA
channelUsernameHandle without the at signNASA
channelUrlCanonical channel URLhttps://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ
channelDescriptionPublic channel biographyNASA's mission is to pioneer...
channelDescriptionLinksPublic links in the channel profilehttps://www.nasa.gov
channelJoinedDateJoin date as displayedJun 3, 2008
channelLocationPublic location if presentnull
channelAvatarUrlPublic avatar addresshttps://yt3.googleusercontent.com/...
channelBannerUrlPublic banner addresshttps://yt3.googleusercontent.com/...
channelTotalVideosTotal count shown on the About page6175
channelTotalViewsTotal channel views shown on the About page1123352904
numberOfSubscribersNumeric approximation of the subscriber label15100000
subscriberCountTextOriginal subscriber label15.1M subscribers
isChannelVerifiedWhether a verified badge appears in the headertrue
isAgeRestrictedAge restriction status when it can be determinednull
inputNormalized channel URL supplied for the rowhttps://www.youtube.com/@NASA
errorCode on an error row onlyCHANNEL_NOT_FOUND
noteShort explanation on an error row onlyChannel metadata was unavailable

thumbnailUrl values may include image sizing parameters and can change even when the underlying video stays the same. Use id and channelId as durable identifiers. The channelTotalVideos value counts videos shown in the public channel profile; it is not the number of rows requested for this run. Subscriber counts are frequently rounded by the site, so 15100000 represents the displayed 15.1M, not a precise private count.

How to scrape YouTube channels

  1. Add one or more public channel URLs to Channel URLs. Handles such as https://www.youtube.com/@NASA, /channel/ URLs, and legacy /c/ and /user/ paths are accepted.
  2. Choose limits for regular videos, Shorts, and streams. A limit applies separately to every channel. Keep unused types at zero. For a profile-only export, set all three limits to zero.
  3. Select Newest, Popular, or Oldest. If you need descriptions, linked URLs, and exact publication dates, turn on Include video details.
  4. Start the actor and open its default dataset when it finishes. Download JSON, CSV, or Excel, or read the dataset through the API.

For a recurring report, save the same input and run it on a schedule. Compare rows by channelId and id. A video can move between lists as a channel changes its layout or popularity ranking, so the visible position is a snapshot, not an identifier.

Input

ParameterTypeDefaultDescription
startUrlsURL listRequiredPublic channel URLs. Multiple channels can be entered in one run.
maxResultsInteger10Maximum regular videos per channel; 0 skips videos.
maxResultsShortsInteger0Maximum Shorts per channel; 0 skips Shorts.
maxResultStreamsInteger0Maximum streams per channel; 0 skips streams.
sortVideosByStringNEWESTNEWEST, POPULAR, or OLDEST on each requested tab.
oldestPostDateStringEmptyEarliest date for regular videos and streams, as YYYY-MM-DD or a relative age such as 30 days.
includeVideoDetailsBooleanfalseRead each result's public watch page for description, links, exact date, and a more precise view count.
maxItemsInteger0Total output cap across all channels; 0 has no global cap.
proxyConfigurationObjectPublic proxyProxy configuration for channel and video pages.

A realistic input for a first run is:

{
"startUrls": [{"url": "https://www.youtube.com/@NASA"}],
"maxResults": 35,
"maxResultsShorts": 0,
"maxResultStreams": 0,
"sortVideosBy": "NEWEST",
"includeVideoDetails": false
}

The three per-type limits are requested independently for each channel. With two channels and limits of 10 videos and 5 Shorts, the run may return up to 30 rows if both channels have enough public items. maxItems can stop the entire run earlier. When every per-type limit is zero, the actor returns one row with type: "channel" for each valid channel. That row contains the channel profile fields and the channel URL.

Output example

This item came from a successful 35-video run on September 27, 2026. Long description and image URLs are shortened here; the dataset contains the complete values.

{
"id": "IwZVXmQdX1E",
"title": "NASA Moon Base: The First Six Months",
"duration": "1:07",
"date": "2w ago",
"publishedAt": null,
"url": "https://www.youtube.com/watch?v=IwZVXmQdX1E",
"viewCount": 502000,
"viewCountText": "502K",
"fromYTUrl": "https://www.youtube.com/@NASA/videos",
"type": "video",
"order": 0,
"channelId": "UCLA_DiR1FfKNvjuUpBHmylQ",
"channelName": "NASA",
"channelUsername": "NASA",
"channelUrl": "https://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ",
"channelJoinedDate": "Jun 3, 2008",
"channelTotalVideos": 6175,
"channelTotalViews": 1123352904,
"numberOfSubscribers": 15100000,
"subscriberCountText": "15.1M subscribers",
"isChannelVerified": true,
"input": "https://www.youtube.com/@NASA"
}

The default dataset is a flat table. Profile details repeat on video rows to make each exported record self-contained. If an input URL cannot be resolved, an error row identifies that input instead of silently dropping it. Normal rows have no error field. Check for that field before treating every row as a video.

Use cases

  • Channel monitoring: record new uploads, Shorts, and streams on a schedule, then compare video IDs and publication dates between runs.
  • Content research: compare titles, durations, and view labels within the same channel or across several public channels.
  • Campaign reporting: attach public channel and video URLs to a campaign report and track view-count changes over time.
  • Publisher catalogs: build a list of public videos from a collection of channel handles, with stable IDs and thumbnail references.
  • Audience research: compare public subscriber labels, channel descriptions, and external profile links across a selected set of channels.
  • Editorial planning: inspect Popular and Oldest lists beside recent uploads to understand which public formats remain visible over time.

The output describes public pages at the moment of collection. A view count can rise, a title can change, and a video can be removed. For repeatable analysis, retain the run date alongside exported data and join records by their IDs.

How much does it cost to scrape YouTube channels?

The configured price is $0.001 per delivered dataset item, or $1.00 per 1,000 results. The event charge applies to each output row, including a profile-only row or an error row. Platform usage is included in the event price shown for this actor. The configured price should be checked on the pricing tab before a large production run because it can change.

For example, 100 rows cost $0.10 in result charges. A 1,000-row export costs $1.00, and 5,000 rows cost $5.00. If a global limit stops a run at 250 rows, the result charge is $0.25 even when the sum of per-channel limits is higher. A profile-only run with 25 valid channels produces 25 rows and costs $0.025 in result charges.

Include video details does not add a separate per-row event charge, but it requests one additional public page for each selected video. It can increase runtime. The fast list-only mode is a good starting point for broad channel inventories; request details when exact dates or description links matter to the analysis.

Tips for best results

Start with a small limit on one channel and inspect the fields you intend to use. Increase maxResults after checking whether the channel has enough public uploads. Set the unused type limits to zero so the run does not fetch tabs you do not need. The default input collects regular videos only, which keeps the initial result focused.

Use a channel URL or handle rather than a watch URL. A watch URL identifies one video, while this actor starts from a channel profile. /channel/ URLs are useful when a channel handle changes because the channel ID is stable. You can mix handle and ID URLs in one input; duplicate normalized URLs are skipped within a run.

For current uploads, leave sorting at NEWEST. For a historical catalog, OLDEST can surface early uploads; POPULAR displays the site's ranking at collection time. Sorting is read from the public tab controls, so a channel without a requested control may fall back to its visible list. A date filter works on regular videos and streams. It is most efficient with NEWEST, where collection can stop once older items are reached.

Turn on includeVideoDetails when the precise publication date or public description links are needed. The list view often shows labels such as 2w ago and rounded counts such as 502K; the additional page can provide 2026-09-08 and a more precise count. The channel profile itself is collected separately from the video lists, so all video rows carry the same channel context.

Limits

Only publicly visible channel and video data is collected. Private, deleted, login-only, or region-restricted material may be absent. Some public pages can show a sign-in prompt in the player response; the channel list and, when present, structured watch-page data can still expose public metadata. If a needed field is not present in those public records, it remains null.

YouTube may round subscriber and list-page view counts. The numeric fields convert the displayed abbreviations for sorting and filtering, but they should not be treated as exact measurements. subscriberCountText and viewCountText preserve the source labels. The About page may omit a channel location; channelLocation is then null. Age restriction is not reliably indicated by a standard public channel field, so isAgeRestricted can also be null.

Shorts list entries may omit dates and durations. The oldestPostDate filter does not apply to Shorts. On the channel examined during development, the initial Shorts list contained 40 entries and did not provide a next-page token, so requesting more may still return only the available initial batch. Regular video and stream lists supplied browse continuation tokens and were paged in the verified runs. Other channels or future site layouts can differ.

The date filter uses the public list label where possible and an exact date from a watch page when needed. Relative labels have limited precision near a cutoff. For strict day-level reporting, enable video details and inspect publishedAt. A Popular or Oldest list is ranked by the site; it is not a full archive guarantee, and output may end when the site stops providing continuation data.

Use with MCP

The input and output schemas expose the channel URL list, per-type limits, sort order, and optional details. An MCP client can run the actor and read its dataset without manual export. Two useful prompts are:

Collect the 50 newest public videos from this channel URL and return their titles, URLs, publication labels, and view counts.

Compare the 20 most popular videos and 20 most popular Shorts from these two channel URLs. Keep the channel ID and video ID in each row.

For follow-up requests, specify whether approximate list counts are acceptable or whether exact video dates and public description links are required. The latter requires includeVideoDetails: true and takes longer.

FAQ

The actor reads public pages. Whether a particular use is permitted depends on applicable law, site terms, and the way the data will be used. Respect privacy and intellectual-property rights. Do not use public profile or video information to infer private attributes or misuse personal data. Obtain appropriate advice for regulated or high-impact uses.

Do I need a data API key or a proxy?

No data API key is needed. The actor uses public channel pages and their browse responses. A proxy is configured by default for reliable access from the platform. The fetch layer starts with a standard proxy and can escalate after repeated blocks. Network conditions and site controls can change, so no access method is guaranteed for every channel.

How fast is a run?

Runtime depends on the number of channels, selected types, continuation pages, and whether video details are enabled. A verified 35-video list-only run completed successfully in roughly ten seconds of remote run time. A detail-enabled run reads a public watch page for every selected video and takes longer. Large exports and transient network retries can add time.

Can I schedule or monitor repeated runs?

Yes. Save an input configuration and run it on a schedule. Compare id and channelId against prior datasets to find new items. Use the run status and dataset item count for monitoring. A successful run can still return fewer rows than requested when a channel has fewer public items or a tab stops supplying more entries.

Can I export to spreadsheets?

Yes. The default dataset can be exported as CSV or Excel, and its flat channel fields make spreadsheet filtering straightforward. Keep URL and ID columns as text to prevent unwanted formatting. For recurring sheets, append a collection timestamp outside the actor output so snapshots remain distinguishable.

Why is a field empty?

The site may not display it on that page, the content type may not have the field, or the field may require Include video details. Shorts commonly lack list-page dates and durations. Location is often absent from a channel profile. A missing publishedAt in fast mode is expected; the list's date label remains available for regular videos and streams.

How do I get only the channel profile?

Set maxResults, maxResultsShorts, and maxResultStreams to 0. Each valid channel then produces one row with type: "channel", its canonical URL, description, public links, avatar, banner, counts, and other available profile fields. This avoids fetching video tabs when only channel-level information is needed.

Integrations

Use the platform API to start runs and read the default dataset, or connect a completed run to a webhook. Scheduled runs can feed a reporting pipeline through CSV or JSON exports. Integration services can route new dataset rows into a spreadsheet, database, or notification workflow. Keep the stable channel and video IDs in those downstream records so repeated collections can update existing rows cleanly.

Support

Open an issue on the Issues tab; we reply within 24h and add fields on request.