1.0.1 • Published 1 year ago

youtube-search-scraper v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

YouTube Scrapping

Table of Contents

Why use this package?

This npm package offers an efficient and lightweight solution for scraping data from the YouTube search engine without needing to rely on external libraries.

Timings

These are the timings I would get on average over 20 tests, ofcourse the Fetch time depends on how good your connection is to YouTube and how loaded YouTube is at that point.

TypeFetch TimeProcessing Time
video585.632055 ms3.117175 ms
channel494.026065 msnot tested
playlist569.424545 msnot tested

Options

PropertyDefaultDescription
languageenSet the language that you would like for results to be returned in. A list of supported language types can be found here.
searchTypevideoWhich type to search for on YouTube, supported types are any, channel, live, movie, playlist and video
"Sort by" has not been implemented as of now.
All data is sorted in the default order that YouTube returns these in.

Example Options

You can set the global language which YouTube should return results in or set the return language per search/request:

import youtube from 'youtube-search-scraper'

// This will set the language to French from France globally
const yt = new youtube.default('en-EN');

// Sets the language communicated to YouTube to Dutch from Belgium for this search
const results = yt.search('Never gonna give you up', {
    language: 'es-ES',
    searchType: 'video' // video is the default search type
});

Example Code

CommonJS:

const Scraper = require('youtube-search-scraper').default;

const youtube = new Scraper();

youtube.search('Never gonna give you up').then(results => {
    console.log(results.videos[0]);
});

ESModule:

import youtube from 'youtube-search-scraper'

const yt = new youtube.default();
yt.search('Never gonna give you up').then(results => {
    console.log(results.videos[0]);
});

Output

{
    channel: {
        name: 'Official Rick Astley',
        link: 'https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw',
        verified: true
    },
    description: "Rick Astley's official music video for “Never Gonna Give You Up” Listen to Rick Astley: https://RickAstley.lnk.to/_listenYD Subscribe ...",
    duration: 213,
    duration_raw: "3:33",
    id: 'dQw4w9WgXcQ',
    link: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
    thumbnail: 'https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg',
    shareLink: 'https://youtu.be/dQw4w9WgXcQ',
    title: 'Rick Astley - Never Gonna Give You Up (Video)',
    uploaded: '11 years ago',
    views: 788551856
}

Return Object Structure

{
    channels: [
        {
            channelId: String,
            description: String,
            link: String,
            thumbnails: [
                {
                    url: String,
                    width: Number,
                    height: Number
                }
            ],
            subscribed: Boolean,
            uploadedVideos: Number,
            verified: Boolean
        }
    ],
    playlists: [
        {
            preview: [
                {
                    duration: Number,
                    duration_raw: String,
                    views: Number,
                    id: String,
                    link: String,
                    thumbnail: String,
                    title: String,
                    shareLink: String
                }
            ],
            id: String,
            link: String,
            thumbnail: String,
            title: String,
            videoCount: Number
        }
    ],
    streams: [
        {
            watching: Number,
            channel: {
                name: String,
                link: String,
                verified: Boolean
            },
            id: String,
            link: String,
            thumbnail: String,
            title: String,
            shareLink: String
        }
    ],
    videos: [
        {
            description: String,
            duration: Number,
            duration_raw: String,
            uploaded: String,
            views: Number,
            channel: {
                name: String,
                link: String,
                verified: Boolean
            },
            id: String,
            link: String,
            thumbnail: String,
            title: String,
            shareLink: String
        }
    ]
}