BYTETOOLS

MusicBrainz API

Free MusicBrainz API with no key: open music encyclopaedia with artists, releases, recordings, labels and relationships. The reference music database. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the MusicBrainz API?

The MusicBrainz API is a free, key-free API into the open music encyclopaedia, providing artists, releases, recordings, labels, works and the relationships between them, maintained by a global volunteer community.

MusicBrainz is the reference open music database, and its identifiers (MBIDs) are used across the music industry as stable keys for artists and releases. If you need to reconcile music metadata between systems, MBIDs are how.

Two rules are strictly enforced: you must send a descriptive User-Agent identifying your application, and you must not exceed one request per second. Both are checked, and violations get blocked — the project runs on donated infrastructure.

Quick facts

Base URL
https://musicbrainz.org/ws/2
Authentication
No API key, but a descriptive User-Agent with contact details is mandatory and enforced.
Rate limit
One request per second, strictly enforced by IP.
Pricing
Free. Core data is public domain (CC0); some supplementary data is CC BY-NC-SA.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the MusicBrainz API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Search for an artist

GET https://musicbrainz.org/ws/2/artist/?query=radiohead&fmt=json&limit=1

curl
curl 'https://musicbrainz.org/ws/2/artist/?query=radiohead&fmt=json&limit=1'
JavaScript (fetch)
const res = await fetch("https://musicbrainz.org/ws/2/artist/?query=radiohead&fmt=json&limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://musicbrainz.org/ws/2/artist/?query=radiohead&fmt=json&limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "created": "2026-08-19T21:11:23.496Z",
  "count": 29,
  "offset": 0,
  "artists": [
    {
      "id": "a74b1b7f-71a5-4011-9441-d0b5e4122711",
      "type": "Group",
      "type-id": "e431f5f6-b5d2-343d-8b36-72607fffb74b",
      "score": 100,
      "name": "Radiohead",
      "sort-name": "Radiohead",
      "country": "GB",
      "area": {
        "id": "8a754a16-0027-3a29-b6d7-2b40ea0481ed",
        "type": "Country",
        "type-id": "06dd0ae4-8c74-30bb-b43d-95dcedf961de",
        "name": "United Kingdom",
        "sort-name": "United Kingdom",
        "life-span": {
          "ended": null
        }
      },
      "begin-area": {
        "id": "d840d4b3-8987-4626-928b-398de760cc24",
        "type": "City",
        "type-id": "6fd8f29a-3d0a-32fc-980d-ea697b69da78",
        "name": "Abingdon-on-Thames",
        "sort-name": "Abingdon-on-Thames",
        "life-span": {
          "ended": null
        }
      },
      "isnis": [
        "0000000115475162"
      ],
      "life-span": {
        "begin": "1991",
        "ended": null
      },
      "aliases": [
        {
          "sort-name": "r/head",
          "type-id": "1937e404-b981-3cb7-8151-4c86ebfc8d8e",
          "name": "r/head",
          "locale": null,
          "type": "Search hint",
          "primary": null,
          "begin-date": null,
          "end-date": null
        },
        {
          "sort-name": "电台司令",
          "type-id": "894afba6-2816-3c24-8072-eadb66bd04bc",
          "name": "电台司令",
          "locale": "zh",
          "type": "Artist name",
          "primary": true,
          "begin-date"

Parameters

ParameterTypeRequiredDescription
<entity>pathRequiredartist, release, recording, label, work or release-group. artist
querystringOptionalLucene-style search query. radiohead
fmtstringRequiredSet to `json`; the default is XML. json
limit / offsetintegerOptionalPagination, max 100 per page. 10
incstringOptionalInclude related entities such as releases or tags. releases

Response fields

countinteger
Total matching entities.
artists[].idstring
MBID — the stable global identifier for the artist.
artists[].namestring
Artist name.
artists[].typestring
Person, Group, Orchestra or Choir.
artists[].countrystring
Country code.
artists[].life-spanobject
Begin and end dates.
artists[].scoreinteger
Search relevance score.

What you can build with the MusicBrainz API

  • Reconcile music metadata across systems using MBIDs
  • Build a music library organiser or tagger
  • Look up canonical artist and release information
  • Link recordings to cover art via the Cover Art Archive

Common errors and how to fix them

503 with a rate limit message

More than one request per second.

Fix: Throttle strictly to 1 req/sec — MusicBrainz enforces this and will block persistent offenders.

403

Missing or generic User-Agent.

Fix: Send a User-Agent naming your application and a contact address, as the policy requires.

XML instead of JSON

XML is the default format.

Fix: Always pass fmt=json.

MusicBrainz API — frequently asked questions

Is the MusicBrainz API free?

Yes, free with no API key. Core data is public domain, but a descriptive User-Agent is mandatory and the one-request-per-second limit is strictly enforced.

What is an MBID?

A MusicBrainz Identifier — a stable UUID for an artist, release or recording. They are widely used across the music industry as canonical keys for reconciling metadata.

Why am I getting 503 errors?

You are exceeding one request per second. MusicBrainz runs on donated infrastructure and enforces the limit strictly; throttle your client.

How do I get album artwork?

Use the Cover Art Archive, a companion service that serves artwork keyed by MusicBrainz release MBIDs.

Tools that pair with this API

MusicBrainz is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.