Discogs Scraper · Releases, Artists, Labels & Marketplace avatar

Discogs Scraper · Releases, Artists, Labels & Marketplace

Pricing

from $2.10 / 1,000 release returneds

Go to Apify Store
Discogs Scraper · Releases, Artists, Labels & Marketplace

Discogs Scraper · Releases, Artists, Labels & Marketplace

Discogs Scraper (Discogs.com scraper) to scrape vinyl records, CDs, music releases, artists, and labels. Extract marketplace prices, collector demand, formats, barcodes, and tracklists into CSV or JSON.

Pricing

from $2.10 / 1,000 release returneds

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

an hour ago

Last modified

Share

reapX — public sources in, addressable records out

Discogs Scraper · Releases, Artists, Labels & Marketplace

Discogs Scraper (Discogs.com scraper) extracts vinyl records, CDs, music releases, artists, labels, and marketplace data from Discogs. Search Discogs by keyword, artist, label, genre, style, year, or format and export structured datasets to JSON, CSV, or Excel.

Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/discogs-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me

Extract release titles, catalogue numbers, formats, barcodes, tracklists, plus live Discogs marketplace prices, seller stats, collector have/want counts, and ratings. Fast HTTP scraper with no login or API key required.

Discogs Scraper features

  • Discogs Music Database & Vinyl Scraper: Extract release details, master releases, discographies, and catalogue numbers.
  • Discogs Marketplace & Price Mining: Get live lowest price, number of items for sale, and collector demand metrics (have vs want counts).
  • Zero Setup: Reads Discogs public endpoints directly over HTTP with fast execution and minimal compute cost.

What you get per release

Field
handle · artistName · artistId · artistUrlwho made it
releaseId · releaseTitle · year · released · countrywhich pressing
labels · catalogNumbers · formatshow it was issued
genres · styles · trackCount · masterIdwhat it is
communityHave · communityWantownership and demand
ratingAverage · ratingCounthow it is rated
numForSale · lowestPriceUsdthe live marketplace
dataQuality · releaseUrl · retrievedAt

Price a record collection

Search by artist, label or catalogue number and read numForSale with lowestPriceUsd. Both are read live from the Discogs marketplace during the run, so a scheduled daily run gives you a price series per releaseId with no manual checking.

Find what collectors want and cannot get

communityWant divided by communityHave is the ratio the community reads as demand. Pull a genre or a label's catalogue, sort on it, and the scarce pressings surface without any invented scoring.

Pull a whole discography or label catalogue

Put numeric Discogs ids into Discogs artist ids or Discogs label ids - the number in a discogs.com/artist/… or discogs.com/label/… URL - and the run returns every release under them instead of searching.

Rate limiting, honestly

Discogs allows 25 requests a minute to an anonymous caller. This actor is paced under that ceiling and the setting is capped there, so a large run is slow by design rather than throttled halfway through. Turning off Include marketplace and rating data drops it to one request per hundred releases when you only need the catalogue.

Input configuration

Every field is optional. The prefilled values below are what runs if you press Start without changing anything.

Combine any of these. Leave them all empty to list Electronic releases.

FieldTypeAcceptsWhat it does
querystringfree textFree text matched across artist, release title, label and catalogue number.
genrestringfree textA Discogs top-level genre - Electronic, Rock, Jazz, Hip Hop, Funk / Soul, Classical, Reggae, Pop, Folk, World, & Country, Latin, Blues, Non-Music, Stage & Screen, Brass & Military, Children's. Prefilled with "Electronic".
stylestringfree textA Discogs style, which is finer than a genre - Techno, House, Ambient, Drum n Bass, Hard Bop, Shoegaze, Bossa Nova.
labelstringfree textRestrict to one record label by name, for example Warp Records, Blue Note, Motown.
countrystringfree textCountry of release, for example UK, US, Germany, Japan.
formatstringfree textPhysical or digital format - Vinyl, CD, Cassette, File, Box Set.
yearstringfree textA single release year, for example 1994.

Or pull a whole discography or catalogue

Given here, these replace the search above.

FieldTypeAcceptsWhat it does
artistIdslistone value per linePull complete discographies instead of searching. One numeric Discogs artist id per line - the number in a discogs.com/artist/ URL.
labelIdslistone value per lineOne numeric Discogs label id per line - the number in a discogs.com/label/ URL. Returns that label's whole catalogue.

Filters

Applied after each release is read. Both need marketplace data, below.

FieldTypeAcceptsWhat it does
minCommunityHaveinteger0 to 1000000Keep only releases at least this many Discogs users have in their collection - the simplest measure of how widely a pressing circulated.
minForSaleinteger0 to 100000Keep only releases with at least this many copies currently listed in the Discogs marketplace.

Output

Row depth, volume and politeness.

FieldTypeAcceptsWhat it does
includeMarketDatatrue/falsecheckboxRead each release's full record for copies for sale, lowest price, star rating, tracklist and exact release date. Turn off for a faster, shallower run - the artist, label and catalogue number still come back. Prefilled with true.
maxReleasesinteger1 to 2000Hard ceiling on the rows this run produces, and therefore on what it costs. You are charged per release returned. Prefilled with 25.
requestsPerMinuteinteger1 to 25Discogs allows 25 requests a minute to an anonymous caller and this is capped there. Lower it if you see the API refusing requests. Prefilled with 22.

Pricing

Pay per event. The primary event is Release returned (release-returned), charged at $0.003 per event on the free plan, falling to $0.0015 on the highest tier.

One Discogs release delivered as a complete row, including artist, label, catalogue number, collector counts and live marketplace figures. Blocked sources and empty result sets are never charged.

Other charged events: apify-actor-start (Actor Start).

Minimum charge cap per run: $0.05.

Tiered discounts apply automatically on every paid Apify plan. Platform usage is absorbed by the Actor, so the per-event price is the whole price.

Usage examples

The prefilled run, which is what Start does with nothing changed

{
"genre": "Electronic",
"includeMarketData": true,
"maxReleases": 25,
"requestsPerMinute": 22
}

Filter by search query

{
"genre": "Electronic",
"includeMarketData": true,
"maxReleases": 25,
"requestsPerMinute": 22,
"query": "Aphex Twin"
}

Filter by genre

{
"genre": "Jazz",
"includeMarketData": true,
"maxReleases": 25,
"requestsPerMinute": 22
}

Filter by style

{
"genre": "Electronic",
"includeMarketData": true,
"maxReleases": 25,
"requestsPerMinute": 22,
"style": "Techno"
}

Filter by label name

{
"genre": "Electronic",
"includeMarketData": true,
"maxReleases": 25,
"requestsPerMinute": 22,
"label": "Warp Records"
}

Output example

One row, exactly as the actor wrote it to the dataset:

{
"handle": "Doon Kanda",
"artistName": "Doon Kanda",
"artistId": 5512216,
"artistUrl": "https://www.discogs.com/artist/5512216",
"releaseId": "12421524",
"releaseTitle": "Luna EP",
"year": 2018,
"released": "2018-08-24",
"country": "Europe",
"genres": [
"Electronic"
],
"styles": [
"Experimental",
"IDM"
],
"labels": [
"Hyperdub"
],
"catalogNumbers": [
"HDB116"
],
"formats": [
"Vinyl"
],
"trackCount": 7,
"masterId": "1589103",
"communityHave": 304,
"communityWant": 146
}

That row carries 25 fields in total; 18 are shown.

Fields on every row

FieldTypeWhat it is
handlestringThe release's primary artist, exactly as Discogs names them. Discogs disambiguates acts that share a name with a numeric suffix, so this addresses one act uniquely and is stable across runs.
artistNamestringThe primary credited artist on the release.
artistIdintegerThe artist's numeric id, usable to pull their whole discography.
artistUrlstringThe artist's public page on discogs.com.
releaseIdstringThe release's permanent numeric id on Discogs.
releaseTitlestringThe title of this particular pressing.
yearintegerThe year this pressing was released.
releasedstringThe exact release date where Discogs records one.
countrystringWhere this pressing was released.
genreslistDiscogs' top-level genres for the release.
styleslistDiscogs' finer style tags for the release.
labelslistEvery label credited on this pressing.
catalogNumberslistThe label catalogue numbers printed on this pressing.
formatslistThe physical or digital formats this pressing came in.
trackCountintegerHow many tracks the release's tracklist holds.
masterIdstringThe id of the master record grouping every pressing of this work, where one exists.
communityHaveintegerHow many Discogs users have this pressing in their collection.
communityWantintegerHow many Discogs users have this pressing on their wantlist. The want-to-have ratio is the field collectors read as demand.
ratingAveragenumberAverage user rating out of 5.
ratingCountintegerHow many users rated this pressing.
numForSaleintegerHow many copies are listed in the Discogs marketplace right now.
lowestPriceUsdnumberThe cheapest copy currently listed in the marketplace.
dataQualitystringDiscogs' own label for how well vetted this entry is.
releaseUrlstringThe release's public page on discogs.com.
retrievedAtstringWhen this row was read from Discogs, in UTC.

3 named dataset views ship with it: Releases, Marketplace, Catalogue. They drive the Output tab in Console and the Output block on the Actor's .md page.

FAQ

Does it need a Discogs account or token? No. Every endpoint it uses answers an unauthenticated caller that sends a User-Agent.

Why is handle the artist and not the release? Because it is what addresses a stable thing across runs. Discogs disambiguates two acts of the same name itself, so the artist name identifies one act, and grouping releases under it is how a discography reads.

What is the difference between a release and a master? A master groups every pressing of one work; a release is one pressing, with its own country, format, catalogue number and marketplace. This returns releases, and carries masterId so you can group them yourself.

Are the marketplace figures live? Yes - numForSale and lowestPriceUsd are read from the release record during the run and change through the day.


Unofficial - not affiliated with Discogs. Collects public data only. reapx. Contact reapxdev@proton.me.

The full published archive

Each archive page carries Dataset JSON-LD, a canonical URL and the identifiers used, so an agent can resolve an entity without running anything. Nothing on those pages is estimated or modelled.

🧪 Example input

A real, runnable configuration — this is an actual input this Actor has run with.

{
"label": "Warp Records",
"includeMarketData": true,
"requestsPerMinute": 22,
"maxReleases": 200
}

📄 Sample output

One real row from a real run of this Actor, unedited.

{
"handle": "Prefuse 73",
"artistName": "Prefuse 73",
"artistId": 3722,
"artistUrl": "https://www.discogs.com/artist/3722",
"releaseId": "10326565",
"releaseTitle": "Vocal Studies + Uprock Narratives",
"year": 2001,
"released": "2001",
"country": "US",
"genres": [
"Electronic",
"Hip Hop"
],
"styles": [
"Glitch",
"Breaks",
"IDM",
"Downtempo",
"Experimental",
"Glitch Hop"
],
"labels": [
"Warp Records"
],
"catalogNumbers": [
"WARP ADVCD 83",
"warp advcd 83"
],
"formats": [
"CD"
],
"trackCount": 16,
"masterId": "51105",
"communityHave": 7,
"communityWant": 38,
"ratingAverage": 0,
"ratingCount": 0,
"numForSale": 3,
"lowestPriceUsd": 5.5,
"dataQuality": "Needs Vote",
"releaseUrl": "https://www.discogs.com/release/10326565",
"retrievedAt": "2026-08-03T12:32:06Z"
}

How it works

  1. You set the filters below, or none at all - every field is optional.
  2. The Actor calls the public api.discogs.com API directly over HTTP. There is no key to obtain, no login and no headless browser, so a run is fast and cannot break on a UI change.
  3. It pages through the results at the rate the source asks for, honouring Retry-After rather than retrying into a harder block.
  4. Every row is pushed to the dataset as it is built - never buffered to the end. A run that hits its time limit still returns everything it collected.
  5. You are charged release-returned at $0.003 per row, and nothing for Apify platform usage. The maximum-results field is therefore your cost cap, and Apify Store discounts apply on top.

💬 Your feedback

Found a bug, or need a field this does not return yet? Open an issue on the Actor's Issues tab, or write to reapxdev@proton.me. Bugs get fixed and reasonable field requests get added.

⚠️ Run outcomes and error handling

This Actor reports what happened in the run's status message, and it always keeps whatever it collected. These are the outcomes you can get and what each one means.

OutcomeWhat it means
SuccessRows were returned and you were charged release-returned at $0.003 per row.
No matchesThe source returned nothing for your filters. Nothing is charged. Widen the date window or drop a filter.
Partial - time limitThe run reached its time limit. It stops collecting about 45 seconds early, pushes what it has and finishes SUCCEEDED with a status message saying how far it got. The dataset is correct as far as it went; it is never truncated silently.
Partial - source refusedThe source rate-limited or refused some requests. The affected items are skipped and named in the log, and everything already collected is still pushed. A block never discards a run's work.

What is guaranteed either way

  • Every row is pushed as it is built, not buffered to the end of the run. Anything that buffers output loses everything to a timeout, a block or a migration; this does not.
  • Retry-After is respected. When the source asks for a pause, the Actor waits the time it asked for instead of retrying into a harder block.
  • Requests go through Apify's datacenter proxy group, so concurrent runs do not share a single egress IP.
  • A field absent from the source is absent from the row. Nothing is inferred, modelled or filled in to make a row look complete.

🧭 Ready-made configurations

These are saved, published configurations of this exact Actor. Open one and run it as it is, or copy its input as a starting point - each link is a live page with the full input and its output schema.

ConfigurationInput
Techno Releases on Discogs - Prices & Raritygenre: Electronic; style: Techno; requestsPerMinute: 22
House Releases on Discogs - Prices & Raritygenre: Electronic; style: House; requestsPerMinute: 22
Ambient Releases on Discogs - Prices & Raritygenre: Electronic; style: Ambient; requestsPerMinute: 22
Drum & Bass Releases on Discogs - Prices & Raritygenre: Electronic; style: Drum n Bass; requestsPerMinute: 22
IDM Releases on Discogs - Prices & Raritygenre: Electronic; style: IDM; requestsPerMinute: 22
Synth-Pop Releases on Discogs - Prices & Raritygenre: Electronic; style: Synth-pop; requestsPerMinute: 22
Punk Releases on Discogs - Prices & Raritygenre: Rock; style: Punk; requestsPerMinute: 22
Prog Rock Releases on Discogs - Prices & Raritygenre: Rock; style: Prog Rock; requestsPerMinute: 22
Shoegaze Releases on Discogs - Prices & Raritygenre: Rock; style: Shoegaze; requestsPerMinute: 22
Psychedelic Rock Releases on Discogs - Prices & Raritygenre: Rock; style: Psychedelic Rock; requestsPerMinute: 22
Hard Bop Releases on Discogs - Prices & Rarity-
Free Jazz Releases on Discogs - Prices & Rarity-
Boom Bap Releases on Discogs - Prices & Rarity-
Disco Releases on Discogs - Prices & Rarity-

There are 50 of these in total, all listed on the Actor's Examples tab.