Discogs Marketplace Scraper icon

E-commerce

Discogs Marketplace Scraper

Pull live Discogs marketplace pricing for any release ID or search query — per-listing asking price and currency, media and sleeve condition grades, seller username, rating percentage, rating count and ships-from country — plus an optional per-release stats row with the lowest asking price and the number of copies for sale. It joins the release API, the marketplace-stats API and the Cloudflare-fronted marketplace HTML into one flat schema.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

Two row types share one flat schema. The row_type discriminator selects which fields are populated — listing rows carry per-seller pricing, condition grades, and seller ratings; stats rows carry the per-release marketplace aggregate.

What we handle for you

  • Per-listing asking prices, condition grades, seller ratings, and ships-from country
  • Per-release marketplace stats row (lowest asking price, total active listings,
  • Input by release ID (deterministic, fast) or by free-text search query — the search
  • Single flat schema with a row_type discriminator — easy to join or aggregate
  • Pydantic v2 input validation — XOR between releaseIds and searchQuery is
  • Conservative rate-limit pacing at one request every 1.5 seconds (~40 req/min) —
  • Per-release fail isolation — one bad release ID logs a warning and the run continues.

Use cases

  • Vinyl / CD reseller benchmarking — pull every active listing for releases in your
  • Music-collectibles arbitrage — monitor cross-country shipping spreads
  • Catalog / label market intel — for a label's release IDs, track num_for_sale
  • Journalism / pricing studies — "the cheapest first pressing of Nevermind on
  • Marketplace health monitoring — count stats_blocked_from_sale=true rows across
  • Seller-quality screening — filter listings by seller_rating_pct >= 99.0 and

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
releaseIds array no List of Discogs release IDs (integers) to scrape. Either releaseIds OR searchQuery must be provided — not both. Find a release ID in the URL: discogs.com/release/249504-Rick-Astley-....
searchQuery string no Free-text Discogs search. The Actor resolves the top maxSearchResults hits into release IDs. Either releaseIds OR searchQuery must be provided — not both.
maxSearchResults integer no Cap on releases resolved from searchQuery. Ignored when releaseIds is set.
maxPagesPerRelease integer no Hard cap on listings pages fetched per release (each page = 25 listings). Combined with maxListingsPerRelease.
maxListingsPerRelease integer no Hard cap on listing rows emitted per release. Lower wins when both this and maxPagesPerRelease are set.
includeStatsRow boolean no When true, emit one extra row_type="stats" row per release with the public marketplace aggregate (lowest_price, num_for_sale, blocked_from_sale).
useProxy boolean no Route requests through Apify Proxy (BUYPROXIES94952). Default ON — Cloudflare on the Discogs marketplace HTML surface 403s un-proxied Apify datacenter IPs. Turn off only when running locally from a residential ISP.
{
  "releaseIds": [
    "249504"
  ],
  "maxSearchResults": 5,
  "maxPagesPerRelease": 4,
  "maxListingsPerRelease": 100,
  "includeStatsRow": true,
  "useProxy": true
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

row_typerelease_idrelease_titleartistyearcountryformat_nameformat_descriptionsgenresmaster_idrelease_urllisting_idlisting_urlasking_priceasking_currencyshipping_text

{
  "row_type": "listing",
  "release_id": 249504,
  "release_title": "Never Gonna Give You Up",
  "artist": "Rick Astley",
  "year": 1987,
  "country": "UK",
  "format_name": "Vinyl",
  "format_descriptions": [
    "7\"",
    "45 RPM",
    "Single",
    "Stereo"
  ],
  "genres": [
    "Electronic",
    "Pop"
  ],
  "master_id": 96559,
  "release_url": "https://www.discogs.com/release/249504",
  "listing_id": 3761251765,
  "listing_url": "https://www.discogs.com/sell/item/3761251765",
  "asking_price": 0.5,
  "asking_currency": "GBP",
  "shipping_text": "+\u00a315.00",
  "condition_media": "Very Good Plus (VG+)",
  "condition_sleeve": "Generic",
  "seller_username": "Ronan266",
  "seller_rating_pct": 100.0,
  "seller_rating_count": 35,
  "seller_country": "United Kingdom",
  "stats_lowest_price": null,
  "stats_lowest_currency": null,
  "stats_num_for_sale": null,
  "stats_blocked_from_sale": null,
  "scraped_at": "2026-05-16T12:00:00.000Z"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result row emitted$0.0050Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Asking prices only — no closed-sale history. Discogs hosts sold-price data at
  • Public Discogs surfaces only. No authenticated Discogs API calls, no personal
  • One snapshot per run. Schedule recurring runs via Apify Schedules for
  • 25 listings per page — a Discogs-imposed pagination size. Combined with
  • Currency is not normalised. Discogs serves prices in the seller's local currency
  • Throughput ~40 req/min. A 10-release run with 4 pages each takes roughly
  • 7-day default storage retention on the Apify FREE tier. Export your dataset

FAQ

What is the difference between "discogs price scraper" asking-price data and sold-price history?
Discogs publishes two distinct price signals: (1) active asking prices on the marketplace listings page — public, and what this Actor delivers — and (2) completed-sale prices at /sell/history/{release_id} — login-walled, not accessible without user OAuth. For most reseller and arbitrage workflows the live asking-price distribution is the more actionable signal: it tells you what the market is asking right now, not what it cleared months ago.
Does this Actor work as a Discogs marketplace API alternative?
Yes. The official Discogs API only exposes lowest_price and num_for_sale aggregates for any given release. This Actor adds the full per-listing detail — who is selling, at what price, in what condition, shipping from where — by joining the REST endpoints with the marketplace HTML. It is the data layer the official API does not provide.
How does it handle blocks and Cloudflare protection?
We take care of that. The Actor uses browser-fingerprint impersonation (curl-cffi), a session warm-up sequence, residential proxy rotation, and exponential backoff with Retry-After support. You run the Actor; we handle the connection layer.
Why does this Actor need a custom `User-Agent` for Discogs?
Discogs enforces a written API policy (Discogs Developer Terms) requiring every API request to carry an Application-Name/Version style User-Agent. The Actor sends DevilScrapes/0.1 (+https://apify.com/DevilScrapes) on every API call automatically — nothing to configure.
What does `stats_blocked_from_sale=true` mean?
It means Discogs has flagged the release as un-sellable — a legal, ToS, or licensing restriction. stats_num_for_sale=0 alongside it confirms zero active listings. To identify scarce releases, use WHERE stats_num_for_sale < 5.
Can I scrape my own wantlist or private collection?
No. This Actor scrapes only public marketplace data. Private user data (wantlist, collection, messages) requires Discogs OAuth, which is intentionally out of scope.
Can I fetch more than 100 release IDs in one run?
No. The input model caps releaseIds at 100 (and maxListingsPerRelease at 500, maxPagesPerRelease at 20). A single run emits at most 100 × 500 + 100 = 50,100 rows. Split larger workloads across multiple runs and concatenate the datasets.
Is this the same as a Discogs scraper for bulk catalog export?
This Actor is optimised for marketplace pricing data — asking prices, condition, seller metadata — not full catalog metadata export. If your goal is release metadata (tracklist, labels, formats) at bulk scale, the official Discogs data dump is a better starting point. If your goal is live pricing intelligence, this is the right tool.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run