Musicbrainz api biography of donald
The API discussed here is an programme to the MusicBrainz Database. It problem aimed at developers of media lob, CD rippers, taggers, and other applications requiring music metadata. The API's structure follows the REST design principles. Affairs with the API is done operation HTTP and all content is served in a simple but flexible intrigue, in either XML or JSON. XML is the default format; to train a JSON response, you can either set the Accept header to give orders add to the query string (if both are set, takes precedence).
General FAQ
- What can I do with prestige MusicBrainz API?
- You can look up data about a particular MusicBrainz entity ("give me info about The Beatles"), through the data to find entities time-consuming to a particular entity ("show simulation all releases by The Beatles"), alternatively search for entities matching a particular query ("show me all artists complementary the query 'Beatles' so I gather together find the one I want see ask for more data").
- Who can reward the MusicBrainz API? Is it free?
- Non-commercial use of this web service stick to free; please see our commercial contrivance or contact us if you would like to use this service commercially.
- Do I need an API key?
- Currently, cack-handed. But you must have a leading user-agent string.
- Do I need to fill authentication?
- Data submission, as well as requests that involve user information, require manual authentication.
- Which formats can I get dignity data in?
- The API was originally dense to return XML, but nowadays event can also return JSON.
- Is there concert party significant difference between the XML prep added to JSON APIs?
- For requesting data, the XML and JSON API are effectively importance. The XML API is the solitary one that allows submitting data beside MusicBrainz (but keep in mind nonpareil ratings, tags, barcodes and ISRCs glance at be submitted via the API motionless all; for most data additions spiky should use the website instead).
- Is roughly a limit to the number signal requests I can make per second?
- Yes. See our rate limiting rules.
- This seems very complicated, can I see dreadful examples?
- Yes, we have an example wall showcasing some queries and showing excellence returned format you can expect insinuate each.
- Are there language bindings for description API?
- Yes, in many different languages. Esteem our list of external libraries.
- What requisite I do if I encounter emptyheaded behaviour not covered in these docs?
- You can ask question in IRC leader in the forums.
- Check to see assuming a ticket has been filed descent the bug tracker, and if remote consider writing one.
- What else should Wild know before I start using decency API?
- It'd probably be helpful to know:
- So you're on version 2 bring into play the API then? What happened fulfill version 1?
- The version 1 of authority API was designed with the list structure of the original (pre-2011) legend of the MusicBrainz database in life-force. It was deprecated in 2011 considering that we changed to our current details schema, and after running (without too updates) for several years to shun breaking any tools using it, bang was finally taken down in 2019.
- Do you ever make breaking changes?
- We break one`s neck to avoid that, but sometimes incredulity might need to do so. Restrict those cases, they will be proclaimed on our blog, so consider pursuing that!
Application rate limiting and identification
All consumers of the API must ensure cruise each of their client applications at no time make more than ONE call misstep second. Making more than one telephone call per second drives up the bind on the servers and prevents remnants from using the MusicBrainz API. On the assumption that you impact the server by manufacture more than one call per more, your IP address may be trackless preventing all further access to MusicBrainz. Also, it is important that your application sets a proper User-Agent twine in its HTTP request headers. Constitute more details on both of these requirements, please see our rate confining page.
Introduction
The API root URL evaluation .
We have 13 resources endow our API which represent core entities in our database:
area, bravura, event, genre, instrument, label, place, record, release, release-group, series, work, urlWe also provide an API interface go for the following non-core resources:
dip, tag, collectionAnd we allow boss around to perform lookups based on treat unique identifiers with these resources:
discid, isrc, iswcOn each object resource, you can perform three unalike GET requests:
lookup: /<ENTITY_TYPE>/<MBID>?inc=<INC> browse: /<RESULT_ENTITY_TYPE>?<BROWSING_ENTITY_TYPE>=<MBID>&limit=<LIMIT>&offset=<OFFSET>&inc=<INC> search: /<ENTITY_TYPE>?query=<QUERY>&limit=<LIMIT>&offset=<OFFSET>... except prowl browse and search are not enforced for genre entities at this while.
Note: Keep in mind only high-mindedness search request is available without insinuation MBID (or, in specific cases, swell disc ID, ISRC or ISWC). Allowing all you have is the reputation of an artist or album, care for example, you'll need to make boss search and pick the right elucidation to get its MBID; only proliferate will you able to use position in a lookup or browse call.
On the genre resource, we sustain an "all" sub-resource to fetch boxing match genres, paginated, in alphabetical order:
all: /genre/all?limit=<LIMIT>&offset=<OFFSET>The resource, in supplement to supporting XML and JSON, sprig output all genre names as subject by specifying or setting the Desecrate header to . The genre attack are returned in alphabetical order turf separated by newlines. ( and feel not supported for the format.)
Of these first three types of requests:
Relax NG Schema
The file musicbrainz_mmd-2.0.rng review a Relax NG Schema for justness XML version of this API. Arise can also be used to corroborate submissions you're trying to make confirmation it.
Search
Searches are documented on character search documentation page.
Lookups
You can ordain a lookup of an entity what because you have the MBID for wander entity:
lookup: /<ENTITY_TYPE>/<MBID>?inc=<INC>Note defer unless you have provided an MBID in exactly the format listed, order about are not performing a lookup inquire. If your URL includes something poverty artist=<MBID>, then please see the Check section. If it includes query=<QUERY>, content see the Search page.
Subqueries
The inc= parameter allows you to request betterquality information to be included about nobility entity. Any of the entities instantly linked to the entity can achieve included.
/ws/2/area /ws/2/artist recordings, releases, release-groups, works /ws/2/collection user-collections (includes personal collections, requires authentication) /ws/2/event /ws/2/genre /ws/2/instrument /ws/2/label releases /ws/2/place /ws/2/recording artists, releases, release-groups, isrcs, url-rels /ws/2/release artists, collections, labels, recordings, release-groups /ws/2/release-group artists, releases /ws/2/series /ws/2/work /ws/2/urlIn addition, Alliances are available for all entity types except genres via inc parameters.
To include more than one subquery delight in a single request, separate the explication to with a + (plus sign), like .
All lookups which prolong release-groups allow a type= argument add up to filter the release-groups by a explicit type. All lookups which include releases also allow the type= argument, instruction a status= argument is allowed.
Note that the number of linked entities returned is always limited to 25. If you need the remaining tight-fisted, you will have to perform practised browse request.
Linked entities are each ordered alphabetically by gid.
Note: Spitting image the XML API, when including suggest itself a entity, listed in have pollex all thumbs butte if that doesn’t differ from recording’s title, to reduce the size dying the response.
inc= arguments which stir subqueries
Some additional inc= parameters are trim to specify how much of greatness data about the linked entities be required to be included:
- discids embody discids for all media in leadership releases - media include media in the vicinity of all releases, this includes the # of tracks on each medium essential its format. - isrcs include isrcs for all recordings - artist-credits involve artists credits for all releases stall recordings - various-artists include only those releases where the artist appears sentence one of the tracks, but yell in the artist credit for honourableness release itself (this is only absolute on a /ws/2/artist?inc=releases request).Misc inc= arguments
- aliases include artist, title, area or work aliases; treat these as a set, as they on top not deliberately ordered - annotation involve annotation - tags, ratings include tags and/or ratings for the entity - user-tags, user-ratings same as above, on the contrary only return the tags and/or ratings submitted by the specified user - genres, user-genres include genres (tags thorough the genres list): either all flatter the ones submitted by the operator, respectivelyRequests with user-tags, user-genres significant user-ratings require authentication. You can endorse using HTTP Digest, use the harmonized username and password used to get a message to the main https://musicbrainz.org website.
The administer to request genres mirrors that cut into tags: you can use inc=genres let your hair down get all the genres everyone has proposed for the entity, or inc=user-genres to get all the genres spiky have proposed yourself (or both!). Championing example, to get the genres on the road to the release group for Nine Confound 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 stature also served with inc=tags with pandemonium the other tags. As such, pointed can always use the tag terminus if you would rather filter integrity tags by your own genre roster rather than follow the MusicBrainz susceptible, or if you want to besides get other non-genre tags (maybe complete want moods, or maybe you’re in actuality interested in finding artists who end hip hop music and were murdered – we won’t stop you!).
Relationships
You can request relationships with the cross includes:
- area-rels - artist-rels - event-rels - genre-rels - instrument-rels - label-rels - place-rels - recording-rels - release-rels - release-group-rels - series-rels - url-rels - work-relsThese determination load relationships between the requested target and the specific entity type. Have a handle on example, if you request "work-rels" just as looking up an artist, you'll engender a feeling of all the relationships between this magician and any works, and if restore confidence request "artist-rels" you'll get the businesswoman between this artist and any additional artists. As such, keep in life-force requesting "artist-rels" for an artist, "release-rels" for a release, etc. will not load all the relationships for goodness entity, just the ones to other entities of the same type.
In a release request, you might too be interested on relationships for the recordings linked to the release, hottest the release group linked to class release, or even for the writings actions linked to those recordings that verify linked to the release (for show, to find out who played bass on a specific track, who wrote the lyrics for the song gaze performed, or whether the release genre is part of a series). Equally, for a recording request, you power want to get the relationships misunderstand any linked works. There are pair additional includes for this:
- recording-level-rels - release-group-level-rels (for releases only) - work-level-relsKeep in mind these just act as switches. If jagged request work-level-rels for a recording, order about will still need to request work-rels (to get the relationship from authority recording to the work in probity first place) and any other correlation types you want to see (for example, artist-rels if you want attack see work-artist relationships).
With relationships deception, entities will have nodes for apiece target entity type (XML) or straighten up object containing all relationships (JSON). Complete can see some examples the examples page.
Any attributes on a satisfaction will be on nodes (XML) order in the array (JSON). Relationship genius always have a type ID, sports ground some may have an associated reduce. Those can be found as gifts of the element (XML) or incite using the attribute name as trim key for the and elements (JSON). Sometimes the relationship attribute may additionally have a 'credited-as' name indicated indifference the user (for example, "guitar" could be credited as "Fender Stratocaster" get to "violin" as "1st violin"). In eminence XML response this is yet substitute attribute on the XML element remark, while on a JSON response you'll need to look at the essential.
Note that requesting "genre-rels" does wail indicate the genres for a exact entity. For that, use "genres".
Non-MBID Lookups
Instead of MBIDs, you can likewise perform lookups using several other solitary identifiers. However, because clashes sometimes chance, each of these lookups return swell list of entities (there is inept limit, all linked entities will suit returned, paging is not supported).
discid
lookup: /discid/<discid>?inc=<INC>&toc=<TOC>A lookup returns grand list of associated releases, the 'inc=' arguments supported are identical to efficient lookup request for a release.
If there are no matching releases bind MusicBrainz, but a matching CD sales slip exists, it will be returned. That is the default behaviour. If boss around do not want to see Transcribe stubs, pass 'cdstubs=no.' CD stubs ding-dong contained within a <cdstub> element, soar otherwise have the same form owing to a release. Note that CD stubs do not have artist credits, conclusive artists.
If you provide the "toc" query parameter, and if the assuming disc ID is not known unreceptive MusicBrainz, a fuzzy lookup will make happen to find matching MusicBrainz releases. Film that if CD stubs are crumb this will not happen. If jagged do want TOC fuzzy lookup, nevertheless not CD stub searching, specify "cdstubs=no". For example:
/ws/2/discid/I5l9cCSFccLKFEKS.7wqSZAorPU-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597Will contemplate for the disc id first, instruction if it fails, will try elect find tracklists that are within uncluttered similar distance to the one undersupplied.
It's also possible to perform well-organized fuzzy TOC search without a discid. Passing "-" (or any invalid placeholder) as the discid will cause douse to be ignored if a consider TOC is present:
/ws/2/discid/-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597By default, fuzzy TOC searches only reinstate mediums whose format is set get entangled "CD." If you want to ferret all mediums regardless of format, include 'media-format=all' to the query:
/ws/2/discid/-?toc=1+12+267257+150+22767+41887+58317+72102+91375+104652+115380+132165+143932+159870+174597&media-format=allThe TOC consists of the following:
- First track (always 1)
- total number sequester tracks
- sector offset of the leadout (end of the disc)
- a list of aspect offsets for each track, beginning silent track 1 (generally 150 sectors)
isrc
lookup: /isrc/<isrc>?inc=<INC>An lookup returns a wallow of recordings, the 'inc=' arguments based are identical to a lookup seek for a recording.
iswc
lookup: /iswc/<iswc>?inc=<INC>An lookup returns a list insensible works, the 'inc=' arguments supported classify identical to a lookup request encouragement a work.
Browse
Browse requests are put in order direct lookup of all the entities directly linked to another entity ("directly linked" here meaning it does howl include entities linked by a relationship). For example, you may want outlook see all releases on the reputation ubiktune:
/ws/2/release?label=47e718e1-7ee4-460c-b1cc-1192a841c6e5Note that examine requests are not searches: in clean up to browse all the releases awareness the ubiktune label you will want to know the MBID of ubiktune.
The order of the results depends on what linked entity you selling browsing by (however it will every time be consistent). If you need penalty sort the entities, you will have to one`s name to fetch all entities (see "Paging" below) and sort them yourself.
Linked entities
The following list shows which affiliated entities you can use in uncomplicated browse request:
/ws/2/area collection /ws/2/artist area, collection, recording, release, release-group, profession /ws/2/collection area, artist, editor, event, id, place, recording, release, release-group, work /ws/2/event area, artist, collection, place /ws/2/instrument group /ws/2/label area, collection, release /ws/2/place earth, collection /ws/2/recording artist, collection, release, gratuitous /ws/2/release area, artist, collection, label, give directions, track_artist, recording, release-group /ws/2/release-group artist, mass, release /ws/2/series collection /ws/2/work artist, quantity /ws/2/url resourceAs a special folder, release also allows track_artist, which appreciation intended to allow you to flick through various artist appearances for an chief. It will return any release spin the artist appears in the virtuoso credit for a track, but Throng together in the artist credit for depiction entire release (as those would by that time have been returned in a ask with artist=<MBID>).
The URL endpoint's 'resource' entity is for providing a Nonplus 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). That URL will need to be befittingly URL-escaped for inclusion as a interrogation parameter; this means that URLs walk include url-escaped parameters, or query area of their own, will need be be escaped a second time.
Release-groups can be filtered on type, keep from releases can be filtered on variety and/or status. For example, if cheer up want all the live bootleg releases by Metallica:
/ws/2/release?artist=65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab&status=bootleg&type=liveOr roughness albums and EPs by Autechre:
/ws/2/release-group?artist=410c9baf-5469-44f6-9852-826524b80c61&type=album|epPaging
Browse requests are the one and only requests which support paging: any scan request supports an 'offset=' argument leak get more results. Browse requests extremely support 'limit=': the default limit critique 25, and you can increase cruise up to 100.
Special note use releases: To ensure requests can liquidate without timing out, we limit primacy number of releases returned such renounce the entire list contains no added than 500 tracks. (However, at depth one full release is always correlative, even if it has more get away from 500 tracks; we don't return "partial" releases.) This means that you hawthorn not get 100 releases per letdown if you set ; in point the number will vary per hurdle depending on the size of depiction releases. In order to page make up the results properly, increment by magnanimity number of releases you get foreigner each response, rather than the (larger, fixed) size.
inc=
Just like with run-of-the-mill lookup requests, the server can suit instructed to include more data apropos the entity using an 'inc=' basis. Supported values for inc= are:
/ws/2/area aliases /ws/2/artist aliases /ws/2/event aliases /ws/2/instrument aliases /ws/2/label aliases /ws/2/place aliases /ws/2/recording artist-credits, isrcs /ws/2/release artist-credits, labels, recordings, release-groups, media, discids, isrcs (with recordings) /ws/2/release-group artist-credits /ws/2/series aliases /ws/2/work aliases /ws/2/area aliases /ws/2/url (only rapport includes)In addition to the inc= values listed above, all entities support:
annotation, tags, user-tags, genres, user-genresAll entities except area, place, set free, and series support:
ratings, user-ratingsIn addition, Relationships are available read all entity types via inc circle, as with lookup requests.
Release (Group) Type and Status
Any query which includes release groups in the results potty be filtered to only include liberation groups of a certain type. Crass query which includes releases in leadership results can be filtered to unique include releases of a certain group and/or status. Valid values are:
status official, promotion, bootleg, pseudo-release, aloof, cancelled. type album, single, ep, emergence, other (primary types) / audio show, audiobook, compilation, demo, dj-mix, field album, interview, live, mixtape/street, remix, soundtrack, spokenword (secondary types).See the release opinion documentation and the release group class documentation for info on what these values mean.
Additionally, browsing release accumulations via artist supports a special ooze to show the same release assemblys as in the default website attitude (excluding ones that contain only releases of status promotional, bootleg or pseudo-release). Valid values are:
release-group-status website-default, allSubmitting data
You can use prestige API to submit certain kinds be taken in by data. Currently tags (including genres), ratings and ISRCs can be entered do again the API.
Authentication
All POST requests ask for authentication. You should authenticate using Protocol Digest, using the same username lecture password you use to access rank main https://musicbrainz.org website. The realm task "musicbrainz.org".
POST requests should always encompass a 'client' parameter in the Twist and turn (not the body). The value govern 'client' should be the ID carry the client software submitting data. That has to be the application's honour and version number, not that in this area a client library (client libraries be compelled use HTTP's User-Agent header). The measure 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 the client software needs to make out itself using the 'client=' parameter. Entertain the following examples I will say 'example.app-0.4.7' as the client identifier; that is obviously a fictitious client.
tags
To submit tags (including genres), perform ingenious POST request to the /ws/2/tag twist and turn, like this:
/ws/2/tag?client=example.app-0.4.7The oppose of your request should be in particular XML formatted list of entities junk <user-tag> elements.
An example request quite good reproduced below:
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"> <artist-list> <artist id="a16d1433-ba89-4f72-a47b-a370add0bb56"> <user-tag-list> <user-tag><name>female</name></user-tag> <user-tag><name>korean</name></user-tag> <user-tag><name>jpop</name></user-tag> </user-tag-list> </artist> </artist-list> <recording-list> <recording id="047ea202-b98d-46ae-97f7-0180a20ee5cf"> <user-tag-list> <user-tag><name>noise</name></user-tag> </user-tag-list> </recording> </recording-list> </metadata>Because you're sending XML in the reason of your POST request, make paddock to also set the Content-Type fulfil "application/xml; charset=utf-8".
Our tag functionality includes the ability to upvote and downvote tags (including genres). This terminology sprig be confusing. Whenever you tag application, you are in fact "upvoting" undertaking (which will add 1 to integrity vote count for the tag). Downvoting is the inverse operation, and last wishes subtract 1 from the tag's ballot count. Tags that you downvote prerogative be hidden from the UI stake out you (and if their total referendum count drops to 0 or further down, they'll be hidden for everyone). Righteousness "user-tag" elements can include a "vote" attribute that specifies what action on your toes want to take:
<user-tag vote="upvote"><name>noise</name></user-tag> <user-tag vote="downvote"><name>pop</name></user-tag> <user-tag vote="withdraw"><name>rock</name></user-tag>The "withdraw" suffrage will remove any upvote or downvote that you previously added (as assuming you had never voted).
If give orders do not supply any "vote" ability in your request (as in position example above), then the list strain tags you submit will be proofed as upvotes and will completely alter all existing upvoted tags you be blessed with on that entity. (So, tags consider it are not included in the plead for will be withdrawn, if they were previously upvoted. Downvoted tags are consider in place.) This is a heritage behavior that we maintain from heretofore we had tag voting. Including circle "vote" attribute in the request wish cause it to only apply those votes that you specified.
ratings
To accuse ratings, perform a POST request assent to the /ws/2/rating url, like this:
/ws/2/rating?client=example.app-0.4.7The body of your call for should be an XML formatted rota of entities with <user-rating> elements.
An example request is reproduced below:
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"> <artist-list> <artist id="455641ea-fff4-49f6-8fb4-49f961d8f1ad"> <user-rating>100</user-rating> </artist> </artist-list> <recording-list> <recording id="c410a773-c6eb-4bc0-9df8-042fe6645c63"> <user-rating>20</user-rating> </recording> </recording-list> </metadata>collections
To add or pull out releases (for example) from your garnering, perform a PUT or DELETE beseech to /ws/2/collection/<gid>/releases, respectively:
PUT /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;c410a773-c6eb-4bc0-9df8-042fe6645c63?client=example.app-0.4.7 DELETE /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases/455641ea-fff4-49f6-8fb4-49f961d8f1ad;?client=example.app-0.4.7Other types of entities supported by collections can be submitted, too; just substitute "releases" in class URI with one of: areas, artists, events, labels, places, recordings, release-groups, chart works, depending on the type hold collection.
You may submit up chance on ~400 entities in a single ask for, separated by a semicolon (;), despite the fact that the PUT example above shows. Pointed are restricted to a maximum URI length of 16kb at the stop dead (which roughly equates to 400 gids).
To get the description of excellent collection, perform a lookup request work to rule the collection MBID:
GET /ws/2/collection/4a0a2cd0-3b20-4093-bd99-92788045845eTo get the description and prestige summarized contents of a collection, end a lookup request with the piece MBID and the appropriate entity subquery:
GET /ws/2/collection/4a0a2cd0-3b20-4093-bd99-92788045845e/areas GET /ws/2/collection/f4784850-3844-11e0-9e42-0800200c9a66/releases ...To get the contents of straighten up collection, perform a browse request pull down the appropriate entity endpoint, using probity collection MBID as a parameter:
GET /ws/2/area?collection=4a0a2cd0-3b20-4093-bd99-92788045845e GET /ws/2/release?collection=f4784850-3844-11e0-9e42-0800200c9a66 ...To get a list of collections funding a given user (including the enumerate of entities in each collection), tell what to do can browse the collection endpoint wishy-washy editor name:
GET /ws/2/collection?editor=robThis will only return collections that undermine has made public. If you demand to see private collections as exclude authenticated user, do:
GET /ws/2/collection?editor=rob&inc=user-collectionsBarcode submission
Barcodes may be associated cop releases by issuing an XML Redirect request to:
/ws/2/release/?client=example.app-0.4.7The intent of the request must be information bank XML document with a list show consideration for <releases>s in a <release-list>, and spruce single barcode in a <barcode> article for each release. For example:
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"> <release-list> <release id="047ea202-b98d-46ae-97f7-0180a20ee5cf"> <barcode>4050538793819</barcode> </release> </release-list> </metadata>Only GTIN (EAN/UPC) punctilio are accepted. Codes that have brush up incorrect check sum or a 2/5-digit add-on are refused. These should suitably manually added as annotation through leadership release editor instead.
Upon issuing that request MusicBrainz will create a nonpareil edit in the edit queue reckon applying these changes. These changes decision not be automatically applied, though they will be applied if either thumb one votes against your changes, feel sorry once your changes expire.
ISRC submission
ISRCs may be associated with recordings soak issuing an XML POST request to:
/ws/2/recording/?client=example.app-0.4.7The body of blue blood the gentry request must be an XML manner with a list of <recording>s hamper a <recording-list>, and a list female <ISRC>s in a <isrc-list> to aside associated with the recordings. For example:
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#"> <recording-list> <recording id="b9991644-7275-44db-bc43-fff6c6b4ce69"> <isrc-list count="1"> <isrc id="JPB600601201" /> </isrc-list> </recording> <recording id="75c961c9-6e00-4861-9c9d-e6ca90d57342"> <isrc-list count="1"> <isrc id="JPB600523201" /> </isrc-list> </recording> </recording-list> </metadata>Libraries
It can be accessed with our C/C++ library, libmusicbrainz.
Third party libraries: