Discogs APIapi.discogs.com ↗
Access the Discogs music database via 4 endpoints. Search releases, browse artist and label discographies, and retrieve tracklists, formats, and community ratings.
What is the Discogs API?
The Discogs API provides 4 endpoints for querying the Discogs music database, covering release search, full release detail, and discography browsing by artist or label. The get_release endpoint returns up to 15 distinct fields per record including tracklist, formats, genres, styles, community ratings, and country of release. Use search_releases with optional filters like artist, label, year, and format to narrow results across millions of catalog entries.
curl -X GET 'https://api.parse.bot/scraper/66d30424-5b44-49df-b25b-cc13430f47a3/get_label_releases?page=1&label_id=1&per_page=25' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace api-discogs-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Discogs SDK — bounded, re-runnable; every call capped."""
from parse_apis.api_discogs_com_api import Discogs, NotFound
client = Discogs()
# Search for releases by artist and album name
for result in client.releases.search(query="Nevermind", artist="Nirvana", limit=3):
print(result.title, result.year, result.country)
# Drill into the first search result for full details
hit = client.releases.search(query="Nevermind", artist="Nirvana", limit=1).first()
try:
full = hit.details()
print(full.title, full.year, full.genres)
for track in full.tracklist:
print(track.position, track.title, track.duration)
except NotFound:
print("release gone")
# Browse a label's catalog
label = client.label(id="1")
for rel in label.releases(limit=3):
print(rel.title, rel.artist, rel.catalog_number)
# Browse an artist's discography
artist = client.artist(id="1")
for rel in artist.releases(limit=3):
print(rel.title, rel.role, rel.year)
print("exercised: releases.search / ReleaseSummary.details / label.releases / artist.releases")
Retrieve paginated releases for a specific record label. Each release includes title, artist, year, format, catalog number, and thumbnail. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| label_idrequired | string | Numeric Discogs label ID. |
| per_page | integer | Number of results per page (max 100). |
{
"type": "object",
"fields": {
"releases": "array of label releases with id, title, artist, year, format, catalog_number, thumbnail",
"pagination": "pagination metadata with page, pages, per_page, items"
},
"sample": {
"data": {
"releases": [
{
"id": 1018,
"year": 1998,
"title": "Electro Boogie Vol 2 (The Throwdown)",
"artist": "Dave Clarke",
"format": "CD, Comp, Mixed",
"thumbnail": "https://i.discogs.com/example.jpeg",
"catalog_number": "!K7067cd"
}
],
"pagination": {
"page": 1,
"items": 592,
"pages": 198,
"per_page": 3
}
},
"status": "success"
}
}About the Discogs API
Endpoints and What They Return
Four endpoints cover the main data shapes in the Discogs catalog. search_releases accepts up to six filter parameters — query, artist, label, year, format, and per_page — and returns paginated results including id, title, country, genre, style, catalog_number, and image URLs. get_release takes a single release_id and returns the full record: artists, labels, formats, genres, styles, tracklist, notes, year, and country.
Discography Browsing
get_artist_releases and get_label_releases both return paginated arrays with per-entry fields like title, year, format, label, and role (for artists) or catalog_number and thumbnail (for labels). Both endpoints accept page and per_page (max 100 per page) and include a pagination object with page, pages, per_page, and items counts, making it straightforward to walk an entire discography programmatically.
Identifiers and Filtering
Discogs uses numeric IDs throughout: artist_id, label_id, and release_id are all required inputs for their respective detail endpoints. Search results return the id field you need to then call get_release for full detail. The format filter on search_releases accepts string values like Vinyl, CD, or Cassette. Year filtering is string-typed and matches a single year value rather than a range.
The Discogs API is a managed, monitored endpoint for api.discogs.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when api.discogs.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official api.discogs.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a record collection tracker using
get_releaseto pull tracklists, formats, and catalog numbers. - Aggregate a label's full catalog by paginating
get_label_releaseswith a knownlabel_id. - Filter vinyl-only releases from a specific year using
formatandyearparams onsearch_releases. - Compile an artist's full discography including roles (album, single, compilation) via
get_artist_releases. - Display community ratings and genre/style tags on a music discovery app using
get_releaseresponse fields. - Cross-reference catalog numbers from
search_releasesresults against an internal inventory system. - Enrich a music database with country of release, label IDs, and format descriptions from
get_release.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Discogs have an official developer API?+
What does `get_release` return beyond basic metadata?+
get_release returns tracklist (track-by-track listing), formats (format name, quantity, descriptions, and text), labels with catalog_number, artists with role, genres, styles, notes, year, and country. It is the most field-dense endpoint in this API.Can I filter `search_releases` by a year range instead of a single year?+
year parameter accepts a single year string, so range-based filtering (e.g. 1985–1990) is not supported. You can fork this API on Parse and revise it to add range handling or multi-year iteration.Does the API return marketplace pricing or sale listings?+
How does pagination work across endpoints?+
search_releases, get_label_releases, get_artist_releases) include a pagination object with page, pages, per_page, and items fields. The per_page parameter caps at 100. To retrieve a full discography or full search result set, iterate requests incrementing page until page equals pages.