MusicBrainz API Client

1.2.0 · active · verified Tue Apr 21

The `musicbrainz-api` package provides a TypeScript-first client for interacting with the MusicBrainz web service, enabling both reading detailed metadata and submitting new information to the database. Currently at stable version 1.2.0, the library maintains an active release cadence with updates typically occurring every few weeks or months. Key differentiators include its robust support for retrieving various entity types, comprehensive TypeScript definitions for enhanced developer experience, and intelligent request throttling that automatically adheres to MusicBrainz API rate limits, including retries for rate-limit hits. It simplifies the required application identification (User-Agent) by prompting for `appName`, `appVersion`, and `appContactInfo` during client configuration. This library exclusively uses ECMAScript Modules (ESM) since version 8, requiring Node.js 16 or higher for usage.

Common errors

Warnings

Install

Imports

Quickstart

Initializes the MusicBrainz API client and performs a search for an artist, logging basic details.

import { MusicBrainzApi } from 'musicbrainz-api';
import type { Artist } from 'musicbrainz-api';

const client = new MusicBrainzApi({
  appName: 'MyAwesomeApp',
  appVersion: '1.0.0',
  appContactInfo: 'mailto:me@example.com' // Required by MusicBrainz API
});

async function searchArtist(query: string) {
  try {
    console.log(`Searching for artist: ${query}...`);
    const result = await client.searchArtist(query);
    if (result.artists && result.artists.length > 0) {
      const firstArtist: Artist = result.artists[0];
      console.log(`Found artist: ${firstArtist.name} (MBID: ${firstArtist.id})`);
      if (firstArtist.area) {
        console.log(`  Area: ${firstArtist.area.name}`);
      }
      if (firstArtist['life-span']) {
        console.log(`  Life Span: ${firstArtist['life-span'].begin || 'Unknown'} - ${firstArtist['life-span'].end || 'Present'}`);
      }
    } else {
      console.log('No artists found.');
    }
  } catch (error) {
    console.error('Error searching for artist:', error);
  }
}

searchArtist('Radiohead');
searchArtist('Pink Floyd');

view raw JSON →