Media, Film & Knowledge

Music Metadata API

The Music Metadata API returns artist, album, track and label data as clean JSON.

14 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary search endpoint returns entities such as artists and recordings with id, name and artist credit plus a total count, and you can pull artist, album, track and work details, a label and an ISRC lookup. It is built for music apps, catalog tools and rights workflows that need normalized music metadata without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/music-metadata/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "radiohead",
    "type": "artist"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "music-metadata",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 320.6,
    "record_count": 25,
    "bytes": 15617,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "limit_reached",
    "type": "artist",
    "total": 29
  },
  "data": {
    "artists": [
      {
        "id": "a74b1b7f-71a[redacted-phone]-d0b5e4122711",
        "type": "Group",
        "type-id": "e431f5f6-b5d2-343d-8b36-72607fffb74b",
        "score": 100,
        "name": "Radiohead",
        "sort-name": "Radiohead",
        "country": "GB",
        "area": {
          "id": "8a754a[redacted-phone]a29-b6d7-2b40ea0481ed",
          "type": "Country",
          "type-id": "06dd0ae4-8c74-30bb-b43d-95dcedf961de",
          "name": "[redacted-name]",
          "sort-name": "United Kingdom",
          "life-span": {
            "ended": "[trimmed-depth]"
          }
        },
        "begin-area": {
          "id": "d840d4b[redacted-phone]b-398de760cc24",
          "type": "City",
          "type-id": "6fd8f29a-3d0a-32fc-980d-ea697b69da78",
          "name": "Abingdon-on-Thames",
          "sort-name": "Abingdon-on-Thames",
          "life-span": {
            "ended": "[trimmed-depth]"
          }
        },
        "isnis": [
          "[redacted-phone]"
        ],
        "life-span": {
          "begin": "1991",
          "ended": null
        },
        "aliases": [
          {
            "sort-name": "[trimmed-depth]",
            "type-id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "locale": "[trimmed-depth]",
            "type": "[trimmed-depth]",
            "primary": "[trimmed-depth]",
            "begin-date": "[trimmed-depth]",
            "end-date": "[trimmed-depth]"
          },
          {
            "sort-name": "[trimmed-depth]",
            "type-id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "locale": "[trimmed-depth]",
            "type": "[trimmed-depth]",
            "primary": "[trimmed-depth]",
            "begin-date": "[trimmed-depth]",
            "end-date": "[trimmed-depth]"
          },
          {
            "sort-name": "[trimmed-depth]",
            "type-id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "locale": "[trimmed-depth]",
            "type": "[trimmed-depth]",
            "primary": "[trimmed-depth]",
            "begin-date": "[trimmed-depth]",
            "end-date": "[trimmed-depth]"
          }
        ],
        "tags": [
          {
            "count": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "count": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "count": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ]
      },
      {
        "id": "c74f[redacted-phone]b6-f70da905c05a",
        "type": "Group",
        "type-id": "e431f5f6-b5d2-343d-8b36-72607fffb74b",
        "score": 64,
        "name": "[redacted-name]",
        "sort-name": "On a Friday",
        "area": {
          "id": "d840d4b[redacted-phone]b-398de760cc24",
          "type": "City",
          "type-id": "6fd8f29a-3d0a-32fc-980d-ea697b69da78",
          "name": "Abingdon-on-Thames",
          "sort-name": "Abingdon-on-Thames",
          "life-span": {
            "ended": "[trimmed-depth]"
          }
        },
        "begin-area": {
          "id": "d840d4b[redacted-phone]b-398de760cc24",
          "type": "City",
          "type-id": "6fd8f29a-3d0a-32fc-980d-ea697b69da78",
          "name": "Abingdon-on-Thames",
          "sort-name": "Abingdon-on-Thames",
          "life-span": {
            "ended": "[trimmed-depth]"
          }
        },
        "disambiguation": "pre‐Radiohead group, until 1991",
        "life-span": {
          "begin": "1985",
          "end": "1991",
          "ended": true
        },
        "aliases": [
          {
            "sort-name": "[trimmed-depth]",
            "type-id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "locale": "[trimmed-depth]",
            "type": "[trimmed-depth]",
            "primary": "[trimmed-depth]",
            "begin-date": "[trimmed-depth]",
            "end-date": "[trimmed-depth]"
          },
          {
            "sort-name": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "locale": "[trimmed-depth]",
            "type": "[trimmed-depth]",
            "primary": "[trimmed-depth]",
            "begin-date": "[trimmed-depth]",
            "end-date": "[trimmed-depth]"
          }
        ],
        "tags": [
          {
            "count": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "count": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "count": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ]
      },
      {
        "id": "3ecaa799-94ae-45cd-9ad1-bcabae4073e1",
        "score": 62,
        "name": "[redacted-name]",
        "sort-name": "radiohead 3",
        "disambiguation": "Capsmusic LTD. artist",
        "life-span": {
          "ended": null
        }
      }
    ],
    "count": 29,
    "offset": 0,
    "type": "artist"
  }
}
Actions

What the Music Metadata API does

ActionDescriptionConcrete use caseKey params
searchsearch artist/album/release/recording/track/label/work (advanced field search supported)Content platforms call search to search artist/album/release/recording/track/label/work (advanced field search supported).query, type, limit, offset
artist_detailartist + relationships (members/collaborations), discography, aliases, tagsResearch tools call artist_detail to get artist + relationships (members/collaborations), discography, aliases, tags.mbid, inc
album_detailrelease (tracklist+labels+ISRCs+discids) or release-groupCommunity analysts call album_detail to get release (tracklist+labels+ISRCs+discids) or release-group.mbid, entity, inc
track_detailrecording + ISRCs + work-relations + artist creditsMedia monitors call track_detail to get recording + ISRCs + work-relations + artist credits.mbid, inc
labellabel detail (country, label-code, aliases, url-rels)Content platforms call label to get label detail (country, label-code, aliases, url-rels).mbid, inc
work_detailwork/composition + ISWC + writer relationsResearch tools call work_detail to get work/composition + ISWC + writer relations.mbid, inc
isrc_lookupreverse ISRC -> recordings (cross-catalog key)Community analysts call isrc_lookup to get reverse ISRC -> recordings (cross-catalog key).isrc, inc
cover_artCover-Art-Archive images (multi-resolution) for a release/release-groupMedia monitors call cover_art to get cover-Art-Archive images (multi-resolution) for a release/release-group.mbid, entity
itunes_searchiTunes / Apple Music search for artists, albums or songs — returns genre, high-res artwork, a 30s preview URL, price and store link (country-aware)Content platforms call itunes_search to get iTunes / Apple Music search for artists, albums or songs.query, type, limit, country
chartsApple Music top charts — the most-played songs or albums in a country (updated through the day)Research tools call charts to get apple Music top charts.type, country, limit
artist_profileRich artist profile: biography, genre/style/mood, formed year, label, follower/popularity counts, social links and images (TheAudioDB). Pass the MusicBrainz mbid (from search/artist_detail) for an exact match, or an artist nameCommunity analysts call artist_profile to get rich artist profile.mbid, name
artist_top_tracksAn artist's most popular tracks (top 10) with album, duration, genre and music-video link (TheAudioDB)Media monitors call artist_top_tracks to get an artist's most popular tracks (top 10) with album, duration, genre and music-video link (Th….name
similar_artistsArtists similar to a given artist, ranked by a collaborative listening model (ListenBrainz, CC0). Pass the artist's MusicBrainz mbidContent platforms call similar_artists to get artists similar to a given artist, ranked by a collaborative listening model (ListenBrainz, CC0).mbid, limit
lyricsSong lyrics — both plain text and time-synced (LRC) when available — for an artist + track (lrclib, open). Optionally pass album+duration for an exact matchResearch tools call lyrics to get song lyrics.artist, track, album, duration
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/music-metadata/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"radiohead","type":"artist"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.music-metadata.search with {"query":"radiohead","type":"artist"}.
Use cases

Who uses this API and why

  • Music apps call isrc_lookup to enrich a track with canonical metadata.
  • Catalog tools use artist_detail and album_detail to resolve a full discography.
  • Rights and royalty tools use label and work_detail to attribute recordings.
FAQ

Questions developers ask before integrating

What is the Music Metadata API?

Music Metadata API is a ReefAPI endpoint group for artists, albums, tracks and cover art. It returns live JSON through POST requests under /music-metadata/v1.

Is the Music Metadata API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Music Metadata calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Music Metadata login or account?

No login to Music Metadata is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Music Metadata data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Music Metadata API use?

Music Metadata actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Music Metadata from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call music-metadata actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Music Metadata API a Music Metadata scraper?

It is the managed alternative to a DIY Music Metadata scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same artists, albums, tracks and cover art back as clean JSON.

Why does my Music Metadata scraper keep getting blocked?

Most Music Metadata scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / music-metadata

Music Metadata

Artists, albums, tracks and cover art.

base /music-metadata/v114 endpoints
post/music-metadata/v1/artist_detail1 credit

artist + relationships (members/collaborations), discography, aliases, tags

ParameterAllowed / rangeDescription
mbidrequiredMusicBrainz id (UUID) of the entity. Find it via the search action.
incoptionalAdvanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.
Try in playground →
post/music-metadata/v1/album_detail1 credit

release (tracklist+labels+ISRCs+discids) or release-group

ParameterAllowed / rangeDescription
mbidrequiredMusicBrainz id (UUID) of the entity. Find it via the search action.
entity = releaseoptionalrelease · release-groupWhether the MBID is a single release or a release-group.
incoptionalAdvanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.
Try in playground →
post/music-metadata/v1/track_detail1 credit

recording + ISRCs + work-relations + artist credits

ParameterAllowed / rangeDescription
mbidrequiredMusicBrainz id (UUID) of the entity. Find it via the search action.
incoptionalAdvanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.
Try in playground →
post/music-metadata/v1/label1 credit

label detail (country, label-code, aliases, url-rels)

ParameterAllowed / rangeDescription
mbidrequiredMusicBrainz id (UUID) of the entity. Find it via the search action.
incoptionalAdvanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.
Try in playground →
post/music-metadata/v1/work_detail1 credit

work/composition + ISWC + writer relations

ParameterAllowed / rangeDescription
mbidrequiredMusicBrainz id (UUID) of the entity. Find it via the search action.
incoptionalAdvanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.
Try in playground →
post/music-metadata/v1/isrc_lookup1 credit

reverse ISRC -> recordings (cross-catalog key)

ParameterAllowed / rangeDescription
isrcrequiredInternational Standard Recording Code (2 letters, 3 alphanumerics, 7 digits) — e.g. GBAYE9701274.
incoptionalAdvanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.
Try in playground →
post/music-metadata/v1/cover_art1 credit

Cover-Art-Archive images (multi-resolution) for a release/release-group

ParameterAllowed / rangeDescription
mbidrequiredMusicBrainz id (UUID) of the entity. Find it via the search action.
entity = releaseoptionalrelease · release-groupWhether the MBID is a single release or a release-group.
Try in playground →
post/music-metadata/v1/charts1 credit

Apple Music top charts — the most-played songs or albums in a country (updated through the day)

ParameterAllowed / rangeDescription
type = songsoptionalsongs · albumsWhich chart to return.
country = usoptionalus · gb · de · fr · tr · ca · au · jp · br · mx · es · it · nl · se · ru · in · kr · pl · ae · saISO-3166 alpha-2 storefront/market for the chart or search (common set listed; others fall back to 'us').
limit = 25optional1–100Chart depth (1-100). Clamped to range.
Try in playground →
post/music-metadata/v1/artist_profile1 credit

Rich artist profile: biography, genre/style/mood, formed year, label, follower/popularity counts, social links and images (TheAudioDB). Pass the MusicBrainz mbid (from search/artist_detail) for an exact match, or an artist name

ParameterAllowed / rangeDescription
mbidoptionalArtist MusicBrainz id (preferred — exact match).
nameoptionalArtist name (used when no mbid is given).
Try in playground →
post/music-metadata/v1/artist_top_tracks1 credit

An artist's most popular tracks (top 10) with album, duration, genre and music-video link (TheAudioDB)

ParameterAllowed / rangeDescription
namerequiredArtist name.
Try in playground →
post/music-metadata/v1/similar_artists1 credit

Artists similar to a given artist, ranked by a collaborative listening model (ListenBrainz, CC0). Pass the artist's MusicBrainz mbid

ParameterAllowed / rangeDescription
mbidrequiredArtist MusicBrainz id (from search/artist_detail).
limit = 25optional1–100How many similar artists (1-100). Clamped.
Try in playground →
post/music-metadata/v1/lyrics1 credit

Song lyrics — both plain text and time-synced (LRC) when available — for an artist + track (lrclib, open). Optionally pass album+duration for an exact match

ParameterAllowed / rangeDescription
artistrequiredArtist name.
trackrequiredTrack / song title.
albumoptionalAlbum name (improves exact-match precision).
durationoptional1–Track length in seconds (exact-match key).
Try in playground →