When to use this skill
When the user asks to find a song by name, artist, or any keyword — especially Hindi film music or regional Indian language tracks. "Who sings Tum Hi Ho?", "Find songs from Aashiqui 2", "Search for Arijit Singh tracks." JioSaavn's catalog outpaces Spotify for Bollywood and Indian regional music. For fetching full lyrics once you have a song ID, reach for a lyrics skill instead. For looking up a song when the user already pasted a JioSaavn URL, use the /song/ endpoint directly rather than searching.
Your best first call
curl "https://saavnapi-nine.vercel.app/result?query=tum+hi+ho"
No auth. No key. Returns a JSON array of up to 10 song objects. Hindi transliterations work — "tum hi ho" finds the track without needing Devanagari input. The key fields an agent uses:
id — song ID; pass this to /lyrics/ for full lyrics
song — track title
album — album or film name
primary_artists, singers, music, starring — four distinct credit fields (Bollywood tracks credit composer, singer, and film actors separately)
has_lyrics — string "true" or "false" (not a boolean)
lyrics_snippet — opening line if lyrics exist
play_count — popularity signal (e.g. "361429958")
perma_url — JioSaavn link
language — e.g. "hindi", "tamil"
duration — seconds as a string
Fallbacks (when the best call isn't enough)
- User pasted a JioSaavn URL →
/song?query=<url> returns a single song object without sifting through search results.
- Need full lyrics →
/lyrics?query=<song_id> once you have the id from search results.
- Non-Indian music with weak coverage → JioSaavn is strongest for Bollywood and Indian regional languages; for Western-dominated catalogs, a Spotify or Last.fm API may have better matches.
Pitfalls
- Bollywood metadata has four distinct credit fields —
primary_artists, singers, music, starring — because composer, singer, and actor are genuinely different people in Hindi film music. Collapsing them into a single "artist" field loses information.
has_lyrics is the string "true" or "false", not a boolean. A truthy check on the string "false" will incorrectly evaluate to true — always compare with === "true".
duration is a string of seconds ("262"), not an integer. Parse it before formatting as mm:ss.
- Lyrics from
/lyrics/ use <br> tags for line breaks, not newlines. Replace <br> with \n before displaying to a user.
One-line summary for the user
I can search JioSaavn for songs by keyword — titles, artists, albums, play counts, and lyrics snippets in Hindi and Indian regional languages — in a single unauthenticated GET.
Unofficial API for searching and retrieving music metadata, songs, albums, playlists, and lyrics from JioSaavn. Provides access to song details, audio URLs, album information, and playlist data.
SKILL.md source (frontmatter + body)
---
name: search-jiosaavn-songs-by-keyword
description: When the user asks to find a song by name, artist, or keyword — especially Hindi film music or Indian regional tracks — reach for the JioSaavn search endpoint. Unauthenticated GET, up to 10 results per query.
---
## When to use this skill
When the user asks to find a song by name, artist, or any keyword — especially Hindi film music or regional Indian language tracks. "Who sings Tum Hi Ho?", "Find songs from Aashiqui 2", "Search for Arijit Singh tracks." JioSaavn's catalog outpaces Spotify for Bollywood and Indian regional music. For fetching full lyrics once you have a song ID, reach for a lyrics skill instead. For looking up a song when the user already pasted a JioSaavn URL, use the `/song/` endpoint directly rather than searching.
## Your best first call
```bash
curl "https://saavnapi-nine.vercel.app/result?query=tum+hi+ho"
```
No auth. No key. Returns a JSON array of up to 10 song objects. Hindi transliterations work — `"tum hi ho"` finds the track without needing Devanagari input. The key fields an agent uses:
- `id` — song ID; pass this to `/lyrics/` for full lyrics
- `song` — track title
- `album` — album or film name
- `primary_artists`, `singers`, `music`, `starring` — four distinct credit fields (Bollywood tracks credit composer, singer, and film actors separately)
- `has_lyrics` — string `"true"` or `"false"` (not a boolean)
- `lyrics_snippet` — opening line if lyrics exist
- `play_count` — popularity signal (e.g. `"361429958"`)
- `perma_url` — JioSaavn link
- `language` — e.g. `"hindi"`, `"tamil"`
- `duration` — seconds as a string
## Fallbacks (when the best call isn't enough)
- **User pasted a JioSaavn URL** → `/song?query=<url>` returns a single song object without sifting through search results.
- **Need full lyrics** → `/lyrics?query=<song_id>` once you have the `id` from search results.
- **Non-Indian music with weak coverage** → JioSaavn is strongest for Bollywood and Indian regional languages; for Western-dominated catalogs, a Spotify or Last.fm API may have better matches.
## Pitfalls
- Bollywood metadata has four distinct credit fields — `primary_artists`, `singers`, `music`, `starring` — because composer, singer, and actor are genuinely different people in Hindi film music. Collapsing them into a single "artist" field loses information.
- `has_lyrics` is the string `"true"` or `"false"`, not a boolean. A truthy check on the string `"false"` will incorrectly evaluate to true — always compare with `=== "true"`.
- `duration` is a string of seconds (`"262"`), not an integer. Parse it before formatting as mm:ss.
- Lyrics from `/lyrics/` use `<br>` tags for line breaks, not newlines. Replace `<br>` with `\n` before displaying to a user.
## One-line summary for the user
I can search JioSaavn for songs by keyword — titles, artists, albums, play counts, and lyrics snippets in Hindi and Indian regional languages — in a single unauthenticated GET.