YouTube Channel Scraper: Every Video & Short avatar

YouTube Channel Scraper: Every Video & Short

Pricing

from $0.35 / 1,000 videos

Go to Apify Store
YouTube Channel Scraper: Every Video & Short

YouTube Channel Scraper: Every Video & Short

Every upload of a YouTube channel, newest first: videos, Shorts and live streams in one list. $0.50 per 1,000 videos. Each typed, with the channel's subscribers and links.

Pricing

from $0.35 / 1,000 videos

Rating

0.0

(0)

Developer

Luzi

Luzi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 minutes ago

Last modified

Share

Get every upload of a YouTube channel, newest first: regular videos, Shorts and live streams in one list, each marked with its type. Every row also carries the channel's subscribers, total views, country, joined date and links, so one file holds the videos and who made them. No YouTube account, login or cookies needed.

Tested daily. Latest checks: four whole channels read back to their first upload, 3,003 videos in 3 minutes; three matched YouTube's own count exactly and one came within a video (495 of 496).

What does this Actor do?

You give it links to YouTube channels (or just their @handles). For each channel it reads the channel's uploads list from the newest upload back, and saves one row per video until it reaches your limit or the channel's first upload.

Each row comes with:

  • the video's id, link, embed link, title and thumbnail, with every size of the thumbnail YouTube offers
  • its type: video, short or live
  • its duration, views and when it was posted (as YouTube shows it, such as "3 days ago")
  • for a live stream: whether it is live now, upcoming (with its scheduled time) or over, and how many people are watching or waiting
  • its place in the channel's uploads (1 = the newest)
  • whether it is a collaboration with another channel (and, when it is, the other channels' names, handles, links and subscribers), and any badge on its thumbnail (such as "LIVE" or "Upcoming")
  • the channel's id, name, handle, picture, verified or official-artist mark, description, country (with its two-letter code), subscribers, total views, joined date, video count, links and RSS feed

Why use it?

  • The whole channel, not just the Videos tab. Videos, Shorts and live streams come in one list, newest first, so nothing is split over three runs.
  • Each upload typed. Every row says whether it is a video, a Short or a live stream, and you can leave any type out.
  • Complete, and it tells you so. When every type is included, the run's status compares what it read with the count YouTube shows for the channel's uploads.
  • Channel facts on every row. Subscribers, total views, country, joined date and the channel's own links, ready to compare channels in one sheet.
  • Use the data anywhere. Download as JSON, CSV or Excel, or send it to your own tools through Apify's API and integrations.

How to use it

  1. Paste one or more channel links into Channel links.
  2. Optionally, set Max videos per channel (leave it empty for the whole channel), and turn off the types you do not want.
  3. Click Start. When the run ends, open the Output tab to view the videos or download them.

A channel link as in your browser's address bar (https://www.youtube.com/@veritasium, https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA, /c/… or /user/…), any tab of it (…/@veritasium/videos), or the handle (@veritasium) or channel id (UCHnyfMqiRRG1u-2MsSQLbXA) on its own. Video, playlist and search links are not supported: this Actor reads the uploads of the channels you name.

Input

FieldWhat it doesDefault
Channel links (startUrls)The channels to read. Required.—
Max videos per channel (maxVideosPerChannel)Stop after this many videos per channel, newest firstthe whole list
Include videos (includeVideos)Save regular (long) videostrue
Include Shorts (includeShorts)Save Shortstrue
Include live streams (includeLiveStreams)Save live streams: past, live now and upcomingtrue

Example input:

{
"startUrls": ["https://www.youtube.com/@veritasium"],
"maxVideosPerChannel": 500,
"includeShorts": false
}

Output

One row per video. An example, with made-up values:

{
"video_id": "AbCdEfGhIjK",
"url": "https://www.youtube.com/watch?v=AbCdEfGhIjK",
"embed_url": "https://www.youtube.com/embed/AbCdEfGhIjK",
"title": "A video title",
"video_type": "video",
"position": 1,
"duration_text": "34:32",
"duration_seconds": 2072,
"view_count": 7100000,
"view_count_text": "7.1M views",
"published_time_text": "3 days ago",
"live_status": null,
"scheduled_start_text": null,
"concurrent_viewers": null,
"badges": [],
"thumbnail_url": "https://i.ytimg.com/vi/AbCdEfGhIjK/hqdefault.jpg?…",
"thumbnails": [
{ "url": "https://i.ytimg.com/vi/AbCdEfGhIjK/hqdefault.jpg?…", "width": 168, "height": 94 },
{ "url": "https://i.ytimg.com/vi/AbCdEfGhIjK/hqdefault.jpg?…", "width": 336, "height": 188 }
],
"byline_text": "A Channel and Another Channel",
"is_collaboration": true,
"collaborators": [
{
"name": "Another Channel",
"handle": "@anotherchannel",
"channel_id": "UC2222222222222222222222",
"url": "https://www.youtube.com/channel/UC2222222222222222222222",
"subscribers_text": "1.28M subscribers",
"subscriber_count": 1280000,
"verified": true,
"is_artist": false,
"avatar_url": "https://yt3.ggpht.com/…"
}
],
"channel_id": "UC1111111111111111111111",
"channel_name": "A Channel",
"channel_handle": "@achannel",
"channel_url": "https://www.youtube.com/channel/UC1111111111111111111111",
"channel_rss_url": "https://www.youtube.com/feeds/videos.xml?channel_id=UC1111111111111111111111",
"channel_avatar_url": "https://yt3.ggpht.com/…",
"channel_verified": true,
"channel_is_artist": false,
"channel_description": "Videos about things.",
"channel_country": "United States",
"channel_country_code": "US",
"channel_subscribers_text": "21.4M subscribers",
"channel_subscriber_count": 21400000,
"channel_view_count": 4666228082,
"channel_joined_date": "2010-07-21",
"channel_video_count": 541,
"channel_upload_count": 541,
"channel_links": [{ "title": "Shop", "url": "https://shop.example.com/" }],
"source_url": "https://www.youtube.com/@achannel"
}
FieldWhat it holds
video_idThe video's id
urlA link to the video (a /shorts/ link for a Short)
embed_urlA link to embed the video in a web page
titleThe title
video_typevideo, short or live
positionIts place in the channel's uploads, 1 = the newest
duration_textThe duration as shown ("34:32"; empty while live or upcoming)
duration_secondsThe same in seconds
view_countViews (YouTube rounds counts above 1,000, such as 7.1M → 7100000)
view_count_textViews as YouTube shows them
published_time_textWhen it was posted, as YouTube shows it ("3 days ago", "Streamed 2 weeks ago")
live_statusFor a live stream: live, upcoming or was_live; empty otherwise
scheduled_start_textFor an upcoming stream: its scheduled time, as shown
concurrent_viewersPeople watching (live now) or waiting (upcoming)
badgesBadges on the thumbnail other than the duration, such as "LIVE" or "Upcoming"
thumbnail_urlThe largest thumbnail shown
thumbnailsEvery size of the thumbnail shown, each with url, width and height
byline_textThe channel line under the title ("A Channel and Another Channel")
is_collaborationWhether the video is shared with another channel
collaboratorsA collaboration's other channels (name, handle, id, link, subscribers); empty otherwise
channel_idThe channel's id
channel_nameThe channel's name
channel_handleThe channel's @ handle
channel_urlA link to the channel
channel_rss_urlThe channel's RSS feed of new uploads
channel_avatar_urlThe channel's picture
channel_verifiedWhether the channel has the verified mark
channel_is_artistWhether the channel is an official artist channel
channel_descriptionThe channel's description
channel_countryThe channel's country, when it shows one
channel_country_codeThe same as a two-letter ISO code ("US"); empty for a name it does not know
channel_subscribers_textSubscribers as YouTube shows them ("21.4M subscribers")
channel_subscriber_countThe same as a number (rounded as YouTube rounds it)
channel_view_countThe channel's total views, exact
channel_joined_dateWhen the channel joined YouTube, as YYYY-MM-DD
channel_video_countThe video count on the channel's About panel
channel_upload_countThe count YouTube shows on the channel's uploads list
channel_linksThe links on the channel's About panel, with YouTube's redirect removed
source_urlThe channel link or handle you gave

Not included: an exact upload date (YouTube's lists show only "3 days ago"), exact view counts, likes, comment counts, descriptions and tags of each video, playlists, and posts.

How much does it cost?

You pay for what you get:

  • $0.50 per 1,000 videos ($0.0005 a video). Videos, Shorts and live streams cost the same. Each is charged once per run.
  • No start fee, and nothing per channel.

So a channel with 1,000 uploads costs $0.50. If you set a maximum cost for a run, the Actor stops when it reaches it and keeps every video saved so far.

How long does a run take?

About 15 seconds for the newest 50 videos of two channels, and about 3 minutes for four whole channels (3,003 videos).

Good to know

  • You may get a few videos fewer than the channel's count. YouTube's count can include uploads it does not list for visitors. The two counts on a row (channel_video_count and channel_upload_count) can differ too.
  • Dates are relative. YouTube's lists show when a video was posted only as "3 days ago" or "2 years ago"; the row keeps it as shown.
  • Give each channel once. The same channel given as a handle and as its channel id is read twice, and each copy may show part of the list.
  • Check your links first. A link that is not a YouTube channel stops the run before anything is read, and the message names it.
  • One channel that cannot be read does not stop the run. The other channels carry on, and the run's status lists the channels that could not be read. The run fails only when no channel could be read.
  • A channel with no uploads is not an error. It saves nothing.

FAQ

Do I need a YouTube account or cookies? No. The Actor reads what anyone can see on the channel's pages.

Can I get only the newest videos? Yes. Set Max videos per channel: the list is read newest first, so a limit of 20 gives the 20 newest uploads.

Can I run it from my own code, on a schedule, or with other apps? Yes. Like any Apify Actor, you can start it through the Apify API, run it on a schedule, and connect it to other apps with Apify's integrations and webhooks.

This Actor reads only what anyone can see on a channel's pages without logging in. Check YouTube's terms and the laws that apply to you before you use the data, and only collect personal data when you have a legitimate reason to. If you are unsure, ask a lawyer.

Support

Found a problem or missing a feature? Open an issue on the Issues tab and include the run's link.


This Actor is not affiliated with, endorsed by or sponsored by YouTube or Google.