Skip to main content

🎧 SaavnAPI — The Complete JioSaavn Async Toolkit

⚡ v2026.7.11 — Fast, fully-async Python library for JioSaavn with 70+ features: core APIs, downloads, AI analysis, smart discovery, sync with Spotify/YouTube, MCP/GraphQL/WebSocket servers, and more.

Python Async License


📦 Installation

# Base install
pip install -e .

# With extras
pip install -e ".[download]"   # ID3 tagging (mutagen)
pip install -e ".[servers]"    # MCP, GraphQL, WebSocket
pip install -e ".[sync]"       # Spotify/YouTube sync
pip install -e ".[all]"        # everything
pip install -e ".[dev]"        # dev/test tools

Docs: open index.html in your browser, or visit saavn-api.netlify.app.


🚀 Quick Start

import asyncio
from JioSaavn import JioSaavnClient

async def main():
    async with JioSaavnClient() as client:
        results = await client.search_songs("Kesariya", limit=5)
        for s in results:
            print(s["name"], "—", s["primaryArtists"])

asyncio.run(main())

🧭 Feature Map (70+)

1. Core Music APIs (26)

Category Functions
Song get_song, get_songs, get_lyrics, get_suggestions
Album get_album, get_album_by_url
Artist get_artist, get_artist_top_songs, get_artist_top_albums
Playlist get_playlist, get_playlist_by_url
Search search, search_songs, search_albums, search_artists, search_playlists, search_all
Discovery get_trending, get_new_releases, get_top_searches, get_charts, get_featured_playlists, get_modules, get_radio
Resolve get_song_by_url

2. Download Helper Pro

  • download_with_lyrics(client, song_id, path, bitrate=320) — 320kbps + ID3 tags + embedded USLT lyrics
  • DownloadManager — persistent SQLite-backed queue with retry, resume, and progress
from JioSaavn.Modules.DownloadPro import DownloadManager, download_with_lyrics
await download_with_lyrics(client, "song_id", "./out.mp3")

3. Language / Mood / Genre Browse

Supported: 16 languages · 12 moods · 14 genres (see JioSaavn/Modules/Browse.py-equivalent via search filters).

4. AI Analysis

  • analyze_playlist(songs) — stats, top artists, avg duration, language mix
  • find_duplicates(songs, threshold=0.9) — fuzzy duplicate finder
  • infer_mood(song) — mood classification
  • recommend_from_history(client, history) — personalized recs
  • similar_songs_deep(client, seed_id, hops=2) — graph-walk similarity

5. Smart Playback

  • SmartQueue — infinite auto-refill queue based on current track
  • crossfade_plan(current, next_, fade_seconds=6) — crossfade timing metadata

6. Sync & Backup

  • sync_spotify_playlist(client, url_or_id) — match Spotify → JioSaavn
  • sync_youtube_playlist(client, url_or_id) — match YouTube → JioSaavn
  • backup_library(data, path, format="json"|"sqlite") / restore_library(path)
  • fuzzy_search(client, query, min_score=0.5) — typo-tolerant
  • search_by_lyrics(client, snippet) — find songs by lyric fragments
  • search_filters(...) — combine language/year/duration constraints

8. Discovery Pack

  • daily_mix(client, seed_songs, size=30)
  • time_machine(client, year, limit=30) — by release year
  • regional_charts(client, language)
  • artist_radio(client, artist_id, size=30)

9. Social / Metadata

  • get_song_credits(client, song_id) — full credits
  • get_release_calendar(client, days_back=30)
  • compare_artists(client, id_a, id_b)

10. Webhooks

  • WebhookNotifier — push new releases / chart changes to a URL with HMAC signing

11. Dev Servers

Server Module Purpose
MCP JioSaavn.Servers.MCP Model Context Protocol server for LLMs
GraphQL JioSaavn.Servers.GraphQL Strawberry-based GraphQL API
WebSocket JioSaavn.Servers.WebSocket Now-playing hub for real-time apps

12. Infrastructure

  • Async LRU cache with TTL (Utils/Cache)
  • Token-bucket rate limiter (Utils/RateLimit)
  • Typed exception hierarchy (Core/Errors)
  • Exponential backoff + auto-retry HTTP layer
  • Full type hints (py.typed) + TypedDict models
  • GitHub Actions CI (tests + lint)

🧪 Testing

Run the interactive tester covering all 70+ features:

python Testing.py             # run all suites
python Testing.py --suite core        # core APIs only
python Testing.py --suite mega        # AI / discovery / smart queue
python Testing.py --suite servers     # MCP / GraphQL / WebSocket smoke
python Testing.py --list              # show all available tests

Last full run: 45 / 47 passing (2 geo-blocked in test region).


📚 Examples

Playlist analysis

from JioSaavn.Analysis.Playlist import analyze_playlist, find_duplicates
pl = await client.get_playlist("110858205")
stats = analyze_playlist(pl["songs"])
dupes = find_duplicates(pl["songs"])

Daily mix

from JioSaavn.Modules.Discovery import daily_mix
mix = await daily_mix(client, seed_songs=["5WXAlMNt", "9BjJPi9d"], size=30)

Spotify → JioSaavn

from JioSaavn.Modules.Sync import sync_spotify_playlist
result = await sync_spotify_playlist(client, "https://open.spotify.com/playlist/...")

MCP server (for Claude / LLMs)

python -m JioSaavn.Servers.MCP

📜 License

MIT — free for personal & educational use. Not affiliated with JioSaavn.

🙏 Credits

Maintained by the SaavnAPI community. PRs welcome — see CONTRIBUTING.md.

Metadata

Release files for SaavnAPI 2026.9.20

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SaavnAPI 2026.9.20
File Size Uploaded
saavnapi-2026.9.20.tar.gz 47.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SaavnAPI 2026.9.20
File Interpreter ABI Platform
saavnapi-2026.9.20-py3-none-any.whl Python 3 none any Details

Total release size: 113.9 kB

Release files / saavnapi-2026.9.20.tar.gz

Download URL saavnapi-2026.9.20.tar.gz
Size 47.8 kB
Tags Source
SHA-256 checksum
How to use checksums
39f3798c15ea43d57a3f6e8da702f27a5ae32d7d3f044b29a58a4cdf54fe0159
BLAKE2b-256 checksum
How to use checksums
3aabab6f41f7d22e0de2529cf2ba54dc53ee8fe8ba6d35a231825b1b65b1b0af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / saavnapi-2026.9.20-py3-none-any.whl

Download URL saavnapi-2026.9.20-py3-none-any.whl
Size 66.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
82c8a0054b4d0ad1b4e12cad6a640fedbf5aebde0b04c3be3c389f5dae089469
BLAKE2b-256 checksum
How to use checksums
cb292d940ba25c77549fef96eaa44e64986157340d4e797362e02fb2ab10f059
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

2026.9.20 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page