GoMusicBrainz alternatives and similar packages
Based on the "Third-party APIs" category.
Alternatively, view GoMusicBrainz alternatives based on common mentions on social networks and blogs.
-
aws-sdk-go
AWS SDK for the Go programming language (In Maintenance Mode, End-of-Life on 07/31/2025). The AWS SDK for Go v2 is available here: https://github.com/aws/aws-sdk-go-v2 -
githubql
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). -
openaigo
OpenAI GPT3/3.5 and GPT4 ChatGPT API Client Library for Go, simple, less dependencies, and well-tested -
gostorm
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells. -
ynab
Go client for the YNAB API. Unofficial. It covers 100% of the resources made available by the YNAB API.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of GoMusicBrainz or a related project?
README
gomusicbrainz

a Go (Golang) MusicBrainz WS2 client library - a work in progress.
Current state
Currently GoMusicBrainz provides methods to perform search and lookup requests. Browse requests are not supported yet.
Installation
$ go get github.com/michiwend/gomusicbrainz
Search Requests
GoMusicBrainz provides a search method for every WS2 search request in the form:
func (*WS2Client) Search<ENTITY>(searchTerm, limit, offset) (<ENTITY>SearchResponse, error)
searchTerm follows the Apache Lucene syntax and can either contain multiple fields with logical operators or just a simple search string. Please refer to lucene.apache.org for more details on the lucene syntax. In addition the MusicBrainz website provides information about all possible query-fields.
Example
This example demonstrates a simple search requests to find the artist Parov Stelar. You can find it as a runnable go program in the samples folder.
// create a new WS2Client.
client := gomusicbrainz.NewWS2Client(
"https://musicbrainz.org/ws/2",
"A GoMusicBrainz example",
"0.0.1-beta",
"http://github.com/michiwend/gomusicbrainz")
// Search for some artist(s)
resp, _ := client.SearchArtist(`artist:"Parov Stelar"`, -1, -1)
// Pretty print Name and score of each returned artist.
for _, artist := range resp.Artists {
fmt.Printf("Name: %-25sScore: %d\n", artist.Name, resp.Scores[artist])
}
the above code will produce the following output:
Name: Parov Stelar Score: 100
Name: Parov Stelar Trio Score: 80
Name: Parov Stelar & the Band Score: 70
Lookup Requests
GoMusicBrainz provides two ways to perform lookup requests: Either the specific lookup method that is implemented for each entity that has a lookup endpoint in the form
func(*WS2Client) Lookup<ETITY>(id MBID, inc ...string) (*<ENTITY>, error)
or the common lookup method if you already have an entity (with MBID) that implements the MBLookupEntity interface:
func(*WS2Client) Lookup(entity MBLookupEntity, inc ...string) error
Example
The following example demonstrates the (specific) LookupArtist method. You can find it as a runnable go program in the samples folder.
// create a new WS2Client.
client, _ := gomusicbrainz.NewWS2Client(
"https://musicbrainz.org/ws/2",
"A GoMusicBrainz example",
"0.0.1-beta",
"http://github.com/michiwend/gomusicbrainz")
// Lookup artist by id.
artist, err := client.LookupArtist("9a709693-b4f8-4da9-8cc1-038c911a61be")
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%+v", artist)
Package Documentation
Full documentation for this package can be found at GoDoc and GoWalker
*Note that all licence references and agreements mentioned in the GoMusicBrainz README section above
are relevant to that project's source code only.