Back to Blog
General

YouTube Videos Scraper API: Extract All Videos from Any Channel

January 10, 2026
4 min read
S
By SociaVault Team
youtubevideos scraperapicontent analysis

YouTube Videos Scraper API: Extract Channel Videos at Scale

Need to analyze YouTube video content? This guide shows you how to extract videos, metadata, and performance metrics from any YouTube channel.

What Video Data Can You Extract?

FieldDescription
Video IDUnique identifier
TitleVideo title
DescriptionFull description
ViewsView count
LikesLike count
CommentsComment count
DurationVideo length
Published DateUpload date
ThumbnailThumbnail URL
TagsVideo tags
CategoryContent category

Using the Videos API

const response = await fetch('https://api.sociavault.com/v1/scrape/youtube/channel-videos?handle=MrBeast&sort=latest', {
  headers: {
    'x-api-key': 'YOUR_API_KEY'
  }
});

const videos = await response.json();
ParameterTypeRequiredDescription
handlestringNo*YouTube channel handle
channelIdstringNo*YouTube channel ID
sortstringNoSort by latest or popular
continuationTokenstringNoToken from previous response for pagination

*Pass either handle or channelId.

Sample Response

{
  "success": true,
  "data": {
    "videos": {
      "0": {
        "type": "video",
        "id": "dQw4w9WgXcQ",
        "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
        "title": "I Gave Away $1,000,000",
        "thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
        "viewCountText": "125,000,000 views",
        "viewCountInt": 125000000,
        "publishedTimeText": "3 days ago",
        "publishedTime": "2026-01-05T14:00:00Z",
        "lengthText": "18:30",
        "lengthSeconds": 1110
      }
    },
    "continuationToken": "4qmFsgKrCBIYVUNkRkpXVWE..."
  },
  "credits_used": 1,
  "endpoint": "youtube/channel-videos"
}

Note: Videos use numeric keys — use Object.values(data.data.videos) to iterate.


## Use Cases

### Content Performance Analysis

Find top-performing videos:

```javascript
const res = await fetch('https://api.sociavault.com/v1/scrape/youtube/channel-videos?handle=competitor&sort=popular', {
  headers: { 'x-api-key': 'YOUR_API_KEY' }
});
const { data } = await res.json();
const videos = Object.values(data.videos);

// Top 10 by views (already sorted by popular)
const topVideos = videos.slice(0, 10);

// Calculate averages
const avgViews = Math.round(videos.reduce((s, v) => s + v.viewCountInt, 0) / videos.length);

console.log(`Top video: ${topVideos[0].title} (${topVideos[0].viewCountText})`);
console.log(`Average views: ${avgViews.toLocaleString()}`);

Title Analysis

Study what titles perform best:

const res = await fetch('https://api.sociavault.com/v1/scrape/youtube/channel-videos?handle=channel', {
  headers: { 'x-api-key': 'YOUR_API_KEY' }
});
const { data } = await res.json();
const videos = Object.values(data.videos);

// Analyze title patterns
const titlePatterns = {
  numbers: videos.filter(v => /\d/.test(v.title)),
  questions: videos.filter(v => v.title.includes('?')),
  howTo: videos.filter(v => /how to/i.test(v.title)),
  lists: videos.filter(v => /^\d+ |top \d+/i.test(v.title))
};

// Compare performance
for (const [pattern, patternVideos] of Object.entries(titlePatterns)) {
  const avgViews = Math.round(patternVideos.reduce((s, v) => s + v.viewCountInt, 0) / patternVideos.length);
  console.log(`${pattern}: ${avgViews.toLocaleString()} avg views`);
}

Duration Analysis

Find optimal video length:

const res = await fetch('https://api.sociavault.com/v1/scrape/youtube/channel-videos?handle=channel', {
  headers: { 'x-api-key': 'YOUR_API_KEY' }
});
const { data } = await res.json();
const videos = Object.values(data.videos);

// Group by duration
const shortVideos = videos.filter(v => v.lengthSeconds < 300);
const mediumVideos = videos.filter(v => v.lengthSeconds >= 300 && v.lengthSeconds < 900);
const longVideos = videos.filter(v => v.lengthSeconds >= 900);

const avgViews = (arr) => Math.round(arr.reduce((s, v) => s + v.viewCountInt, 0) / arr.length);

console.log(`Short videos: ${avgViews(shortVideos).toLocaleString()} avg views`);
console.log(`Medium videos: ${avgViews(mediumVideos).toLocaleString()} avg views`);
console.log(`Long videos: ${avgViews(longVideos).toLocaleString()} avg views`);

Tag Analysis

Extract and analyze video tags:

const { videos } = await getChannelVideos('channel');

const tagCounts = {};
videos.forEach(video => {
  video.tags?.forEach(tag => {
    tagCounts[tag] = (tagCounts[tag] || 0) + 1;
  });
});

const topTags = Object.entries(tagCounts)
  .sort((a, b) => b[1] - a[1])
  .slice(0, 20);

console.log('Most used tags:', topTags);

Pagination

Get all videos from a channel:

async function getAllVideos(handle) {
  let allVideos = [];
  let cursor = null;
  
  do {
    const params = new URLSearchParams({ handle });
    if (cursor) params.append('continuationToken', cursor);

    const response = await fetch(`https://api.sociavault.com/v1/scrape/youtube/channel-videos?${params}`, {
      headers: { 'x-api-key': 'YOUR_API_KEY' }
    });
    
    const data = await response.json();
    allVideos = [...allVideos, ...Object.values(data.data.videos)];
    cursor = data.data.continuationToken || null;
    
  } while (cursor);
  
  return allVideos;
}

Frequently Asked Questions

How many videos can I get per request?

Each request returns up to 30 videos. Use pagination to retrieve more.

Can I filter by date range?

The API returns videos in chronological order (newest first). Filter by publishedAt client-side for date ranges.

Are YouTube Shorts included?

By default, both regular videos and Shorts are included. Use the Shorts endpoint for Shorts-only content.

Can I get videos from private/unlisted?

No, only public videos are accessible.

How far back can I get videos?

You can access a channel's entire video history going back to their first upload.

Get Started

Create your account and start extracting YouTube video data.

Documentation: /docs/api-reference/youtube/channel-videos

Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.