
353 stars · MIT · v0.9.9 (2026-04-17) · Track this in Rising ↗
Clean typed Python wrapper for the YouTube Data API — competitor catalogues, weekly deltas and description chores in a cron job.
Radar check
What we found when we opened it. Every bar is one fact, with its date.
Last code pushed 17 Apr 2026, 6 months before this check.
Latest release v0.9.9 on 17 Apr 2026.
Public since March 2019, a little over 7 years.
352 stars and 50 forks.
0 commits and 0 new issues in the last 90 days.
22 contributors. No pull requests merged in 90 days; changes go in directly.
No security policy file says how to report a problem. No published security advisories.
How the bars are scored
- Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
- Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
- Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
- Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
- Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
- Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
- Security. A published security policy 80, none 40; published advisories are listed, not scored.
Checked by Repo Radar on 27 Oct 2026 from the repository on GitHub. Covered in Edition 3.
▶Repo detailsthe review · specs · pros & cons · install
What it does
You install it and create a client with either a simple access key or a user-authorised token. It covers the platform's public data methods, including the ones that create and change things, and the README says all resource methods are covered. It handles the sign-in dance that produces a user token. Results come back as Python objects with a .to_dict() method, or as the raw reply if you ask for that with return_json=True. The project recommends the newer pyyoutube.Client interface and keeps the older pyyoutube.Api for code that already uses it. It is 542 commits and 352 stars, with 15 issues open, and MIT licensed. What it does not do is reach the private measurements: this is the public data interface only, so the numbers an owner sees about how long people watched and how often they clicked are not here, and the README does not state a minimum Python version.
Why it matters
Who it suits. Anyone who wants to watch a set of channels over time rather than look at one dashboard today. Three jobs become short scripts: list every video from a set of channels and compare the list weekly, so a new topic from someone else arrives as a message rather than a discovery months later; record titles, views and descriptions into a database each night, so you can see which ones grew; and rewrite the same block of text across forty descriptions in one pass. Skip it if what you want is the private measurements, because those live behind a different interface.
Verdict. Worth two hours, and it is the smallest project in this edition at 352 stars. The small size is the risk and the honest reason it is called a gem: it is a thin, typed wrapper that one maintainer has kept tidy across 542 commits, and if it stopped tomorrow the code it replaces is well documented. Three practical warnings. The daily reading allowance is a real ceiling, and a careless search loop will spend it before lunch. Setting up a project with the platform's owner and getting through the consent screen is a genuinely tedious first hour. And the mirror this report uses for code dates refused this repository on five attempts, so there is no code date here; currency rests on release 0.9.9 of 17 April 2026, and it is explicitly not called dormant. The official alternative is googleapis/google-api-python-client, which is in maintenance mode by its own statement.
Summary (Key Points)from the README
Key features
- Full Data API coverage: The library covers all YouTube Data API V3 resource methods, including insert and update operations.
- Two interfaces: It offers `pyyoutube.Client` and the older `pyyoutube.Api`, with separate docs and examples for each.
- API key access: You can initialize either interface with an API key to read public data.
- Access token support: You can initialize with an access token to reach data that requires authorization.
- OAuth flow: The library can run an OAuth flow so a user grants access to their account.
- Channel lookups: The README's example shows fetching channel details.
- Examples and docs: Usage examples are in `examples/clients` and `examples/apis`, with fuller guides in the `docs` folder.
Important
- Prefer the Client: The README recommends `pyyoutube.Client` because it is more modern and feature rich than `pyyoutube.Api`.
- Authorization needed for some data: Some YouTube data requires an access token or OAuth, so an API key alone will not cover every call.
- Access token setup: Getting an access token is not covered in the README itself and requires reading the linked docs.
Written by an AI model from the project’s README; not part of the review, and it can be wrong.
- MIT, pure Python and typed, so it installs into an existing environment without a dependency fight.
- Replies arrive as objects, with the raw version still available when you need it.
- It turns watching other people's channels into a scheduled script rather than an afternoon of clicking.
- Public data only: the private watch-time and click-through numbers are behind a different interface.
- A daily reading allowance that a careless loop will exhaust, plus a tedious first hour of access setup.
- 352 stars and one maintainer, and no code date could be obtained for this rewrite.
python3 -m venv venv source venv/bin/activate pip install --upgrade python-youtube
