Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Official Python Client for the Discogs API
branch: master


Discogs API Client

This is the official Discogs API client for Python. It enables you to query the Discogs database for information on artists, releases, labels, users, Marketplace listings, and more. It also supports OAuth 1.0a authorization, which allows you to change user data such as profile information, collections and wantlists, inventory, and orders.

Build Status Coverage Status


Install the client from PyPI using your favorite package manager.

$ pip install discogs_client


Instantiating the client object

>>> import discogs_client
>>> d = discogs_client.Client('ExampleApplication/0.1')

Authorization (optional)

Specify your app's consumer key and secret:

>>> d.set_consumer_key('key-here', 'secret-here')
>>> # Or you can do this when you instantiate the Client

Then go through the OAuth 1.0a process. In a web app, we'd specify a callback_url. In this example, we'll use the OOB flow.

>>> d.get_authorize_url()
('request-token', 'request-secret', 'authorize-url-here')

The client will hang on to the access token and secret, but in a web app, you'd want to persist those and pass them into a new Client instance on the next request.

Next, visit the authorize URL, authenticate as a Discogs user, and get the verifier:

>>> d.get_access_token('verifier-here')
('access-token-here', 'access-secret-here')

Now you can make requests on behalf of the user.

>>> me = d.identity()
>>> "I'm {0} ({1}) from {2}.".format(, me.username, me.location)
u"I'm Joe Bloggs (example) from Portland, Oregon."
>>> len(me.wantlist)
>>> me.wantlist.add(d.release(5))
>>> len(me.wantlist)

Fetching data

Use methods on the client to fetch objects. You can search for objects:

>>> results ='Stockholm By Night', type='release')
>>> results.pages
>>> artist = results[0].artists[0]
u'Persuader, The'

Or fetch them by ID:

>>> artist == d.artist(1)

You can drill down as far as you like.

>>> releases ='Bit Shifter', type='artist')[0].releases[1].\
...     versions[0].labels[0].releases
>>> len(releases)


Query for an artist using the artist's name:

>>> artist = d.artist(956139)
>>> print artist
<Artist "...">
>>> 'name' in

Special properties

Get a list of Artists representing this artist's aliases:

>>> artist.aliases

Get a list of Releases by this artist by page number:



Query for a release using its Discogs ID:

>>> release = d.release(221824)

Special properties

Get the title of this Release:

>>> release.title

Get a list of all Artists associated with this Release:

>>> release.artists
[<Artist "...">]

Get the tracklist for this Release:

>>> release.tracklist

Get the MasterRelease for this Release:

>>> release.master
<MasterRelease "...">

Get a list of all Labels for this Release:

>>> release.labels


Query for a master release using its Discogs ID:

>>> master_release = d.master(120735)

Special properties

Get the key Release for this MasterRelease:

>>> master_release.main_release
<Release "...">

Get the title of this MasterRelease:

>>> master_release.title
>>> master_release.title == master_release.main_release.title

Get a list of Releases representing other versions of this MasterRelease by page number:


Get the tracklist for this MasterRelease:

>>> master_release.tracklist


Query for a label using the label's name:

>>> label = d.label(6170)

Special properties

Get a list of Releases from this Label by page number:


Get a list of Labels representing sublabels associated with this Label:

>>> label.sublabels

Get the Label's parent label, if it exists:

>>> label.parent_label
<Label "Warp Records Limited">


  1. Fork this repo
  2. Create a feature branch
  3. Open a pull-request

For more information

Check the included documentation, or just spin up a REPL and use dir() on things :)

Something went wrong with that request. Please try again.