Blazing-fast async YouTube search library - no API key required
Project description
✨ Why ytlookup?
- ⚡ Blazing fast: Typical response time is around 50-100ms with optimized InnerTube requests.
- 🔐 No API key needed: Zero setup, no quotas, and no external credential configuration.
- 🎯 Simple developer experience: Clean async API with typed return structures and predictable fields.
- 🚀 Production-ready by design: Includes robust parsing, fallback handling, and stable response formatting.
- 🐍 Modern Python support: Works on Python 3.8-3.14 with a minimal dependency footprint (
aiohttp).
📦 Installation
Quick Install
pip install ytlookup
From Source
git clone https://github.com/CertifiedCoders/ytlookup
cd ytlookup
pip install -e .
Requirements: Python 3.8+ and aiohttp
🚀 Quick Start
Get Video Information (Fast Mode)
import asyncio
from ytlookup import Video
async def main():
# Lightning fast - ~50ms response time! ⚡
video = await Video.get("dQw4w9WgXcQ")
print(f"📹 {video['title']}")
print(f"👤 {video['channel']['name']}")
print(f"👁️ {video['viewCount']['short']}")
print(f"⏱️ {video['duration']['text']}")
asyncio.run(main())
Get Complete Information (With Extras)
import asyncio
from ytlookup import Video
async def main():
# Includes publishedTime and may include likes (~500ms)
video = await Video.get("dQw4w9WgXcQ", fetch_extras=True)
if not video:
print("Video not found")
return
print(f"📅 Published: {video.get('publishedTime', 'N/A')}")
likes = video.get("likesCount", {}).get("short", "N/A")
print(f"👍 Likes: {likes}")
asyncio.run(main())
Search YouTube Videos
import asyncio
from ytlookup import videosearch
async def main():
# Search with metadata
videos = await videosearch("Python tutorial", limit=5)
for video in videos:
print(f"🎬 {video['title']}")
print(f" 📊 {video['viewCount']['short']} • {video['duration']['text']}")
print(f" 🔗 {video['url']}\n")
asyncio.run(main())
Get Playlist Information
import asyncio
from ytlookup import Playlist
async def main():
# Fetch playlist with videos
playlist = await Playlist.get("PLxxx...", limit=10)
if not playlist:
print("Playlist not found")
return
print(f"📋 {playlist['title']}")
print(f"🎬 {playlist['videoCount']} videos")
print(f"👤 {playlist['channel']['name']}")
for video in playlist['videos']:
print(f" • {video['title']}")
asyncio.run(main())
📚 Detailed Guide
For complete API contracts, response shapes, and advanced usage patterns, see DOCUMENTATION.md.
🛠️ Requirements
Minimal Dependencies
- Python: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
- aiohttp: >= 3.8.0
That's it! No complex dependencies.
🤝 Contributing
Contributions are welcome and appreciated.
Quick Start
- Fork this repository
- Create a branch (
git checkout -b feature/your-change) - Make your changes and test locally
- Commit with a clear message
- Open a Pull Request
Not sure where to start?
- Found a bug? Open an issue: GitHub Issues
- Have a feature idea? Share it in GitHub Issues
- Want to improve docs or examples? PRs are always welcome
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright © 2026 CertifiedCoders
🔖 Credits & Acknowledgments
- Special thanks to alexmercerind for youtube-search-python
- Special thanks to aiohttp
- Crafted with passion by CertifiedCoders
- Special thanks to all contributors and users of ytlookup
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ytlookup-1.0.1.tar.gz.
File metadata
- Download URL: ytlookup-1.0.1.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0e47bc0121a013e716b832235e387d40de6d4d6f32bb64419f82c8c109058bf
|
|
| MD5 |
5be9b3f61d3013d34c094ff203eb89ee
|
|
| BLAKE2b-256 |
f86fc5ead81b06de81bc077f01defd3c9b605e76535ca00912f85340680e5d3a
|
Provenance
The following attestation bundles were made for ytlookup-1.0.1.tar.gz:
Publisher:
python-publish.yml on CertifiedCoders/ytlookup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ytlookup-1.0.1.tar.gz -
Subject digest:
c0e47bc0121a013e716b832235e387d40de6d4d6f32bb64419f82c8c109058bf - Sigstore transparency entry: 1189189900
- Sigstore integration time:
-
Permalink:
CertifiedCoders/ytlookup@965c9328617a4978cc3a4ac4f27ac4350b6b9231 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/CertifiedCoders
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@965c9328617a4978cc3a4ac4f27ac4350b6b9231 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ytlookup-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ytlookup-1.0.1-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0b4d8eecf2a57a843c6ad7af88ce686190e5b44b3725d1769d5a616b857fc6f
|
|
| MD5 |
fac25ea2f3c80b9cef05ef55c1f39620
|
|
| BLAKE2b-256 |
338ab53e25fe4d6404d5fd55059e86cad0a0970c9455a6af7009a207a438fe83
|
Provenance
The following attestation bundles were made for ytlookup-1.0.1-py3-none-any.whl:
Publisher:
python-publish.yml on CertifiedCoders/ytlookup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ytlookup-1.0.1-py3-none-any.whl -
Subject digest:
e0b4d8eecf2a57a843c6ad7af88ce686190e5b44b3725d1769d5a616b857fc6f - Sigstore transparency entry: 1189189906
- Sigstore integration time:
-
Permalink:
CertifiedCoders/ytlookup@965c9328617a4978cc3a4ac4f27ac4350b6b9231 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/CertifiedCoders
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@965c9328617a4978cc3a4ac4f27ac4350b6b9231 -
Trigger Event:
release
-
Statement type: