SHOUTcast Widgets
Free · No API key · Since 2012

The Artist Library

Biographies, photos, genres and facts for the artists your station plays. Search it here, or plug it into your own projects for free. Every new artist anyone looks up is saved for good, so the library keeps growing.

68,331artists saved
57,749artist photos
3sources: Last.fm, Spotify, MusicBrainz
2012collecting since
How it works

Every lookup grows the library

The goal is simple: save as much artist data as possible, once, so every station and project can reuse it for years.

You ask for an artist

Your widget, app or script calls the API with any artist name, for example the song that's playing right now.

We gather everything

If the artist is new, we pull the biography, photo, genres, facts and similar artists from Last.fm, Spotify and MusicBrainz.

It's saved for good

The artist is stored permanently and served instantly to everyone after that, including every future photo we add.

Running a station? Look up every artist you play, not just the famous ones. The more names come in, the more complete the library gets for everybody.

Developers

Quick start: one URL

No sign-up, no key, and it works straight from the browser (CORS enabled). Send an artist name and get JSON back.

Endpoint
GET https://shoutcastwidgets.com/ArtistLibrary/v2/api/?artist=Madonna

URL-encode the name (Guns%20N%27%20Roses). status is 1 when the artist is found. The first lookup of a new artist can take a few seconds; after that it's instant. Try it →

async function getArtist(name) {
  const res = await fetch('https://shoutcastwidgets.com/ArtistLibrary/v2/api/?artist=' + encodeURIComponent(name));
  const artist = await res.json();
  if (artist.status !== 1) return null;               // not found
  return {
    name:   artist.displayName || name,
    photo:  artist.photos.large.at(-1)?.url,          // newest photo
    thumb:  artist.photos.small.at(-1)?.url,
    bio:    artist.bioText,
    genres: artist.genres,
  };
}

getArtist('Madonna').then(console.log);
Example response for Madonna (shortened)
{
    "name": "MADONNA",
    "displayName": "Madonna",
    "status": 1,
    "bioText": "Madonna Louise Ciccone (born August 16, 1958) is an American singer, songwriter...",
    "photos": {
        "large": [
            {
                "url": "https://shoutcastwidgets.com/ArtistLibrary/Artists-2020/Big/MADONNA.webp",
                "width": 1024,
                "height": 549,
                "size": 102358,
                "year": 2020
            },
            {
                "url": "https://shoutcastwidgets.com/ArtistLibrary/Artists-2027/Big/MADONNA.JPG",
                "width": 1200,
                "height": 900,
                "size": 165236,
                "year": 2027
            }
        ],
        "small": [
            {
                "url": "https://shoutcastwidgets.com/ArtistLibrary/Artists-2027/Small/MADONNA.JPG",
                "width": 150,
                "height": 112,
                "size": 9354,
                "year": 2027
            }
        ]
    },
    "tags": "Pop, Dance, Electropop",
    "genres": "Pop, Dance",
    "similar": "Lady Gaga, Kylie Minogue, Cher",
    "country": "United States",
    "dob": "1958-08-16",
    "hometown": "Bay City",
    "gender": "Female",
    "followers": 8667651,
    "spotifyPopularity": 82,
    "spotifyUrl": "https://open.spotify.com/artist/6tbjWDEIzxoDsBA1FuhfPW",
    "lastFmUrl": "https://www.last.fm/music/Madonna",
    "mbid": "79239441-bfd5-4981-a70c-55c3f15c1287"
}

Response fields

FieldDescriptionSource
status1 when the artist was found, 0 when not. An error field means the request failed.—
displayNameCorrectly spelled name (e.g. Guns N' Roses). name is the upper-case cache key.Last.fm / Spotify
bioTextPlain-text biography, paragraphs separated by blank lines (bio is the same, URL-encoded)Last.fm
photos.largeEvery photo we have, oldest first, as {url, width, height, size, year}. The last one is the newest.Library
photos.smallMatching thumbnails, up to 150×150 pxLibrary
tags, genres, similarComma-separated listsLast.fm / Spotify
followers, spotifyPopularity, statsSpotify followers, popularity 0–100, Last.fm listenersSpotify / Last.fm
country, hometown, dob, gender, title, aka, mbidArtist facts (dob is the formation date for groups)MusicBrainz
spotifyUrl, lastFmUrlProfile linksSpotify / Last.fm

Using SHOUTcast Widgets themes or players? They use the original widget format at https://shoutcastwidgets.com/ArtistLibrary/library/?artist=, where photos are four relative paths. New projects should use v2.

Build it with AI

Copy, paste, done

Pick a prompt, paste it into ChatGPT, Claude, Gemini or Copilot, fill in the [brackets], and you'll get working code. Each prompt includes the full API description, so the AI doesn't need to browse the web.

HTMLJavaScriptRadio

Now Playing artist card for my radio site

A self-contained widget that shows the current artist's photo, bio and genres and updates when the song changes.

Preview
Build me a self-contained HTML/CSS/JavaScript "Now Playing" artist card for my internet radio station's website. It should show the current artist's newest photo, name, a short bio, genres and a link to more info, and update automatically when the song changes.

My station's now-playing source: [PASTE YOUR URL, e.g. AzuraCast https://YOUR-SERVER/api/nowplaying/YOUR-STATION, Icecast https://YOUR-SERVER:8000/status-json.xsl, or SHOUTcast v2 https://YOUR-SERVER:8000/currentsong?sid=1]
My site's style: [e.g. "dark with orange accents, rounded corners" or paste your CSS colours]

Requirements:
- Poll my now-playing source every 20 seconds and only call the Artist Library when the artist changes.
- Get the artist from the song title using the cleaning rules in the spec below.
- Fetch the artist from the Artist Library API (spec below) and cache each artist in localStorage for 24 hours.
- If status is 0 or there is no photo, show a placeholder with the artist's initials.
- Trim the bio to about 300 characters with a "Read more" link to the artist's page on the Artist Library.
- Include the credit line from the usage rules.
- Responsive and accessible (alt text, readable contrast). No external libraries.
- If my now-playing source blocks cross-origin requests, explain the simplest proxy fix for my server type.
- Give me one file I can paste into my site, plus short install steps.
[+ the full API description]
PythonBulkArchive

Save artist data for my whole music library

A script that looks up every artist you play and saves their data and photos locally. It also adds each artist to the shared library.

Preview
Write a Python 3 script that builds a local archive of artist data for every artist in my music collection, using the Artist Library API (spec below). Every artist it looks up is also saved permanently in the shared library, so this helps it grow.

My artist list comes from: [PICK ONE: a folder of MP3/FLAC files (read the artist tags) / an M3U or CSV playlist / my AzuraCast or SHOUTcast song history / a text file with one artist per line]

Requirements:
- Collect artist names and de-duplicate them case-insensitively. Also look up the main artist of "feat."/"ft." credits.
- Call the v2 endpoint once per artist, one request at a time, at most one request every 2 seconds, with a 30-second timeout and 3 retries with backoff.
- Save each response to artists/<safe-file-name>.json and download the newest large photo and thumbnail into artists/photos/.
- Keep a progress file so the script can be stopped and resumed, and skip artists already saved.
- At the end write summary.csv (input name, display name, found, genres, country, photo file) and print totals: found, not found, errors.
- Use only the requests library (plus mutagen if reading audio files). Include setup and run instructions for Windows and macOS/Linux.
[+ the full API description]
WordPressPHP

WordPress plugin with an [artist_info] shortcode

Show any artist's photo, facts, bio and similar artists in posts and pages, cached on your server.

Preview
Write a small WordPress plugin called "Artist Info" that adds the shortcode [artist_info name="Madonna"]. It shows the artist's newest photo, display name, facts (country, born/formed, hometown), genres as tags, a bio excerpt and similar artists, using the Artist Library API (spec below).

Requirements:
- Fetch server-side with wp_remote_get (30-second timeout). Cache each artist with set_transient for 7 days, and "not found" for 1 hour.
- Shortcode options: name (required), bio_length (default 400), show_photo, show_similar.
- Similar artists link to the artist's page on the Artist Library.
- Escape all output (esc_html, esc_url, esc_attr). If the API fails, show nothing rather than an error.
- Include the credit line from the usage rules and simple, responsive CSS that inherits my theme's fonts.
- Give me the complete plugin file(s) and installation steps.
[+ the full API description]
PHPSEO

Artist profile pages for my PHP website

artist.php?name=… pages with a photo gallery, bio, facts and links, plus SEO tags. Cached on disk.

Preview
Add artist profile pages to my PHP website: artist.php?name=Madonna shows a photo gallery (every photo, newest first), the full bio in paragraphs, facts (country, born/formed, hometown, gender), genres, similar artists linking to their own artist.php pages, and Spotify/Last.fm links.

My site uses: [describe your layout or CSS framework, e.g. "Bootstrap 5" or "plain HTML with my own style.css"]

Requirements:
- Fetch server-side from the Artist Library API (spec below) with cURL and a 30-second timeout. Cache the JSON on disk for 7 days (1 hour for status 0).
- Escape everything with htmlspecialchars. If status is 0, show a friendly "not found" page with HTTP 404.
- Add an SEO title and meta description from the bio, and schema.org JSON-LD (Person when gender is set, otherwise MusicGroup).
- Include the credit line from the usage rules.
[+ the full API description]
Any language

Use the library in my own project

A general prompt for anything else: apps, bots, spreadsheets, game shows, DJ tools. Describe your project and paste.

Preview
I want to use the free SHOUTcast Widgets Artist Library API (spec below) in my project.

My project: [describe what you're building, the language or platform, and which artist info you want to show or store]

Please:
- Write a small reusable client (function or class) that fetches an artist, caches results, handles status 0, timeouts and network errors, and follows the usage rules.
- Show how to use it in my project, and explain where each piece of code goes.
- Point out anything in the spec that doesn't fit my use case.
[+ the full API description]
AI with web access

Short version

If your AI can read web pages, this one line is enough. It points the AI at our plain-text guide, llms.txt.

Read https://shoutcastwidgets.com/ArtistLibrary/llms.txt and help me use the SHOUTcast Widgets Artist Library API in my project: [describe your project]
Fair use

Keep it fast and free for everyone

Cache results

Keep found artists for at least 24 hours and "not found" for an hour. Don't ask for the same artist more than once an hour.

Go gently in bulk

Loading a big collection? Send one request at a time, at most one every 2 seconds. It's fine to leave it running overnight.

Give credit

Biographies come from Last.fm under CC BY-SA. Show “Artist info: SHOUTcast Widgets Artist Library” with a link back here.

Help it grow

Send real artist names, cleaned from your song titles (“Artist - Title” → “Artist”), and skip jingles, ads and station IDs.

Spotted a wrong photo or bio? Tell us and we'll fix it for everyone.