youtube-search-scraper
v1.0.1
Published
This npm package offers an efficient and lightweight solution for scraping data from the YouTube search engine without needing to rely on external libraries.
Downloads
128
Maintainers
Readme
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.
| Type | Fetch Time | Processing Time |
|---|---|---|
| video
| 585.632055 ms | 3.117175 ms |
| channel
| 494.026065 ms | not tested
|
| playlist
| 569.424545 ms | not tested
|
Options
| Property | Default | Description |
|---|---|---|
| language | en
| Set the language that you would like for results to be returned in. A list of supported language types can be found here. |
| searchType | video
| Which 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
}
]
}