{"id":22169654,"url":"https://github.com/tombulled/innertube","last_synced_at":"2025-04-12T19:48:31.517Z","repository":{"id":37856091,"uuid":"342012210","full_name":"tombulled/innertube","owner":"tombulled","description":"Python Client for Google's Private InnerTube API. Works with YouTube, YouTube Music and more!","archived":false,"fork":false,"pushed_at":"2024-08-12T21:34:05.000Z","size":301,"stargazers_count":341,"open_issues_count":9,"forks_count":25,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-12T19:48:26.353Z","etag":null,"topics":["api","google","innertube","python","youtube"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/innertube/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tombulled.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-24T19:29:51.000Z","updated_at":"2025-04-12T19:26:03.000Z","dependencies_parsed_at":"2024-02-25T14:30:47.107Z","dependency_job_id":"6a3dc1fb-fd45-409a-9d87-79f318fef9e6","html_url":"https://github.com/tombulled/innertube","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombulled%2Finnertube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombulled%2Finnertube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombulled%2Finnertube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombulled%2Finnertube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tombulled","download_url":"https://codeload.github.com/tombulled/innertube/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625500,"owners_count":21135513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","google","innertube","python","youtube"],"created_at":"2024-12-02T06:33:50.552Z","updated_at":"2025-04-12T19:48:31.497Z","avatar_url":"https://github.com/tombulled.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# innertube\nPython Client for Google's Private InnerTube API. Works with **YouTube**, **YouTube Music**, **YouTube Kids**, **YouTube Studio** and more!\n\n## About\nThis library handles low-level interactions with the underlying InnerTube API used by each of the YouTube services.\n\nHere are a few articles available online relating to the InnerTube API:\n* [Gizmodo - How Project InnerTube Helped Pull YouTube Out of the Gutter](https://gizmodo.com/how-project-innertube-helped-pull-youtube-out-of-the-gu-1704946491)\n* [Fast Company - To Take On HBO And Netflix, YouTube Had To Rewire Itself](https://www.fastcompany.com/3044995/to-take-on-hbo-and-netflix-youtube-had-to-rewire-itself)\n\n## Installation\n`innertube` uses [Poetry](https://github.com/python-poetry/poetry) under the hood and can easily be installed from source or from PyPI using *pip*.\n\n### Latest Release\n```console\npip install innertube\n```\n\n### Bleeding Edge\n```console\npip install git+https://github.com/tombulled/innertube@develop\n```\n\n## Usage\n```python\n\u003e\u003e\u003e import innertube\n\u003e\u003e\u003e\n\u003e\u003e\u003e # Construct a client\n\u003e\u003e\u003e client = innertube.InnerTube(\"WEB\")\n\u003e\u003e\u003e\n\u003e\u003e\u003e # Get some data!\n\u003e\u003e\u003e data = client.search(query=\"foo fighters\")\n\u003e\u003e\u003e\n\u003e\u003e\u003e # Power user? No problem, dispatch requests yourself\n\u003e\u003e\u003e data = client(\"browse\", body={\"browseId\": \"FEwhat_to_watch\"})\n\u003e\u003e\u003e\n\u003e\u003e\u003e # The core endpoints are implemented, so the above is equivalent to:\n\u003e\u003e\u003e data = client.browse(\"FEwhat_to_watch\")\n```\n\n## Comparison with the [YouTube Data API](https://developers.google.com/youtube/v3/)\nThe InnerTube API provides access to data you can't get from the Data API, however it comes at somewhat of a cost *(explained below)*.\n|                                       | This Library | YouTube Data API |\n| ------------------------------------- | ------------ | ---------------- |\n| Google account required               | No           | Yes              |\n| Request limit                         | No           | Yes              |\n| Clean data                            | No           | Yes              |\n\nThe InnerTube API is used by a variety of YouTube services and is not designed for consumption by users. Therefore, the data returned by the InnerTube API will need to be parsed and sanitised to extract data of interest.\n\n## Endpoints\nCurrently only the following core, unauthenticated endpoints are implemented:\n|                                | YouTube | YouTubeMusic | YouTubeKids | YouTubeStudio |\n| ------------------------------ | ------- | ------------ | ----------- | ------------- |\n| config                         | \u0026check; | \u0026check;      | \u0026check;     | \u0026check;       |\n| browse                         | \u0026check; | \u0026check;      | \u0026check;     | \u0026check;       |\n| player                         | \u0026check; | \u0026check;      | \u0026check;     | \u0026check;       |\n| next                           | \u0026check; | \u0026check;      | \u0026check;     |               |\n| search                         | \u0026check; | \u0026check;      | \u0026check;     |               |\n| guide                          | \u0026check; | \u0026check;      |             |               |\n| get_transcript                 | \u0026check; |              |             |               |\n| music/get_search_suggestions   |         | \u0026check;      |             |               |\n| music/get_queue                |         | \u0026check;      |             |               |\n\n## Authentication\nThe InnerTube API uses OAuth2, however this has not yet been implemented, therefore this library currently only provides unauthenticated API access.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftombulled%2Finnertube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftombulled%2Finnertube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftombulled%2Finnertube/lists"}