Musicbrainz App

Posted : admin On 1/29/2022

Replicate the MusicBrainz website/web service/database, Test your own app that queries MusicBrainz web service, Develop MusicBrainz Server itself. See MusicBrainz Docker and its release notes. Django-musicbrainz is a small app that allows browsing data from a local musicibrainz database within your django project. It contains a models.py file describing the musicbrainz database organization and a router.py file allowing read access to the musicbrainz database.

  • MusicBrainz Picard is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger. Picard supports the majority of audio file formats, is capable.
  • Why Not Just Go with Spotify, or Upload to Google Music or iTunes? There's a case to be made that.

The API discussed here is an interface to the MusicBrainz Database. It is aimed at developers of media players, CD rippers, taggers, and other applications requiring music metadata. The API's architecture follows the REST design principles. Interaction with the API is done using HTTP and all content is served in a simple but flexible format, in either XML or JSON. XML is the default format; to get a JSON response, you can either set the Accept header to 'application/json' or add fmt=json to the query string (if both are set, fmt= takes precedence).

  • 3Introduction
  • 4Lookups
  • 5Non-MBID Lookups
  • 6Browse
  • 8Submitting data
    • 8.2User data

General FAQ

What can I do with the MusicBrainz API?
You can look up information about a particular MusicBrainz entity ('give me info about The Beatles'), browse the data to find entities connected to a particular entity ('show me all releases by The Beatles'), or search for entities matching a specific query ('show me all artists matching the query 'Beatles' so I can find the one I want and ask for more data').
Who can use the MusicBrainz API? Is it free?
Non-commercial use of this web service is free; please see our commercial plans or contact us if you would like to use this service commercially.
Do I need an API key?
Currently, no. But you must have a meaningful user-agent string.
Do I need to provide authentication?
Data submission, as well as requests that involve user information, require digest authentication.
Which formats can I get the data in?
Musicbrainz api
The API was originally written to return XML, but nowadays it can also return JSON.
Is there any significant difference between the XML and JSON APIs?
For requesting data, the XML and JSON API are effectively equivalent. The XML API is the only one that allows submitting data to MusicBrainz (but keep in mind only ratings, tags, barcodes and ISRCs can be submitted via the API at all; for most data additions you should use the website instead).
Is there a limit to the number of requests I can make per second?
Yes. See our rate limiting rules.
This seems very complicated, can I see some examples?
Yes, we have an example page showcasing some queries and showing the returned format you can expect for each.
Are there language bindings for the API?
Yes, in many different languages. See our list of external libraries.
What should I do if I encounter unexpected behaviour not covered in these docs?
You can ask question in IRC or in the forums.
Check to see if a ticket has been filed in the bug tracker, and if not consider writing one.
What else should I know before I start using the API?
It'd probably be helpful to know:
  • What relationships are available
So you're on version 2 of the API then? What happened to version 1?
The version 1 of the API was designed with the data structure of the original (pre-2011) version of the MusicBrainz database in mind. It was deprecated in 2011 when we changed to our current data schema, and after running (without further updates) for several years to avoid breaking any tools using it, it was finally taken down in 2019.
Do you ever make breaking changes?
We try to avoid that, but sometimes we might need to do so. In those cases, they will be announced on our blog, so consider following that!

Application rate limiting and identification

All users of the API must ensure that each of their client applications never make more than ONE call per second. Making more than one call per second drives up the load on the servers and prevents others from using the MusicBrainz API. If you impact the server by making more than one call per second, your IP address may be blocked preventing all further access to MusicBrainz. Also, it is important that your application sets a proper User-Agent string in its HTTP request headers. For more details on both of these requirements, please see our rate limiting page.

Introduction

The API root URL is https://musicbrainz.org/ws/2/.

We have 13 resources on our API which represent core entities in our database:

We also provide an API interface for the following non-core resources:

And we allow you to perform lookups based on other unique identifiers with these resources:

On each entity resource, you can perform three different GET requests:

... except that browse and search are not implemented for genre entities at this time.

Note: Keep in mind only the search request is available without an MBID (or, in specific cases, a disc ID, ISRC or ISWC). If all you have is the name of an artist or album, for example, you'll need to make a search and pick the right result to get its MBID; only then will you able to use it in a lookup or browse request.

Of these three types of requests:

  • Lookups, non-MBID lookups and browse requests are documented in following sections, and you can find examples on the dedicated examples page.
  • Searches are more complex and are documented on the search documentation page.

Relax NG Schema

The file musicbrainz_mmd-2.0.rng is a Relax NG Schema for the XML version of this API. It can also be used to validate submissions you're trying to make through it.

Lookups

You can perform a lookup of an entity when you have the MBID for that entity:

Note that unless you have provided an MBID in exactly the format listed, you are not performing a lookup request. If your URL includes something like artist=<MBID>, then please see the Browse section. If it includes query=<QUERY>, please see the Search page.

Subqueries

The inc= parameter allows you to request more information to be included about the entity. Any of the entities directly linked to the entity can be included.

In addition, Relationships are available for all entity types except genres via inc parameters.

To include more than one subquery in a single request, separate the arguments to inc= with a + (plus sign), like inc=recordings+labels.

All lookups which include release-groups allow a type= argument to filter the release-groups by a specific type. All lookups which include releases also allow the type= argument, and a status= argument is allowed.

Note that the number of linked entities returned is always limited to 25. If you need the remaining results, you will have to perform a browse request.

Linked entities are always ordered alphabetically by gid.

Note: In the XML API, when including recordings with a release entity, tracks listed in media have no title if that doesn’t differ from recording’s title, to reduce the size of the response.

inc= arguments which affect subqueries

Some additional inc= parameters are supported to specify how much of the data about the linked entities should be included:

Misc inc= arguments

Requests with user-tags, user-genres and user-ratings require authentication. You can authenticate using HTTP Digest, use the same username and password used to access the main https://musicbrainz.org website.

The method to request genres mirrors that of tags: you can use inc=genres to get all the genres everyone has proposed for the entity, or inc=user-genres to get all the genres you have proposed yourself (or both!). For example, to get the genres for the release group for Nine Inch Nails' Year Zero you’d want https://musicbrainz.org/ws/2/release-group/3bd76d40-7f0e-36b7-9348-91a33afee20e?inc=genres+user-genres for the XML API and https://musicbrainz.org/ws/2/release-group/3bd76d40-7f0e-36b7-9348-91a33afee20e?inc=genres+user-genres&fmt=json for the JSON API.

Since genres are tags, all the genres are also served with inc=tags with all the other tags. As such, you can always use the tag endpoint if you would rather filter the tags by your own genre list rather than follow the MusicBrainz one, or if you want to also get other non-genre tags (maybe you want moods, or maybe you’re really interested in finding artists who perform hip hop music and were murdered – we won’t stop you!).

Relationships

You can request relationships with the appropriate includes:

These will load relationships between the requested entity and the specific entity type. For example, if you request 'work-rels' when looking up an artist, you'll get all the relationships between this artist and any works, and if you request 'artist-rels' you'll get the relationships between this artist and any other artists. As such, keep in mind requesting 'artist-rels' for an artist, 'release-rels' for a release, etc. will not load all the relationships for the entity, just the ones to other entities of the same type.

In a release request, you might also be interested on relationships for the recordings linked to the release, or even for the works linked to those recordings (for example, to find out who played guitar on a specific track or who wrote the lyrics for the song being performed). Similarly, for a recording request, you might want to get the relationships for any linked works. There are two additional includes for this:

Keep in mind these just act as switches. If you request work-level-rels for a recording, you will still need to request work-rels (to get the relationship from the recording to the work in the first place) and any other relationship types you want to see (for example, artist-rels if you want to see work-artist relationships).

With relationships included, entities will have <relation-list> nodes for each target entity type (XML) or a relations object containing all relationships (JSON). You can see some examples the examples page.

Any attributes on a relationship will be on <attribute-list> nodes (XML) or in the attributes array (JSON). Relationship attributes always have a type ID, and some may have an associated value. Those can be found as attributes of the <attribute> element (XML) or by using the attribute name as a key for the attribute-values and attribute-ids elements (JSON). Sometimes the relationship attribute may also have a 'credited-as' name indicated by the user (for example, 'guitar' could be credited as 'Fender Stratocaster' or 'violin' as '1st violin'). In an XML response this is yet another attribute on the XML <attribute> element element, while on a JSON response you'll need to look at the attribute-credits element.

Non-MBID Lookups

Instead of MBIDs, you can also perform lookups using several other unique identifiers. However, because clashes sometimes occur, each of these lookups return a list of entities (there is no limit, all linked entities will be returned, paging is not supported).

discid

A discid lookup returns a list of associated releases, the 'inc=' arguments supported are identical to a lookup request for a release.

If there are no matching releases in MusicBrainz, but a matching CD stub exists, it will be returned. This is the default behaviour. If you do not want to see CD stubs, pass 'cdstubs=no.' CD stubs are contained within a <cdstub> element, and otherwise have the same form as a release. Note that CD stubs do not have artist credits, just artists.

If you provide the 'toc' query parameter, and if the provided disc ID is not known by MusicBrainz, a fuzzy lookup will done to find matching MusicBrainz releases. Note that if CD stubs are found this will not happen. If you do want TOC fuzzy lookup, but not CD stub searching, specify 'cdstubs=no'. For example:

Will look for the disc id first, and if it fails, will try to find tracklists that are within a similar distance to the one provided.

It's also possible to perform a fuzzy TOC search without a discid. Passing '-' (or any invalid placeholder) as the discid will cause it to be ignored if a valid TOC is present:

By default, fuzzy TOC searches only return mediums whose format is set to 'CD.' If you want to search all mediums regardless of format, add 'media-format=all' to the query:

The TOC consists of the following:

  • First track (always 1)
  • total number of tracks
  • sector offset of the leadout (end of the disc)
  • a list of sector offsets for each track, beginning with track 1 (generally 150 sectors)

isrc

An isrc lookup returns a list of recordings, the 'inc=' arguments supported are identical to a lookup request for a recording.

iswc

An iswc lookup returns a list of works, the 'inc=' arguments supported are identical to a lookup request for a work.

Browse

Browse requests are a direct lookup of all the entities directly linked to another entity ('directly linked' here meaning it does not include entities linked by a relationship). For example, you may want to see all releases on the label ubiktune:

Note that browse requests are not searches: in order to browse all the releases on the ubiktune label you will need to know the MBID of ubiktune.

Browsed entities are always ordered alphabetically by gid. If you need to sort the entities, you will have to fetch all entities (see 'Paging' below) and sort them yourself.

Linked entities

The following list shows which linked entities you can use in a browse request:

As a special case, release also allows track_artist, which is intended to allow you to browse various artist appearances for an artist. It will return any release where the artist appears in the artist credit for a track, but NOT in the artist credit for the entire release (as those would already have been returned in a request with artist=<MBID>).

The URL endpoint's 'resource' entity is for providing a URL directly, rather than a URL MBID (for example, https://musicbrainz.org/ws/2/url?resource=http://www.madonna.com/ versus https://musicbrainz.org/ws/2/url/b663423b-9b54-4067-9674-fffaecf68851). This URL will need to be appropriately URL-escaped for inclusion as a query parameter; this means that URLs that include url-escaped parameters, or query parameters of their own, will need to be escaped a second time.

Release-groups can be filtered on type, and releases can be filtered on type and/or status. For example, if you want all the live bootleg releases by Metallica:

Or all albums and EPs by Autechre:

Paging

Browse requests are the only requests which support paging: any browse request supports an 'offset=' argument to get more results. Browse requests also support 'limit=': the default limit is 25, and you can increase that up to 100.

inc=

Just like with normal lookup requests, the server can be instructed to include more data about the entity using an 'inc=' argument. Supported values for inc= are:

In addition to the inc= values listed above, all entities support:

All entities except area, place, release, and series support:

In addition, Relationships are available for all entity types via inc parameters, as with lookup requests.

Release (Group) Type and Status

Any query which includes release-groups in the results can be filtered to only include release groups of a certain type. Any query which includes releases in the results can be filtered to only include releases of a certain type and/or status. Valid values are:

See the release status documentation and the release group type documentation for info on what these values mean.

Submitting data

You can use the API to submit certain kinds of data. Currently tags (including genres), ratings and ISRCs can be entered through the API.

Authentication

All POST requests require authentication. You should authenticate using HTTP Digest, using the same username and password you use to access the main https://musicbrainz.org website. The realm is 'musicbrainz.org'.

POST requests should always include a 'client' parameter in the URL (not the body). The value of 'client' should be the ID of the client software submitting data. This has to be the application's name and version number, not that of a client library (client libraries should use HTTP's User-Agent header). The recommended format is 'application-version', where version does not contain a - character.

User data

You can submit tags (including genres) and ratings through the XML API using POST requests. As described above, the client software needs to identify itself using the 'client=' parameter. In the following examples I will use 'example.app-0.4.7' as the client identifier; this is obviously a fictitious client.

tags

To submit tags (including genres), perform a POST request to the /ws/2/tag url, like this:

The body of your request should be an XML formatted list of entities with <user-tag> elements.

An example request is reproduced below:

Because you're sending XML in the body of your POST request, make sure to also set the Content-Type to 'application/xml; charset=utf-8'.

Our tag functionality includes the ability to upvote and downvote tags (including genres). This terminology can be confusing. Whenever you tag something, you are in fact 'upvoting' it (which will add 1 to the vote count for the tag). Downvoting is the inverse operation, and will subtract 1 from the tag's vote count. Tags that you downvote will be hidden from the UI for you (and if their total vote count drops to 0 or below, they'll be hidden for everyone). The 'user-tag' elements can include a 'vote' attribute that specifies what action you want to take:

The 'withdraw' vote will remove any upvote or downvote that you previously added (as if you had never voted).

If you do not supply any 'vote' attributes in your request (as in the example above), then the list of tags you submit will be treated as upvotes and will completely replace all existing upvoted tags you have on that entity. (So, tags that are not included in the request will be withdrawn, if they were previously upvoted. Downvoted tags are left in place.) This is a legacy behavior that we maintain from before we had tag voting. Including any 'vote' attribute in the request will cause it to only apply those votes that you specified.

ratings

To submit ratings, perform a POST request to the /ws/2/rating url, like this:

The body of your request should be an XML formatted list of entities with <user-rating> elements.

An example request is reproduced below:

collections

To add or remove releases (for example) from your collection, perform a PUT or DELETE request to /ws/2/collection/<gid>/releases, respectively:

Other types of entities supported by collections can be submitted, too; just substitute 'releases' in the URI with one of: areas, artists, events, labels, places, recordings, release-groups, or works, depending on the type of collection.

You may submit up to ~400 entities in a single request, separated by a semicolon (;), as the PUT example above shows. You are restricted to a maximum URI length of 16kb at the moment (which roughly equates to 400 gids).

To get the description of a collection, perform a lookup request with the collection MBID:

To get the description and the summarized contents of a collection, perform a lookup request with the collection MBID and the appropriate entity subquery:

To get the contents of a collection, perform a browse request on the appropriate entity endpoint, using the collection MBID as a parameter:

To get a list of collections for a given user (including the number of entities in each collection), you can browse the collection endpoint by editor name:

This will only return collections that rob has made public. If you wish to see private collections as an authenticated user, do:

Barcode submission

Barcodes may be associated with releases by issuing an XML POST request to:

The body of the request must be an XML document with a list of <releases>s in a <release-list>, and a single barcode in a <barcode> element for each release. For example:

Upon issuing this request MusicBrainz will create a single edit in the edit queue for applying these changes. These changes will not be automatically applied, though they will be applied if either no one votes against your changes, or once your changes expire.

ISRC submission

ISRCs may be associated with recordings by issuing an XML POST request to:

The body of the request must be an XML document with a list of <recording>s in a <recording-list>, and a list of <ISRC>s in a <isrc-list> to be associated with the recordings. For example:

Libraries

The API can be accessed with our C++ library, libmusicbrainz, or any of the following third party libraries:

  • Python: python-musicbrainzngs Python2/3 bindings
  • Java: musicbrainzws2-java
  • JavaScript: musicbrainz-api
  • Ruby:
    • magnolia-fan/musicbrainz ruby 1.9+
  • PHP:
    • mikealmond/MusicBrainz, a fork of phpbrainz
  • C#:
    • MetaBrainz.MusicBrainz, a native .NET implementation of libmusicbrainz. (NuGet Package)
  • Objective-C: libmusicbrainz-objc
  • Haskell:
  • common lisp: cl-musicbrainz
  • Perl: WebService::MusicBrainz
  • Go: GoMusicBrainz
This page has not been reviewed by our documentation team (more info).

This is a list of applications that have MusicBrainz support built in:

  • 3Taggers

Media players and centers

Aural Player
An audio player for macOS, inspired by Winamp for Windows. Can retrieve cover art from MusicBrainz for tracks that don't have it embedded.
Cloudtunes
A free and open source web-based music player that unify between music stored in cloud (Youtube, DropBox, etc) and uses MusicBrainz data for music metadata.
Jellyfin
An open-source media server software which uses MusicBrainz to get several musical metadata especially about Artists, their ids, biographies(if it's available), songs/productions etc.
kJams Karaoke
A cross-platform karaoke jukebox / media library / tagger / Ripper, and rotation management system that rips, plays, and burns Audio CDs, and CD+G / MP3+G (Karaoke), and plays most multimedia files. Built in Music stores for streaming / purchase. Uses MusicBrainz data for looking up metadata.
Kodi
Kodi is a cross-platform software media center for playing videos, music, pictures, games, and more. It uses MusicBrainz to improve its music experience.
Plex
Plex is a cross-platform media center, using MusicBrainz data to improve its music experience.
SonicStreamer
Media streaming software that allows you to access you music from anywhere else. Supports MusicBrainz for getting an showing additional data about the music in the library (since version 2.4).
Tauon Music Box
An Audio Player for Linux putting the emphasis on playlists and importing from remote sources. Can fetch cover art from MusicBrainz and Fanart.tv plus submit listens to ListenBrainz and/or Last.fm
Tuneify
A music app that uses Youtube API for song play and MusicBrainz data for information/metadata.
VLC media player
A free and open source cross-platform multimedia player that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols. Uses MusicBrainz data for looking up information/metadata as well as cover art from Cover Art Archive.

Media libraries

The following music library managers can tag your files with MusicBrainz data:

Amarok
Amarok is a music player for KDE. It supports many multimedia frameworks (like GStreamer, XINE, and aRts) to play music media and streams, and features a fresh and efficient approach to playlist handling. The emphasis is on the quick and easy user interface, allowing for fast access to the media library. Amarok versions 1.1 through 1.4.x supported lookups via MusicBrainz [1], and versions starting from 2.4 support it again [2].
AudioExpert
AudioExpert is a Music Organizer Software to tidy, manage, clean up, align, sort, join/merge, and organize music archives resp. music libraries. Supported formats are MP3, MP4, M4A, WMA, OGG, FLAC, MPC, WAV and AAC.
Banshee
Banshee is an audio management and playback application for the GNOME Desktop, allowing users to import audio from CDs, search their library, create playlists of selections of their library, sync music to/from iPods, and burn selections to a CD.
beets
beets is a flexible command-line music library manager written in Python. It includes a tag corrector and album art downloader that use MusicBrainz as their backend.
Clementine
Clementine is a multiplatform music player. It is inspired by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and playing your music.
foobar2000
foobar2000 is an advanced freeware audio player for the Windows platform. Some of its features include full unicode support, ReplayGain support and native support for several popular audio formats. Support for MusicBrainz has been added with MusicBrainzTagger and it can use MusicBrainz data to tag media files and audio CDs.
MediaMonkey
MediaMonkey is a media management library with features like identifying tracks and tagging music. It has a Musicbrainz Tagger addon which serves the purpose of identifying tracks using data sourced from the MusicBrainz database.
Mixxx
Mixxx is free DJ software for Windows, Mac OS X and Linux. It currently supports getting information from MusicBrainz.
MusicBee
MusicBee is a MusicBee is a free digital media player and media library application for organizing and playing audio on Microsoft Windows operating systems using the BASS Audio Library [3].
Quod Libet
Quod Libet is an open-source, free and cross-platform(Linux, Windows, MacOS) audio player as well as a tag editor. Among its over 60 plugins, there is one which permits automatic tagging using MusicBrainz. Supported formats include: MP3, Ogg Vorbis / Speex / Opus, FLAC, Musepack, MOD/XM/IT, Wavpack, MPEG-4 AAC, WMA, MIDI, Monkey’s Audio.
Rhythmbox
Rhythmbox is an integrated music management application, originally inspired by Apple's iTunes. It is free software, designed to work well under the GNOME Desktop, and based on the powerful GStreamer media framework.
Strawberry Music Player
Strawberry Music Player is a music player and music collection organizer which uses MusicBrainz to get album cover arts and several musical metadata such as artist ids, song ids, album ids etc.

Taggers

The following taggers will tag your music files with MusicBrainz data:

Official

MusicBrainz Picard
MusicBrainz Picard is a cross platform (Linux, Mac OS X, Windows) album oriented MusicBrainz tagger with support for acoustic fingerprinting of MP3, WAV, Ogg Vorbis, FLAC, MPC, MP4 and WMA formats.

Affiliated taggers

AudioRanger
AudioRanger is a music tagger designed to automatically identify and organize audio files and entire music collections. It supports all commonly used audio file formats. A feature-rich free version is available. AudioRanger is a part of the Tagger Affiliate Program and pays 10% of every purchase to MusicBrainz.
Yate Music Tagger
Yate Music Tagger is a Mac OS X based tagger for mp3, m4a, FLAC and AIFF files. Supports MusicBrainz, Discogs and integration with iTunes. Actions providing scripting can be run interactively or in a batch mode. Yate Music Tagger is a part of the Tagger Affiliate Program and pays 10% of every purchase to MusicBrainz.

Other taggers

Flactag
Flactag is a Linux console based tagger for single album FLAC files with embedded CUE sheets. The tags are downloaded from the MusicBrainz service and can be written to the FLAC file as Vorbis comments. Once tagged, the file can be renamed based on a 'template' naming scheme.
ID3 renamer
ID3 renamer is a free, intuitive program for the renaming of files and ID3 tags. It can rename a large number of files in a directory accordingly to their ID3 description and a given 'formula' (e.g. (%Track) %Artist - %Title), remove the diacritics and clean portions of the ID3 tag. The program searches through freedb for identical albums and MusicBrainz by album name, artist and number of tracks.
Kid3
Kid3 is a cross-platform free audio tagger. It imports album data from many sources, most notably from gnudb.org, TrackType.org, MusicBrainz, Discogs and Amazon.
Kitsune
kitsune is a free player/tagger for Japanese and Russian music. It supports MusicBrainz lookup for artists and recordings, and will only scrobble to last.fm if a correct name was found in MusicBrainz. It will use chromaprint to identify music from a Japanese web radio station or anime related music.
Jaikoz
Jaikoz is a powerful tagger available for macOS, Windows and Linux making use of MusicBrainz, Discogs and AcoustId.
Metadatics
Metadatics is a powerful audio metadata editor for macOS which supports several file types, including but not limited to, MP3, M4A, AIFF, WAV, FLAC, APE, OGG, WMA. It uses MusicBrainz to search for tags.
Metatogger
Metatogger is a tag editor allowing you to rename, tag and easily sort your MP3, FLAC, Ogg Vorbis, WMA and M4A files. Metatogger permits automatic tagging using data from the Musicbrainz platform or using Acoustid acoustic fingerprint technology. Covers can be found via the Cover Art Archive.
Mp3tag
Mp3tag is a powerful and yet easy-to-use tool to edit metadata (ID3, Vorbis Comments and APE) of common audio formats. It can rename files based on the tag information, replace characters or words from tags and filenames, import/export tag information, create playlists and more. The program supports online, freedb database lookups for selected files, allowing you to automatically gather proper tag information for select files or CDs.
Puddletag
Puddletag is an audio tag editor that is primarily created for GNU/Linux. It uses a spreadsheet-like layout so that all the tags are visible and easily editable. Puddletag imports tag information from online databases like freedb, Discogs, MusicBrainz AcoustID and Amazon (also by text-search).
SongKong
SongKong prides itself as an intelligent music tagger application. SongKong is simple and powerful at the same time and it can help you manage, organize and clean up your digital music collection. SongKong uses intelligent acoustic matching from Acoustid to find song matches in a case of no information. SongKong uses their JThink Music Server, which is regularly updated from the MusicBrainz and Discogs databases to serve you song matches depending on the information available. It is available for MacOS, Windows, Linux and Docker supporting devices such as Synology Intel Disk Stations.
TagEditor
Tag Editor is a tag editor allows you to easily batch tagging MP3, AIFF, WAV, FLAC, MP4, M4A files and renaming audio files through a handy spreadsheet. The program supports the users to easily download music metadata and artworks from AcoustID, MusicBrainz and Cover Art Archive. It is available for MacOS only.
TagScanner
TagScanner helps one edit tags of most modern audio formats, supports ID3v1/v2, Vorbis comments, APEv2, WMA and MP4(iTunes) tags. The user has the liberty to get album info and download covers through online databases such as freedb, Discogs or MusicBrainz. The software is available on Windows in over a dozen languages.
TigoTago
TigoTago is a spreadsheet-based tag editor for media files, using MusicBrainz to lookup CD album information. There is a tutorial available showing how to use it with MusicBrainz as the data source.
Zortam Mp3 Media Studio
Zortam Mp3 Media Studio is an all-in-one MP3 application suite. It has several modules including a MP3 Auto Tagger, and supports MusicBrainz as a data source.

CD rippers

The following programs will rip your CDs and use MusicBrainz to tag the new files:

abcde
'A better CD encoder', a command line ripper for *nix, can be configured to use MusicBrainz.
CUERipper
CUERipper is an open-source CD Ripper for Windows. It supports MusicBrainz.
cyanrip
cyanrip is a command-line interface audio CD ripper that focuses on accuracy over speed and offers many advanced features without any bloat. Supports AccurateRip and MusicBrainz.
dBpoweramp CD Ripper
dBpoweramp CD Ripper is a secure CD ripper for Windows and OS X. It supports MusicBrainz.
Exact Audio Copy
Exact Audio Copy (EAC) is a secure CD ripper for Windows. It comes bundled with a MusicBrainz plugin for automated CD lookups as well as a CueTools DB Metadata Plugin which can fetch album metadata from MusicBrainz.
Express Rip
Express Rip is a CD ripping program for Windows that lets you extract digital audio tracks directly from audio CDs to mp3 or wav audio files. It uses MusicBrainz as its source for getting metadata about releases. Here is how it works.

Musicbrainz App

EZ CD Audio Converter
EZ CD Audio Converter is a multi-language CD ripper, audio converter, metadata editor and disc burner. It supports MusicBrainz.
morituri
morituri is a powerful command line ripper for *nix that aims at creating precise audio rips. It uses MusicBrainz as its source for getting metadata about releases.
Note: The author has gone more or less AWOL, so others have continued the project in the fork whipper (see below).
RipIt
RipIt is a command line ripper that can rip to a number of formats. It can be set to use MusicBrainz for looking up release information.
Note: The author has officially retired (from) the project.
Sound Juicer
Sound Juicer is a clean, mean, and lean CD ripper for GNOME 2. It sports a clean interface and simple preferences, aiming to do The Right Thing and What You Mean all of the time. It requires GNOME 2.14 and GStreamer 0.10. Sound Juicer is shipped with Ubuntu.
X Lossless Decoder
X Lossless Decoder (XLD) is a tool for Mac OS X that is able to decode/convert/play various 'lossless' audio files. The supported audio files can be split into some tracks with cue sheet when decoding. It works on Mac OS X 10.4 and later.
whipper
whipper is a fork of morituri (see above), a powerful command line ripper for *nix aiming at creating precise audio rips. It uses MusicBrainz as its sole source for release metadata.

Mobile Apps

Album Art Grabber
Album Art Grabber is an app that downloads missing album art from last.fm and MusicBrainz for your albums. It has a built-in media scanner, custom searches by artist or album and does auto-lookups of album art when a new album is added.
Windows
Catchy
Catchy allows you to recommend movies, series, books and music with your friends. You will also know if your interests are similar and you will be able to track what you've seen and what not. Catchy integrates MusicBrainz and CoverArtArchive in its application to perform its services.

Picard Mp3 Tagger

nusic
nusic is an app to notify you about new releases of the artists of tagged songs on your phone. It makes periodic requests to MusicBrainz to check if new releases have been added.