jnsougata
opentube
Python

Access YouTube Public Data without YouTubeAPI

Last updated May 27, 2026
92
Stars
14
Forks
2
Issues
0
Stars/day
Attention Score
24
Language breakdown
Python 100.0%
โ–ธ Files click to expand
README

OpenTube

Access YouTube Public Data without YouTubeAPI

Table of Contents

Installing

Python 3.6 or higher is required

sh

Linux/macOS

python3 -m pip install -U opentube
sh

Windows

python -m pip install -U opentube

Build from source

sh
pip install git+https://github.com/jnsougata/opentube

Quick Start

py
import opentube

channel = opentube.Channel('@GYROOO') print(channel.metadata)

video = opentube.Video('WVDT4lSozHk') print(video.metadata)

playlist = opentube.Playlist('PL-xXQjd8XQ-xXQjd8XQ-xXQjd8X_Q-') print(playlist.metadata)

search = opentube.Search.video('YouTube Rewind 2018') print(search.metadata)

search = opentube.Search.channel('PewDiePie') print(search.metadata)

search = opentube.Search.playlist('Unlock Your Third Eye') print(search.metadata)

Usage

Channel

| Property | Return Type | Description | |-------------------|------------------|--------------------------------------------------------| | live | bool | Returns True if the channel is live | | streaming_now | str | Returns the video id of the ongoing livestream | | current_streams | List[str] | Returns a list of ids of ongoing livestreams | | old_streams | List[str] | Returns a list of ids of old livestreams | | video_count | int | Returns total number of videos uploaded by the channel | | upcoming | Video | Returns a video object of the upcoming video | | upcomings | List[str] | Returns a list of ids of upcoming videos | | playlists | List[str] | Returns a list of playlist ids | | metadata | Dict[str, Any] | Returns the metadata of the channel in dict format | | last_uploaded | Video | Most recently uploaded video of the channel | | last_streamed | Video | Most recently completed livestream of the channel |

| Method | Return Types | Description | |-------------------------------|--------------|----------------------------------------------------| | uploads(limit: int \| None) | List[str] | Returns a list of video ids of the uploaded videos |

Video

| Properties | Return Types | Description | |------------|------------------|--------------------------------------------------| | metadata | Dict[str, Any] | Returns the metadata of the video in dict format |

Playlist

| Properties | Return Types | Description | |------------|------------------|-----------------------------------------------------| | metadata | Dict[str, Any] | Returns the metadata of the playlist in dict format |

Search

| Method | Return Type | Description | |--------------------------------------------|-------------|-----------------------------------------------------| | channel(name: str) | Channel | Finds a channel with the given keywords | | video(name: str) | Video | Finds a video with the given keywords | | playlist(name: str) | Playlist | Finds a playlist with the given keywords | | channels(name: str, limit: int \| None) | List[str] | Finds all channels that matches the given keywords | | videos(name: str, limit: int \| None) | List[str] | Finds all videos that matches the given keywords | | playlists(name: str, limit: int \| None) | List[str] | Finds all playlists that matches the given keywords |

Possible Exceptions

| Class | Description | |-------------------|-----------------------------------------------------------------| | InvalidURL | Raised when then url is not a valid YouTube endpoint | | TooManyRequests | Raised when client IP receives soft ban from YouTube | | RequestError | Raised for any type of request error not handled by the library |

ยฉ 2026 GitRepoTrend ยท jnsougata/opentube ยท Updated daily from GitHub