YouTube Channel Videos Shorts and Live Stream Scraper
Pricing
from $0.80 / 1,000 basic content results
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
Maintained by CommunityActor 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
- The Actor resolves each channel input and opens the selected channel tabs.
- Latest uses the initial tab order. Popular and Oldest follow the sorting command returned by YouTube.
- Browse continuation tokens are followed until the per-type limit is reached or the tab is exhausted.
- Results are classified as
video,short, orstream, deduplicated by video ID, and kept in YouTube's returned order. - 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
| Field | Type | Default | Behavior |
|---|---|---|---|
channels | string[] | https://www.youtube.com/@NASA | 1–10 unique channel URLs, IDs, handles, or usernames. |
contentTypes | string[] | videos, shorts, streams | Select one or more content tabs. Only selected types are requested. |
maxResultsPerType | integer | 5 | Limit per selected type and channel. Use 0 for all public items from every selected tab. Maximum positive value: 10,000. |
sortBy | string | latest | latest, popular, or oldest, using YouTube's native channel-tab order. |
detailLevel | string | basic | basic for fast inventory or full for per-item detail enrichment. |
Supported channel inputs
https://www.youtube.com/@NASAhttps://www.youtube.com/@NASA/videoshttps://www.youtube.com/channel/UCLA_DiR1FfKNvjuUpBHmylQ@NASAUCLA_DiR1FfKNvjuUpBHmylQNASA
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
| Capability | Basic | Full |
|---|---|---|
| Channel-tab title, URL, thumbnail, visible views, duration, relative date | Yes, when exposed on the card | Yes |
| Channel ID, name, handle, URL, description, avatar, subscribers, verification | Yes | Yes |
| Per-content description | No | Yes, when exposed |
| Exact publication timestamp | No; an approximate value can be derived from relative text | Yes, when exposed; otherwise preserves the Basic approximation |
| Likes, comment count, tags, categories, chapters, language, availability | No | Yes, when exposed |
| Caption-language availability and media/release metadata | No | Yes, when exposed |
| Additional request per content item | No | Yes |
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.0008each—$0.80per 1,000 results. - Full content result:
$0.003each—$3.00per 1,000 results. - Actor start:
$0.00005per 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 outcome | Charge 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
| Group | Common fields |
|---|---|
| Status and source | recordType, status, inputValue, inputType, sourceChannelInput, contentType, errorCode, errorMessage, suggestion |
| Detail state | detailLevel, detailStatus, detailErrorCode, detailErrorMessage |
| Ordering | sortBy, sortIndex |
| Channel | channelId, channelName, channelHandle, channelUrl, channelDescription, channelAvatarUrl, channelVideoCount, channelSubscriberCount, channelIsVerified |
| Content identity | videoId, url, title, description, thumbnailUrl, thumbnailWidth, thumbnailHeight |
| Time | durationSeconds, durationText, uploadDate, publishedAt, publishedTimeText, releasedAt, releaseDate, releaseYear, modifiedAt, modifiedDate |
| Engagement and live | viewCount, likeCount, commentCount, concurrentViewCount, liveStatus, isLive, wasLive, scheduledStartTime |
| Full metadata | mediaType, availability, ageLimit, videoLanguage, subtitleLanguages, automaticCaptionLanguages, license, location, playableInEmbed, creators, artists, track, album, genres, tags, categories, chapters |
| Collection | scrapedAt |
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
0can 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.
Oldest or Popular results do not match a local sort
The Actor preserves YouTube's current server-side tab ranking. Popular is not promised to be a strict viewCount sort, and rankings can change.
Related Actors
| Goal | Actor |
|---|---|
| Discover channels, videos, or Shorts by keyword | YouTube Search Scraper |
| Enrich a known channel with full profile and contact fields | YouTube Channel Details Scraper |
| Get full metadata for known video or Shorts URLs or IDs | YouTube Video and Shorts Details Scraper |
| Export public comments and replies | YouTube 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.
Is Popular identical to highest view count?
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.