27 async functions — no API key, no rate-limit setup. Just pip install and go.
Paste any JioSaavn share link and get the full song object instantly — no ID lookup needed.
NEWCreate a live radio station seeded from any song. Returns a full queue with 320kbps stream URLs.
NEWSongSearch songs, albums, artists and playlists simultaneously in one parallel async call.
NEWSearchBatch-fetch up to 50 songs in a single API call. Perfect for loading a playlist's worth of metadata fast.
NEWSongGet trending, new releases, charts and featured playlists in one call — ideal for a home screen.
NEWDiscoveryLive trending search terms on JioSaavn — power your autocomplete or a "popular" suggestions bar.
NEWDiscoveryFull artist profile: bio, social links, top songs, top albums, similar artists and follower count.
ArtistFull song metadata with decrypted 320 kbps stream URL, optional lyrics, album info and play count.
SongReuse one aiohttp session across all calls for maximum throughput — ideal for batch pipelines.
Clientimport asyncio
from JioSaavn import search_all, get_radio, get_modules, get_songs
async def main():
# 1 — Search everything at once
results = await search_all("Arijit Singh", limit=5)
for s in results["songs"]:
print(s["song"], "—", s["media_url"])
# 2 — Start a radio station
seed_id = results["songs"][0]["id"]
radio = await get_radio(seed_id, limit=10)
# 3 — Batch-fetch those 10 songs in one call
tracks = await get_songs([t["id"] for t in radio])
# 4 — Full homepage modules for Hindi
home = await get_modules(language="hindi", limit=5)
for t in home["trending"]:
print(t["title"])
asyncio.run(main())
Click any quick-command button or type a Python call to see realistic output. Use ↑↓ for history.
ℹ Outputs are realistic simulations. Run python Testing.py locally for live data from JioSaavn.
Run Testing.py for a full interactive numbered menu covering all 27 functions.
Install dependencies
$ pip install aiohttp
# or install the full package from ZIP:
$ pip install -e ./SaavnAPILaunch the interactive tester
$ cd SaavnAPI
$ python Testing.pyPick a function from the menu
╔══════════════════════════════════════════════════════════╗
║ SaavnAPI Interactive Tester v2026.6.21 ║
║ 27 functions · fully tested · async ║
╚══════════════════════════════════════════════════════════╝
1. search() 15. get_artist()
2. search_songs() 16. get_artist_top_songs()
3. search_albums() 17. get_artist_top_albums()
4. search_artists() 18. get_album()
5. search_playlists() 19. get_playlist()
6. search_all() 🆕 20. get_trending()
7. get_song() 21. get_new_releases()
8. get_songs() batch 🆕 22. get_top_searches() 🆕
9. get_lyrics() 23. get_charts()
10. get_suggestions() 24. get_featured_playlists()
11. get_radio() 📻 🆕 25. get_modules() 🏠 🆕
12. get_song_by_url() 🆕 26. JioSaavnClient ⚡
13. get_album_by_url() 🆕 27. Raw JSON output
14. get_playlist_by_url()🆕
Choose (0-27):Fill inputs — defaults pre-filled in brackets
→ Query [Arijit Singh]: Tum Hi Ho
→ Limit [5]: 3
✅ 3 songs found
1. Tum Hi Ho — Arijit Singh
id=aRZbUYD7 dur=4:22 lang=hindi lyrics=True
2. Tum Hi Ho (Reprise) — Arijit Singh
id=FpxaLHiB dur=2:11 lang=hindi lyrics=True
3. Chahun Main Ya Naa — Arijit Singh, Palak Muchhal
id=4ZSL1xJk dur=4:48 lang=hindi lyrics=FalseQuick one-liner from shell
$ python -c "
import asyncio, sys
sys.path.insert(0,'SaavnAPI')
from JioSaavn import search, get_radio
songs = asyncio.run(search('Tum Hi Ho', limit=1))
radio = asyncio.run(get_radio(songs[0]['id'], limit=5))
for t in radio: print(t['song'], '|', t['media_url'][:50])
"Copy-paste ready code for every feature. All functions are async — call with await.
🔍 Search
from JioSaavn import search, search_songs, search_albums
from JioSaavn import search_artists, search_playlists, search_all
songs = await search("Tum Hi Ho", limit=5)
songs = await search_songs("Arijit Singh", limit=20, page=2)
albums = await search_albums("Rockstar", limit=5)
artists = await search_artists("A.R. Rahman", limit=5)
# All 4 categories in one parallel call — NEW
results = await search_all("Pritam", limit=5)
print(results["songs"], results["albums"], results["artists"], results["playlists"])
🎵 Songs
from JioSaavn import get_song, get_songs, get_lyrics, get_suggestions, get_radio
# Single song with lyrics + decrypted 320kbps stream URL
song = await get_song("aRZbUYD7", lyrics=True)
print(song["media_url"]) # 320 kbps .mp4 stream, ready to play
# Batch fetch up to 50 songs in one call — NEW
tracks = await get_songs(["aRZbUYD7", "4ZSL1xJk", "FpxaLHiB"])
# Radio station seeded from a song — NEW
radio = await get_radio("aRZbUYD7", limit=15)
for t in radio:
print(t["song"], t["media_url"])
# Similar song suggestions
recs = await get_suggestions("aRZbUYD7", limit=10)
🔗 URL Resolvers — NEW
from JioSaavn import get_song_by_url, get_album_by_url, get_playlist_by_url
# Paste any JioSaavn share link — no ID extraction needed
song = await get_song_by_url("https://www.jiosaavn.com/song/tum-hi-ho/aRZbUYD7", lyrics=True)
album = await get_album_by_url("https://www.jiosaavn.com/album/rockstar/OelUBDQMMXc_")
playlist = await get_playlist_by_url("https://www.jiosaavn.com/featured/top-50/AbCdEf12")
👤 Artists
from JioSaavn import search_artists, get_artist, get_artist_top_songs, get_artist_top_albums
# Step 1: find the numeric artist ID
artists = await search_artists("Arijit Singh", limit=1)
aid = artists[0]["id"] # e.g. "459320"
# Step 2: full profile with top songs + albums
artist = await get_artist(aid, n_song=10, n_album=5)
print(artist["name"], artist["follower_count"], artist["bio"])
# Paginate through all songs (page 2, sorted by latest)
page2 = await get_artist_top_songs(aid, page=2, category="latest")
🔥 Discovery
from JioSaavn import get_trending, get_new_releases, get_top_searches
from JioSaavn import get_charts, get_featured_playlists, get_modules
trending = await get_trending(language="hindi", limit=10)
releases = await get_new_releases(language="punjabi", limit=5)
top_terms = await get_top_searches(limit=10) # NEW
# All homepage data in one call — NEW
home = await get_modules(language="hindi", limit=8)
print(home["trending"])
print(home["new_releases"])
print(home["charts"])
print(home["featured_playlists"])
⚡ JioSaavnClient — shared session
import asyncio
from JioSaavn import JioSaavnClient, search_all, get_charts, get_modules, get_trending
async def main():
async with JioSaavnClient() as client: # one shared aiohttp session
results, charts, home, trending = await asyncio.gather(
search_all("Arijit Singh", limit=5, client=client),
get_charts(client=client),
get_modules(language="hindi", client=client),
get_trending(limit=10, client=client),
)
asyncio.run(main())
🆕 = added in v2026.6.21 · All accept an optional client= kwarg for shared sessions.
| Function | Returns | Description | |
|---|---|---|---|
| search(query, limit, lyrics) | list[dict] | Search songs by keyword | Search |
| search_songs(query, limit, page) | list[dict] | Paginated song search | Search |
| search_albums(query, limit, page) | list[dict] | Search albums | Search |
| search_artists(query, limit, page) | list[dict] | Search artists | Search |
| search_playlists(query, limit, page) | list[dict] | Search playlists | Search |
| search_all(query, limit) 🆕 | dict | All 4 categories in one parallel call | NEW |
| get_song(song_id, lyrics) | dict | None | Full song details + 320kbps stream URL | Song |
| get_songs(song_ids, lyrics) 🆕 | list[dict] | Batch fetch up to 50 songs in one API call | NEW |
| get_lyrics(song_id) | str | None | Full lyrics text | Song |
| get_suggestions(song_id, limit) | list[dict] | Similar song recommendations | Song |
| get_radio(song_id, limit) 🆕 | list[dict] | Radio station seeded from a song | NEW |
| get_song_by_url(url, lyrics) 🆕 | dict | None | Resolve JioSaavn song URL → full song dict | NEW |
| get_album_by_url(url) 🆕 | dict | None | Resolve JioSaavn album URL → album dict | NEW |
| get_playlist_by_url(url) 🆕 | dict | None | Resolve JioSaavn playlist URL → playlist dict | NEW |
| get_album(album_id, lyrics) | dict | None | Album details + full track list | Album |
| get_playlist(list_id, lyrics) | dict | None | Playlist details + all songs | Playlist |
| get_artist(artist_id, n_song, n_album) | dict | None | Full artist profile with bio + top content | Artist |
| get_artist_top_songs(artist_id, page, category) | list[dict] | Artist top songs (paginated) | Artist |
| get_artist_top_albums(artist_id, page) | list[dict] | Artist top albums (paginated) | Artist |
| get_trending(language, limit) | list[dict] | Currently trending songs and albums | Discovery |
| get_new_releases(language, limit) | list[dict] | Newly released albums | Discovery |
| get_top_searches(limit) 🆕 | list[str] | Live trending search terms | NEW |
| get_charts() | list[dict] | Official JioSaavn charts | Discovery |
| get_featured_playlists(language, limit) | list[dict] | Curated featured playlists | Discovery |
| get_modules(language, limit) 🆕 | dict | All homepage sections in one call | NEW |
| JioSaavnClient | async ctx mgr | Shared aiohttp session for batch requests | Client |