Music Metadata API
The Music Metadata API returns artist, album, track and label data as clean JSON.
🤖 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.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"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"
}
}{
"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"
}
}What the Music Metadata API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | search 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_detail | artist + relationships (members/collaborations), discography, aliases, tags | Research tools call artist_detail to get artist + relationships (members/collaborations), discography, aliases, tags. | mbid, inc |
| album_detail | release (tracklist+labels+ISRCs+discids) or release-group | Community analysts call album_detail to get release (tracklist+labels+ISRCs+discids) or release-group. | mbid, entity, inc |
| track_detail | recording + ISRCs + work-relations + artist credits | Media monitors call track_detail to get recording + ISRCs + work-relations + artist credits. | mbid, inc |
| label | label detail (country, label-code, aliases, url-rels) | Content platforms call label to get label detail (country, label-code, aliases, url-rels). | mbid, inc |
| work_detail | work/composition + ISWC + writer relations | Research tools call work_detail to get work/composition + ISWC + writer relations. | mbid, inc |
| isrc_lookup | reverse ISRC -> recordings (cross-catalog key) | Community analysts call isrc_lookup to get reverse ISRC -> recordings (cross-catalog key). | isrc, inc |
| cover_art | Cover-Art-Archive images (multi-resolution) for a release/release-group | Media monitors call cover_art to get cover-Art-Archive images (multi-resolution) for a release/release-group. | mbid, entity |
| itunes_search | iTunes / 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 |
| charts | Apple 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_profile | 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 | Community analysts call artist_profile to get rich artist profile. | mbid, name |
| artist_top_tracks | An 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_artists | Artists similar to a given artist, ranked by a collaborative listening model (ListenBrainz, CC0). Pass the artist's MusicBrainz mbid | Content platforms call similar_artists to get artists similar to a given artist, ranked by a collaborative listening model (ListenBrainz, CC0). | mbid, limit |
| lyrics | 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 | Research tools call lyrics to get song lyrics. | artist, track, album, duration |
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"}'import requests
r = requests.post(
"https://api.reefapi.com/music-metadata/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "radiohead",
"type": "artist"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/music-metadata/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "radiohead",
"type": "artist"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.music-metadata.search with {"query":"radiohead","type":"artist"}.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.
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.