YouTube Channel Videos Shorts and Live Stream Scraper avatar

YouTube Channel Videos Shorts and Live Stream Scraper

Pricing

from $0.80 / 1,000 basic content results

Go to Apify Store
YouTube Channel Videos Shorts and Live Stream Scraper

YouTube Channel Videos Shorts and Live Stream Scraper

Export public videos, native Shorts, scheduled live streams, active broadcasts, and replays from YouTube channels. Accept channel URLs, IDs, handles, and usernames; use YouTube's native Latest, Popular, or Oldest ordering; and choose fast inventory or full metadata. No YouTube API key required.

Pricing

from $0.80 / 1,000 basic content results

Rating

0.0

(0)

Developer

Arjun AI

Arjun AI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share

Export YouTube channel videos, Shorts, and streams

Export the public content inventory of one or more YouTube channels from a channel URL, channel ID, @handle, or username. Select standard videos, native Shorts, streams, or any combination, then use YouTube's native Latest, Popular, or Oldest ordering.

Choose Basic inventory for fast channel exports or Full details for descriptions, exact dates when available, engagement metrics, tags, categories, chapters, availability, caption-language lists, and other public content metadata.

No YouTube Data API key is required. The Actor extracts metadata only; it does not download video or audio files.

This is an unofficial Actor and is not affiliated with, endorsed by, or sponsored by YouTube or Google. It collects publicly accessible metadata only.

Ready-to-run examples

What you can do

  • Export recent, popular, oldest, or complete public channel inventories.
  • Keep videos, Shorts, and live content separated by recordType.
  • Include scheduled streams, active broadcasts, and completed live replays.
  • Build content archives, monitoring feeds, creator datasets, and research pipelines.
  • Use Basic for high-volume inventory or Full for per-item detail enrichment.
  • Receive a visible status row when a channel input or selected tab cannot produce content.

How it works

  1. The Actor resolves each channel input and opens the selected channel tabs.
  2. Latest uses the initial tab order. Popular and Oldest follow the sorting command returned by YouTube.
  3. Browse continuation tokens are followed until the per-type limit is reached or the tab is exhausted.
  4. Results are classified as video, short, or stream, deduplicated by video ID, and kept in YouTube's returned order.
  5. Basic writes channel-tab metadata directly. Full additionally opens every selected content item for detail extraction.

Popular and Oldest are server-side YouTube orderings. The Actor does not download a whole channel and sort it locally. The first selected tab also supplies the channel summary, so no separate About-page request is made.

Input reference

FieldTypeDefaultBehavior
channelsstring[]https://www.youtube.com/@NASA1–10 unique channel URLs, IDs, handles, or usernames.
contentTypesstring[]videos, shorts, streamsSelect one or more content tabs. Only selected types are requested.
maxResultsPerTypeinteger5Limit per selected type and channel. Use 0 for all public items from every selected tab. Maximum positive value: 10,000.
sortBystringlatestlatest, popular, or oldest, using YouTube's native channel-tab order.
detailLevelstringbasicbasic for fast inventory or full for per-item detail enrichment.

Supported channel inputs

https://www.youtube.com/@NASA
https://www.youtube.com/@NASA/videos
https://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ
@NASA
UCLA_DiR1FfKNvjuUpBHmylQ
NASA

Content types

  • videos — standard uploads from the Videos tab.
  • shorts — native YouTube Shorts from the Shorts tab.
  • streams — scheduled streams, broadcasts happening now, and completed streams that remain watchable as replays.

maxResultsPerType applies only to selected types. For example, contentTypes: ["videos", "shorts"] with maxResultsPerType: 50 can return up to 50 videos and 50 Shorts per channel. A limit of 0 means all—it does not disable the type. Deselect a type when you do not want it.

Basic versus Full

CapabilityBasicFull
Channel-tab title, URL, thumbnail, visible views, duration, relative dateYes, when exposed on the cardYes
Channel ID, name, handle, URL, description, avatar, subscribers, verificationYesYes
Per-content descriptionNoYes, when exposed
Exact publication timestampNo; an approximate value can be derived from relative textYes, when exposed; otherwise preserves the Basic approximation
Likes, comment count, tags, categories, chapters, language, availabilityNoYes, when exposed
Caption-language availability and media/release metadataNoYes, when exposed
Additional request per content itemNoYes

Basic is recommended for large or complete inventories. publishedAt in Basic is an approximate conversion of publishedTimeText, calculated relative to scrapedAt; it is not an exact timestamp supplied by YouTube. Full prefers an exact timestamp from the detail response and otherwise keeps the Basic approximation.

Input examples

Fast default inventory

{
"channels": [
"https://www.youtube.com/@NASA"
],
"contentTypes": [
"videos",
"shorts",
"streams"
],
"maxResultsPerType": 5,
"sortBy": "latest",
"detailLevel": "basic"
}

All public videos and Shorts

{
"channels": ["@NASA"],
"contentTypes": ["videos", "shorts"],
"maxResultsPerType": 0,
"sortBy": "latest",
"detailLevel": "basic"
}

Oldest streams with full details

{
"channels": ["UCLA_DiR1FfKNvjuUpBHmylQ"],
"contentTypes": ["streams"],
"maxResultsPerType": 25,
"sortBy": "oldest",
"detailLevel": "full"
}

Pricing

This Actor uses pay-per-event pricing with platform usage included:

  • Basic content result: $0.0008 each—$0.80 per 1,000 results.
  • Full content result: $0.003 each—$3.00 per 1,000 results.
  • Actor start: $0.00005 per run.
  • Status rows: free.

If Full enrichment fails but the Actor preserves the discovered Basic record, that row is charged at the Basic rate only.

Example charges before any configured discounts:

Run outcomeCharge including one start
Default maximum: 5 Basic items × 3 selected types$0.01205
100 Basic results$0.08005
3 Full results$0.00905
100 Full results$0.30005

These examples assume the requested number of items is available. The Actor respects the user's maximum run charge. The Pricing tab is the source of truth for active prices and discounts.

Dataset output

The default Dataset uses four record types:

  • video — one standard video.
  • short — one native Short.
  • stream — one upcoming, active, processing, or completed live broadcast.
  • channelContentStatus — a visible invalid-input, not-found, blocked, failed, empty-tab, or charge-limited outcome.

Resolved channel metadata is stored in OUTPUT.resultsByChannel and repeated on content rows where useful. It is not emitted as an extra Dataset item, so a request for 50 content results does not unexpectedly return 51 rows.

Fields that do not apply are omitted rather than filled with unrelated null values. On successful Full rows, description, publishedAt, and commentCount remain explicit nullable fields so consumers can distinguish a requested-but-unavailable value.

Real output examples

The shortened records below came from real Actor 0.1.9 cloud runs on September 2, 2026. Counts and live state change over time.

Basic video

{
"recordType": "video",
"status": "complete",
"detailLevel": "basic",
"detailStatus": "notRequested",
"videoId": "6o3m9Bw67Os",
"url": "https://www.youtube.com/watch?v=6o3m9Bw67Os",
"title": "NASA's Nancy Grace Roman Space Telescope Launches (Official NASA Recap)",
"thumbnailUrl": "https://i.ytimg.com/vi/6o3m9Bw67Os/hq720.jpg",
"durationSeconds": 127,
"durationText": "2:07",
"publishedAt": "2026-09-01T11:23:18.809548Z",
"publishedTimeText": "1 day ago",
"viewCount": 92000,
"sortBy": "latest",
"sortIndex": 1,
"channelId": "UCLA_DiR1FfKNvjuUpBHmylQ",
"channelName": "NASA",
"channelHandle": "@NASA",
"channelUrl": "https://www.youtube.com/@NASA",
"channelSubscriberCount": 15100000,
"channelIsVerified": true
}

Full Short

{
"recordType": "short",
"status": "complete",
"detailLevel": "full",
"detailStatus": "complete",
"videoId": "myZ9kn9MIWQ",
"url": "https://www.youtube.com/shorts/myZ9kn9MIWQ",
"title": "2026 Solar Eclipse @ 50,000 Feet",
"durationSeconds": 93,
"durationText": "1:33",
"uploadDate": "2026-08-14",
"publishedAt": "2026-08-14T16:46:54Z",
"viewCount": 232765,
"likeCount": 12752,
"commentCount": null,
"availability": "public",
"categories": [
"Science & Technology"
],
"sortBy": "latest",
"sortIndex": 1,
"channelName": "NASA",
"channelHandle": "@NASA"
}

Full active stream

{
"recordType": "stream",
"status": "complete",
"detailLevel": "full",
"detailStatus": "complete",
"videoId": "M3HKLzjvKPc",
"url": "https://www.youtube.com/watch?v=M3HKLzjvKPc",
"title": "Live Video from the International Space Station (Official NASA Stream) 2026-09-02 11:23",
"liveStatus": "is_live",
"isLive": true,
"wasLive": false,
"concurrentViewCount": 100,
"uploadDate": "2026-07-30",
"publishedAt": "2026-07-30T13:13:49Z",
"releasedAt": "2026-07-30T13:14:41Z",
"viewCount": 1009966,
"likeCount": 17641,
"commentCount": null,
"channelName": "NASA",
"channelHandle": "@NASA"
}

Visible no-result status

{
"recordType": "channelContentStatus",
"status": "noResults",
"inputValue": "@example",
"inputType": "handle",
"contentType": "streams",
"errorCode": "NO_CONTENT_FOUND",
"errorMessage": "No public streams were found for this channel.",
"suggestion": "Select another content type or verify the channel's public Streams tab."
}

Status rows are not billed as content results.

Output field reference

GroupCommon fields
Status and sourcerecordType, status, inputValue, inputType, sourceChannelInput, contentType, errorCode, errorMessage, suggestion
Detail statedetailLevel, detailStatus, detailErrorCode, detailErrorMessage
OrderingsortBy, sortIndex
ChannelchannelId, channelName, channelHandle, channelUrl, channelDescription, channelAvatarUrl, channelVideoCount, channelSubscriberCount, channelIsVerified
Content identityvideoId, url, title, description, thumbnailUrl, thumbnailWidth, thumbnailHeight
TimedurationSeconds, durationText, uploadDate, publishedAt, publishedTimeText, releasedAt, releaseDate, releaseYear, modifiedAt, modifiedDate
Engagement and liveviewCount, likeCount, commentCount, concurrentViewCount, liveStatus, isLive, wasLive, scheduledStartTime
Full metadatamediaType, availability, ageLimit, videoLanguage, subtitleLanguages, automaticCaptionLanguages, license, location, playableInEmbed, creators, artists, track, album, genres, tags, categories, chapters
CollectionscrapedAt

chapters contains titles plus start and end times in seconds. Caption-language arrays report availability only; this Actor does not download transcripts. commentCount is a count, not comment text.

Run summary

The default Key-Value Store record named OUTPUT contains run totals, per-type counts, status counts, Full-enrichment counts, truncation information, and one resultsByChannel entry per resolved input. That channel summary includes its ID, handle, URL, description, avatar, subscriber count, video count, verification status, and output counts.

Run through the Apify API

curl -X POST \
"https://api.apify.com/v2/acts/arjun_code~youtube-channel-content-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channels": ["@NASA"],
"contentTypes": ["videos", "shorts"],
"maxResultsPerType": 5,
"sortBy": "latest",
"detailLevel": "basic"
}'

For synchronous testing, replace /runs with /run-sync-get-dataset-items. Use asynchronous runs for complete channels or Full batches.

Performance guidance

  • Basic is the fastest option because it reads channel-tab cards without opening each content page.
  • Full performs one additional detail extraction per item; runtime and network cost grow with the number of results.
  • Begin with 3–5 results per selected type before requesting all content.
  • Select only the content types you need. Three selected tabs require more discovery work than one.
  • A limit of 0 can produce a large, long-running Dataset on established channels.

Troubleshooting

No stream rows were returned

The Streams tab includes upcoming, active, and replayable completed broadcasts. If the channel has no public items in that tab, the Actor writes a channelContentStatus row with status: "noResults".

Full is much slower than Basic

This is expected because Full opens every selected item. Use Basic when you only need channel inventory, then send a smaller chosen subset to YouTube Video and Shorts Details Scraper if needed.

A Full field is null

The detail request completed, but YouTube did not expose that optional value. Common cases are hidden comment counts, videos without chapters, and content without music or release metadata.

The Actor preserves YouTube's current server-side tab ranking. Popular is not promised to be a strict viewCount sort, and rankings can change.

GoalActor
Discover channels, videos, or Shorts by keywordYouTube Search Scraper
Enrich a known channel with full profile and contact fieldsYouTube Channel Details Scraper
Get full metadata for known video or Shorts URLs or IDsYouTube Video and Shorts Details Scraper
Export public comments and repliesYouTube Comments Scraper

FAQ

Does Oldest scan the whole channel before returning results?

No. The Actor selects YouTube's native Oldest order and follows that order's pagination until the requested limit is reached.

Not necessarily. It is YouTube's server-side ranking, which YouTube does not define as a strict numerical view sort.

Does the Actor download videos, comments, or transcripts?

No. It extracts public metadata. Full can return a public comment count and caption-language availability, but not comment text or transcripts.

Why is a Full row marked partial?

Discovery succeeded but the per-item detail request failed. The Actor preserves the useful Basic metadata, sets detailStatus: "failed", and charges only the Basic result rate.

Support and responsible use

For unexpected output, open the Actor's Issues tab and include the run ID, exact channel input, selected content types, sort order, detail level, and affected Dataset row. Do not post API tokens or private data.

Use the Actor only for lawful processing of publicly accessible information. Follow YouTube's terms, applicable laws, and your own privacy and retention obligations.