v2026.6.21

JioSaavn for Python

Fully-async Python wrapper with 27 functions — search, radio, lyrics, artists, trending & more. No API key needed.

27
Functions
100%
Async
320p
Stream URLs
0
API Keys
$ pip install SaavnAPI
What's inside

27 async functions — no API key, no rate-limit setup. Just pip install and go.

🔗get_song_by_url(url)

Paste any JioSaavn share link and get the full song object instantly — no ID lookup needed.

NEW
📻get_radio(song_id)

Create a live radio station seeded from any song. Returns a full queue with 320kbps stream URLs.

NEWSong
🌐search_all(query)

Search songs, albums, artists and playlists simultaneously in one parallel async call.

NEWSearch
📦get_songs(ids)

Batch-fetch up to 50 songs in a single API call. Perfect for loading a playlist's worth of metadata fast.

NEWSong
🏠get_modules(language)

Get trending, new releases, charts and featured playlists in one call — ideal for a home screen.

NEWDiscovery
🔎get_top_searches()

Live trending search terms on JioSaavn — power your autocomplete or a "popular" suggestions bar.

NEWDiscovery
👤get_artist(artist_id)

Full artist profile: bio, social links, top songs, top albums, similar artists and follower count.

Artist
🎵get_song(song_id)

Full song metadata with decrypted 320 kbps stream URL, optional lyrics, album info and play count.

Song
JioSaavnClient

Reuse one aiohttp session across all calls for maximum throughput — ideal for batch pipelines.

Client

Quick start
python
import 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())
🖥 Live Terminal

Click any quick-command button or type a Python call to see realistic output. Use ↑↓ for history.

python3 · SaavnAPI v2026.6.21 · 27 functions
>>>

ℹ Outputs are realistic simulations. Run python Testing.py locally for live data from JioSaavn.

⌨ CLI Guide

Run Testing.py for a full interactive numbered menu covering all 27 functions.

1

Install dependencies

$ pip install aiohttp
# or install the full package from ZIP:
$ pip install -e ./SaavnAPI
2

Launch the interactive tester

$ cd SaavnAPI
$ python Testing.py
3

Pick 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):
4

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=False
5

Quick 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])
"
📦 Python API Examples

Copy-paste ready code for every feature. All functions are async — call with await.

🔍 Search

python
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

python
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

python
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

python
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

python
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

python
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())
📋 All 27 Functions

🆕 = added in v2026.6.21  ·  All accept an optional client= kwarg for shared sessions.

FunctionReturnsDescription
search(query, limit, lyrics)list[dict]Search songs by keywordSearch
search_songs(query, limit, page)list[dict]Paginated song searchSearch
search_albums(query, limit, page)list[dict]Search albumsSearch
search_artists(query, limit, page)list[dict]Search artistsSearch
search_playlists(query, limit, page)list[dict]Search playlistsSearch
search_all(query, limit) 🆕dictAll 4 categories in one parallel callNEW
get_song(song_id, lyrics)dict | NoneFull song details + 320kbps stream URLSong
get_songs(song_ids, lyrics) 🆕list[dict]Batch fetch up to 50 songs in one API callNEW
get_lyrics(song_id)str | NoneFull lyrics textSong
get_suggestions(song_id, limit)list[dict]Similar song recommendationsSong
get_radio(song_id, limit) 🆕list[dict]Radio station seeded from a songNEW
get_song_by_url(url, lyrics) 🆕dict | NoneResolve JioSaavn song URL → full song dictNEW
get_album_by_url(url) 🆕dict | NoneResolve JioSaavn album URL → album dictNEW
get_playlist_by_url(url) 🆕dict | NoneResolve JioSaavn playlist URL → playlist dictNEW
get_album(album_id, lyrics)dict | NoneAlbum details + full track listAlbum
get_playlist(list_id, lyrics)dict | NonePlaylist details + all songsPlaylist
get_artist(artist_id, n_song, n_album)dict | NoneFull artist profile with bio + top contentArtist
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 albumsDiscovery
get_new_releases(language, limit)list[dict]Newly released albumsDiscovery
get_top_searches(limit) 🆕list[str]Live trending search termsNEW
get_charts()list[dict]Official JioSaavn chartsDiscovery
get_featured_playlists(language, limit)list[dict]Curated featured playlistsDiscovery
get_modules(language, limit) 🆕dictAll homepage sections in one callNEW
JioSaavnClientasync ctx mgrShared aiohttp session for batch requestsClient