Skip to main content

Python Client for Google's Private InnerTube API. Works with Youtube, YouTubeMusic etc.

Project description

innertube

Python Client for Google's Private InnerTube API. Works with: YouTube, YouTube Music, YouTube Kids, YouTube Studio

About

This library handles low-level interactions with the InnerTube API that is used by each of the YouTube services. Google hasn't made much public about the API, and recently all App interactions use protobuf making them hard to reverse-engineer. The only articles I could find online are:

Installation

The innertube library uses Poetry and can easily be installed from source, or using pip

Using pip (from source)

$ pip install git+https://github.com/tombulled/innertube

Usage

>>> import innertube
>>>
>>> # Construct a client
>>> client = innertube.InnerTube(innertube.Client.WEB)
>>>
>>> # Get some data!
>>> data = client.search(query = 'foo fighters')
>>>
>>> # Power user? No problem, dispatch requests yourself
>>> data = client('browse', json = {'browseId': 'FEwhat_to_watch'})
>>>
>>> # The core endpoints are implemented, so the above is equivalent to:
>>> data = client.browse('FEwhat_to_watch')

Why not just use the YouTube Data API?

It's entirely up to you and your needs, however this library provides functionality you wont get from the Data API, but it comes at somewhat of a cost (explained below)

This Library YouTube Data API
No Google account required
No request limit
Clean, reliable, well-structured data

Wait a sec! What do you mean it's not clean, reliable and well-structured??

Well, the private InnerTube API is not designed for consumption by users, it is used to render and operate the various YouTube services.

What does that mean?

Simply put, the data returned by the InnerTube API will need to be parsed and sanitised to extract the usable data as it will contain a lot of fluff that is unlikely to be of any use. These higher-level clients are in the works!

Clients

This table shows all the devices and services that work with the InnerTube API. For example, you could query the API as if you were using the YouTube app on your Tv!

YouTube YouTubeMusic YouTubeKids YouTubeStudio
Web WEB WEB_REMIX WEB_KIDS WEB_CREATOR
Android ANDROID ANDROID_MUSIC ANDROID_KIDS ANDROID_CREATOR
Ios IOS IOS_MUSIC IOS_KIDS IOS_CREATOR
Tv TVHTML5

Endpoints

Only the core, unauthenticated endpoints are currently implemented. However, between all of these you should be able to access all the data you need.

YouTube YouTubeMusic YouTubeKids YouTubeStudio
config
browse
player
next
search
guide
music/get_search_suggestions
music/get_queue

What about Authentication?

The InnerTube API uses OAuth2, however I have been unable to successfully implement authentication. Therefore, this library currently only provides unauthenticated access to the API.

Credits

Here's a list of the awesome libraries that helped make innertube

PyPi Source
requests https://github.com/psf/requests
pydantic https://github.com/samuelcolvin/pydantic
addict https://github.com/mewwts/addict
attrs https://github.com/python-attrs/attrs
furl https://github.com/gruns/furl
humps https://github.com/nficano/humps
parse https://github.com/r1chardj0n3s/parse
toolz https://github.com/pytoolz/toolz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

innertube-1.0.2.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

innertube-1.0.2-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file innertube-1.0.2.tar.gz.

File metadata

  • Download URL: innertube-1.0.2.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.10 Linux/5.4.0-88-generic

File hashes

Hashes for innertube-1.0.2.tar.gz
Algorithm Hash digest
SHA256 24d31c8378d3570d5e6ba260312ceb315313db4d7dacc5b5269f4388c01508e2
MD5 a8bef1a4b5a47dc117d91455423f3997
BLAKE2b-256 bdf559c2c89d6ad0b69bbcf4b101ae8b1bbf85648cadca97abebe2057a5259c4

See more details on using hashes here.

File details

Details for the file innertube-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: innertube-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.10 Linux/5.4.0-88-generic

File hashes

Hashes for innertube-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 870a39b6c1385f682596ac0e08532b2671f8968ed42c58c23a4c47be39342817
MD5 0f25a31085e1530f577f6e09c0af5e71
BLAKE2b-256 cb2f282286a32a8bbc562f6baaa2dc2d6d44cd3e4f343fae61a910e8c828301e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page