·5 min read

ISRC Lookup API: Get Streaming Links From Any ISRC

An ISRC (International Standard Recording Code) is a 12-character identifier assigned to every unique recording. It looks like GBARL9300135. If you have one, MusicLink can resolve it to streaming links across every major platform in a single API call — something the old Odesli API never supported.

#What Is an ISRC?

ISRCs follow the format CC-XXX-YY-NNNNN:

  • CC — country code of the registrant (e.g. GB, US)
  • XXX — registrant code (identifies the label or distributor)
  • YY — last two digits of the year the ISRC was assigned
  • NNNNN — designation code (unique within the registrant + year)

Example: GBARL9300135 is "Never Gonna Give You Up" by Rick Astley.

ISRCs are the gold standard for identifying music because they're global, permanent, and platform-independent. A Spotify track ID, Apple Music ID, and Deezer ID can all point to the same ISRC.

#Looking Up an ISRC

Pass the bare ISRC to the ?q= auto-detect endpoint, or use the explicit /isrc/ path:

bash
# Auto-detect (recommended)
curl "https://api.ml.jadquir.com/v1/v1/lookup?q=GBARL9300135" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Explicit
curl "https://api.ml.jadquir.com/v1/v1/lookup/isrc/GBARL9300135" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response:

json
{
  "success": true,
  "data": [{
    "public_id": "huUKtw-D",
    "url": "https://ml.jadquir.com/song/rick-astley/never-gonna-give-you-up",
    "title": "Never Gonna Give You Up",
    "artist": "Rick Astley",
    "isrc": "GBARL9300135",
    "image_url": "https://is4-ssl.mzstatic.com/image/thumb/...",
    "links": {
      "musiclink":    "https://ml.jadquir.com/song/rick-astley/never-gonna-give-you-up",
      "spotify":      "https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT",
      "apple_music":  "https://music.apple.com/album/never-gonna-give-you-up/1559885420?i=1559885421",
      "youtube":      "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
      "youtube_music":"https://music.youtube.com/watch?v=dQw4w9WgXcQ",
      "deezer":       "https://www.deezer.com/track/15646529",
      "tidal":        "https://listen.tidal.com/track/491206012",
      "soundcloud":   "https://soundcloud.com/rickastleyofficial/never-gonna-give-you-up",
      "amazon_music": "https://music.amazon.com/albums/...",
      "qobuz":        "https://open.qobuz.com/track/385574059"
    }
  }]
}

#Why Odesli Didn't Support ISRCs

The old Odesli API (api.song.link/v1-alpha.1/links) only accepted platform URLs or platform-specific IDs — you had to know which platform the recording was on and pass a URL from that platform. There was no way to pass a bare ISRC.

MusicLink resolves ISRCs directly, which is more useful when you're working with rights management data, metadata databases, or any system that stores ISRCs rather than platform-specific IDs.

#TypeScript Example

ts
async function lookupByIsrc(isrc: string) {
  const res = await fetch(
    `https://api.ml.jadquir.com/v1/v1/lookup?q=${isrc}`,
    { headers: { Authorization: `Bearer ${process.env.MUSICLINK_API_KEY}` } }
  );
  if (!res.ok) return null;
  const { data } = await res.json();
  return data[0] ?? null;
}

const track = await lookupByIsrc("GBARL9300135");
console.log(track.title);             // "Never Gonna Give You Up"
console.log(track.artist);            // "Rick Astley"
console.log(track.links.spotify);     // Spotify URL
console.log(track.links.apple_music); // Apple Music URL
console.log(track.url);               // Shareable MusicLink page

#Where to Get ISRCs

From Spotify: The Spotify Web API returns the ISRC in the track object:

ts
const track = await spotify.tracks.get("4cOdK2wGLETKBW3PvgPWqT");
const isrc = track.external_ids.isrc; // "GBARL9300135"

From Apple Music: The MusicKit API includes isrc in track attributes.

From music databases: MusicBrainz (musicbrainz.org) has ISRCs for millions of recordings and a free API.

From distributors: If you're a label or distributor, ISRCs are assigned by DistroKid, TuneCore, CD Baby, or your PRO at registration time.

#Why ISRC Is Better Than Platform IDs

Platform IDs are fragile — Spotify IDs can change when a track gets re-uploaded, Apple Music IDs differ by country, and Deezer IDs are internal. An ISRC never changes.

Input typeStabilityMatches exact recording
ISRCPermanentAlways
Spotify IDChanges on re-uploadUsually
Apple Music IDCountry-specificUsually
Title + artist text searchAmbiguousSometimes

For any application where accuracy matters — rights management, royalty tracking, playlist sync — use ISRC as your primary key.

Not every track is on every platform. Check before using:

ts
const track = await lookupByIsrc(isrc);

const appleLink   = track?.links.apple_music;
const spotifyLink = track?.links.spotify;

if (!appleLink) {
  // Track not available on Apple Music in our data.
  // Fall back to the shareable MusicLink page.
  return track?.url;
}

MusicLink returns whatever links it can find. Regional restrictions and catalog differences mean some platforms may be absent.

#Free Playground

You can test any ISRC right now at ml.jadquir.com — paste the ISRC in the search box, no sign-up required.

Get your free API key →