- β‘ 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).
pip install ytlookupgit clone https://github.com/CertifiedCoders/ytlookup
cd ytlookup
pip install -e .Requirements: Python 3.8+ and aiohttp
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())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())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())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())For complete API contracts, response shapes, and advanced usage patterns, see DOCUMENTATION.md.
- 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.
Contributions are welcome and appreciated.
- 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
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright Β© 2026 CertifiedCoders
- 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
