Discogs API & Scraper
The Discogs API turns the world's reference database for physical music into clean JSON, in ten actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
Search releases, master releases, artists and labels across 19,471,457 releases, 10,265,899 artists and 2,435,538 labels. Pull one pressing in full — tracklist with per-track credits, release credits, labels and catalogue numbers, formats, identifiers such as barcode and matrix/runout, notes, images, videos and the community have/want/rating counts. Read every version of a master release with the format, label, country and year facets Discogs itself publishes. Then read the marketplace: the lowest asking price for a release in the currency you ask for, and every copy actually for sale right now with its price in the seller's own currency, its shipping, its media condition AND its sleeve condition on Discogs' eight-grade scale, and the seller's public handle, feedback percentage and shipping country. One ReefAPI key, the standard { ok, data, meta, error } envelope, no Discogs account needed.
Which price is the real one: we checked ours against the cheapest copy actually for sale
Discogs publishes a lowest_price field on its release record and a separate marketplace figure, and on most releases the two disagree. We took the cheapest live listing off the marketplace, read it in the currency the seller actually priced it in, and compared. Our lowest_price matched the live listing on 9 of 9 releases. The release record's own field matched on 1 of 9, and on a Japanese pressing it was out by four orders of magnitude. This is why every price we return carries its currency, and why the number you get is the marketplace one.
| Release | Cheapest copy for sale | What our lowest_price says | Discogs' release-record field |
|---|---|---|---|
| Rick Astley — Never Gonna Give You Up (7", UK 1987) | 0.50 GBP | 0.50 GBP ✅ | 0.89 |
| Nirvana — Nevermind (LP, 1991) | 1000.00 EUR | 1000.00 EUR ✅ | 1321.18 |
| Steven Tang — Ominous (12", US 2007) | 20.00 EUR | 20.00 EUR ✅ | 26.42 |
| A Japanese pressing (release 2179606) | 6280 JPY | 6280 JPY ✅ | 0.25 |
| Nirvana — Love Buzz (7", release 155876) | 3.97 USD | 3.97 USD ✅ | 3.97 |
How many copies are for sale agreed 9 of 9 with the marketplace's own printed total, so that count is safe either way. Note what the price means: it is the lowest ASKING price, not a sold price. Discogs does not publish median or highest sold price to anyone without an account, and we do not invent them.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/discogs/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "nirvana nevermind",
"type": "release",
"per_page": 10
}
}{
"ok": true,
"meta": {
"api": "discogs",
"endpoint": "search",
"mode": "live",
"latency_ms": 514.5,
"record_count": 10,
"bytes": 12024,
"cache_hit": false,
"upstream_requests": 1,
"charged_credits": 1,
"version": "0.1.0"
},
"data": {
"results": [
{
"id": 7097051,
"type": "release",
"title": "Nirvana - Nevermind",
"year": 2015,
"country": "Europe",
"formats": [
"Vinyl",
"LP",
"Album"
],
"format_quantity": 1,
"labels": [
"DGC",
"Sub Pop",
"Back To Black"
],
"catno": "424 425-1",
"barcodes": [
"720642442517",
"0 720642 442517",
"LC 07266"
],
"genres": [
"Rock"
],
"styles": [
"Alternative Rock",
"Grunge"
],
"master_id": 13814,
"community": {
"have": 77074,
"want": 13288,
"rating_average": null,
"rating_count": null
},
"thumbnail_url": null,
"cover_image_url": null,
"url": "https://www.discogs.com/release/7097051-Nirvana-Nevermind"
},
{
"id": 4819086,
"type": "release",
"title": "Nirvana - Nevermind",
"year": 2013,
"country": "US",
"formats": [
"Vinyl",
"LP",
"Album"
],
"format_quantity": 1,
"labels": [
"DGC",
"Sub Pop",
"Geffen Records"
],
"catno": "DGC-24425",
"barcodes": [
"BMI",
"7 20642 44251 7",
"720642442517"
],
"genres": [
"Rock"
],
"styles": [
"Grunge"
],
"master_id": 13814,
"community": {
"have": 21370,
"want": 5256,
"rating_average": null,
"rating_count": null
},
"thumbnail_url": null,
"cover_image_url": null,
"url": "https://www.discogs.com/release/4819086-Nirvana-Nevermind"
},
{
"id": 3196247,
"type": "release",
"title": "Nirvana - Nevermind",
"year": null,
"country": "Europe",
"formats": [
"Vinyl",
"LP",
"Album"
],
"format_quantity": 1,
"labels": [
"DGC",
"Sub Pop",
"Virgin Songs, Inc."
],
"catno": "424 425-1",
"barcodes": [
"0 720642 442517",
"NEVERMIND 001 A-1",
"NEVERMIND 001 B-1"
],
"genres": [
"Rock"
],
"styles": [
"Alternative Rock",
"Grunge"
],
"master_id": 13814,
"community": {
"have": 1947,
"want": 1995,
"rating_average": null,
"rating_count": null
},
"thumbnail_url": null,
"cover_image_url": null,
"url": "https://www.discogs.com/release/3196247-Nirvana-Nevermind"
}
],
"count": 10,
"total": 1349,
"pagination": {
"page": 1,
"per_page": 10,
"pages": 135,
"items": 1349
},
"query_echo": {
"type": "release",
"q": "nirvana nevermind",
"page": 1,
"per_page": 10
}
}
}What the Discogs API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Discogs for releases, master releases, artists or labels. Combine free text with artist, title, label, catalogue number, barcode, format, country, year, genre, style, track or credit filters. | Pricing teams call search to search Discogs for releases, master releases, artists or labels. | query, type, artist, release_title, label, ... |
| release | One pressing in full: tracklist with per-track credits, release credits, labels and catalogue numbers, formats, identifiers (barcode, matrix/runout), notes, images, videos, community have/want/rating, and live marketplace stats. | Marketplace operators call release to get one pressing in full. | release_id, include_marketplace, currency, max_rotations |
| master | The master release — the work itself rather than one pressing — with its canonical tracklist, main release id and how many copies are for sale across all versions. | Catalog enrichment teams call master to get the master release. | master_id, max_rotations |
| master/versions | Every pressing of a master release, with the format / label / country / year facets Discogs itself offers so you can see what exists before filtering. | Retail analysts call master/versions to get every pressing of a master release, with the format / label / country / year facets Discogs i…. | master_id, format, label, country, released, ... |
| artist | An artist or group: profile, real name variations, aliases, band members, external links and images. | Pricing teams call artist to get an artist or group. | artist_id, max_rotations |
| artist/releases | An artist's discography — every release and master release they are credited on, sortable by year, title or format. | Marketplace operators call artist/releases to get an artist's discography. | artist_id, sort, sort_order, page, per_page, ... |
| label | A record label: profile, contact information the label itself publishes, sublabels, external links and images. | Catalog enrichment teams call label to get a record label. | label_id, max_rotations |
| label/releases | A label's catalogue — every release Discogs files under it, with catalogue numbers. | Retail analysts call label/releases to get a label's catalogue. | label_id, page, per_page, max_rotations |
| marketplace/stats | Live marketplace figures for up to 20 releases in ONE call: how many copies are for sale and the lowest asking price, converted into the currency you ask for. | Pricing teams call marketplace/stats to get live marketplace figures for up to 20 releases in ONE call. | release_ids, currency, max_rotations |
| marketplace/listings | Every copy of a release that is actually for sale right now: asking price in the seller's own currency, shipping, media AND sleeve condition, the seller's public handle, feedback score and the country it ships from. | Marketplace operators call marketplace/listings to get every copy of a release that is actually for sale right now. | release_id, sort, limit, page, media_condition, ... |
Call search from your stack
curl -X POST https://api.reefapi.com/discogs/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"nirvana nevermind","type":"release","per_page":10}'import requests
r = requests.post(
"https://api.reefapi.com/discogs/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "nirvana nevermind",
"type": "release",
"per_page": 10
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/discogs/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "nirvana nevermind",
"type": "release",
"per_page": 10
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.discogs.search with {"query":"nirvana nevermind","type":"release","per_page":10}.Who uses this API and why
- Price a record collection: send up to 20 release ids to marketplace/stats and get the live lowest asking price for each in one call, in your own currency.
- Grade-aware sourcing for dealers: pull marketplace/listings filtered to Near Mint or Very Good Plus and to the countries you buy from, and see every seller's price, shipping and feedback score side by side.
- Catalogue and identify stock: search by barcode or catalogue number, then read the release for its tracklist, credits, matrix/runout identifiers and estimated weight for shipping.
- Build a discography page: artist/releases and label/releases give the full credited output with years, formats and catalogue numbers, and master/versions lists every pressing of a work with format, country and label facets.
- Track what a pressing is worth over time: poll marketplace/stats for a release and record lowest_price and num_for_sale, the two figures that agreed with the marketplace's own numbers on 9 of 9 checks.
Questions developers ask before integrating
Do I need a Discogs account or token?
No. Every action on this page works without one. Search, the release record, master versions, artist and label discographies, marketplace statistics and the marketplace listings are all returned anonymously.
Does it return the marketplace listings with condition, or only prices?
Both. marketplace/listings returns each copy for sale with its asking price in the seller's own currency, its shipping cost, its media condition and its sleeve condition on Discogs' own scale (Mint, Near Mint, Very Good Plus, Very Good, Good Plus, Good, Fair, Poor), the seller's public handle, feedback percentage, star rating and the country it ships from. Across 172 sampled listings, media condition was present on 172, sleeve condition on 171 and price on 172.
Can I get median and highest sold prices?
No, and nobody can without an account. Discogs publishes no anonymous route for median or highest sold price. What you get is num_for_sale and lowest_price — the lowest asking price, converted into the currency you request. We would rather say this than return a number we had guessed.
How do I search by catalogue number or barcode?
Pass catno or barcode to search. Barcode is exact: 602537351169 returns 3 releases. Catalogue number is matched loosely by Discogs rather than pinned, so catno=DGCD-24425 narrows 15,604 Nirvana releases to 184 rather than to one. Combine it with artist, label or year to close in.
How deep can I page through search results?
Up to 100 results per page and up to 100 pages, so 10,000 results per query. Discogs reports the full match count as well — a broad query can say 1.69 million items while still only paging to 10,000 — so narrow with the filters rather than paging for volume.
Do the filters actually narrow the results?
Yes, and we measured each one in the same run. On a nirvana release search of 15,604: format=Vinyl 3,558, format=CD 6,539, country=UK 1,574, country=Japan 846, year=1991 374, genre=Rock 11,834, style=Grunge 6,606, label=Sub Pop 1,367. On the 122 listings for one release: Near Mint only 20, Very Good only 36, ships_from=United Kingdom 97, ships_from=Italy 6, sellers accepting offers 41.
Do search results include cover images?
No. Discogs returns empty image fields on anonymous search rows — 0 of 150 rows we sampled across six genres carried one — so we return null rather than an empty string. Images ARE returned on the release, artist and label records themselves, in full size and thumbnail.
Can I check many releases' prices at once?
Yes. marketplace/stats takes up to 20 release ids in one call and returns num_for_sale and lowest_price for each, in your chosen currency. Seven releases came back in a single call totalling 0.6 KB, which is what makes it the right shape for pricing a whole collection or want-list.
What is the Discogs API?
Discogs API is a ReefAPI endpoint group for the reference database for vinyl, cd and cassette — plus the live marketplace: every copy for sale with its price and its media and sleeve condition. It returns live JSON through POST requests under /discogs/v1.
Is the Discogs API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Discogs calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Discogs login or account?
No login to Discogs is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Discogs data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Discogs API use?
Discogs actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Discogs from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call discogs actions with the same key, credit pool and JSON envelope used by normal REST requests.