Discogs Release Prices & Vinyl Collector Price Watch
Pricing
from $3.15 / 1,000 release priceds
Discogs Release Prices & Vinyl Collector Price Watch
Lowest marketplace price and copies for sale for Discogs releases, one flat row each: title, artists, year, format, label, country, genres, community have/want and rating. Find releases by search, artist, label, master or id. No token.
Pricing
from $3.15 / 1,000 release priceds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Price Discogs releases in bulk. For each release you get one flat row: the lowest marketplace price right now, how many copies are for sale, and the release's own details - title, artists, year, format, label, catalogue number, country, genres, styles - with how many collectors have and want it and its rating. Find releases by search term, artist, label, master (all pressings of one album) or by a list of ids and URLs, and run it on a schedule as a record collector's price watch.
No account, no API token, no login, no browser.
Input
| Field | Notes |
|---|---|
releases | Release ids or URLs, one per line: 249504, r249504 or https://www.discogs.com/release/249504-.... The watchlist route; read first. |
queries | Search terms, one per line (artist, title, catalogue number). Releases only. |
artistIds | Artist ids or URLs. Every release in the artist's discography. A master in it is priced through its main release. |
labelIds | Label ids or URLs. Every release on the label. Big labels have hundreds of thousands, so set maxItems. |
masterIds | Master ids or URLs. Every version (pressing, reissue, format) of the master. |
maxItems | Stop after this many rows in total across all sources (default 100, up to 10,000). |
currency | USD (default), GBP, EUR, CAD, AUD, JPY, CHF, MXN, BRL, NZD, SEK or ZAR. |
proxyConfiguration | Apify proxy by default. |
Supply at least one of releases, queries, artistIds, labelIds,
masterIds. A release found by more than one route is returned and billed once,
under the first route that found it (found_via). Routes run in the order
listed above.
Output
| Field | Notes |
|---|---|
release_id, url | Discogs' numeric id and the release page. |
title, artists | The release title (Discogs does not put the artist in it) and the credited artist names. |
lowest_price, currency | The cheapest copy for sale now, without shipping, and the currency it is quoted in. |
num_for_sale | Copies listed for sale now. |
blocked_from_sale | True when Discogs does not allow the release to be sold. |
have, want | Collectors who own / want the release. |
rating_average, rating_count | Community rating (1 to 5) and the number of ratings. |
year, released, country | Year, the release date exactly as Discogs writes it (1987-07-00 is July 1987), country of release. |
formats | Format and descriptions: ["Vinyl", "7\"", "45 RPM", "Single", "Stereo"]. |
labels, catalog_numbers | Label names and catalogue numbers. |
genres, styles | Discogs' genres and styles. |
master_id, thumbnail_url | The master release it belongs to, and a 150 px cover thumbnail. |
status, data_quality | Discogs' own review state and data-quality grade. |
found_via | The route that found the release (release 249504, search: ..., artist 72872, label 895, master 96559). |
fetched_at | When the price was read (ISO 8601 UTC), so two runs can be compared. |
Honest nulls
A field Discogs did not send is null, never 0:
lowest_priceis null when no copy is for sale (num_for_saleis0). A release nobody sells has no price; it does not cost 0. The row is still returned, because "nothing for sale" is the answer a price watch is asking for.currencyis set on every row, including those with a null price: it is the currency you asked for.rating_averageis null when nobody has rated the release (Discogs sends0.0with a count of0).haveandwantcan be a genuine0.yearis null when Discogs holds none (it sends0);master_idis null for a release that belongs to no master.- A release Discogs answers 404 for (a deleted or never-existing id) produces no row, no charge, and a line in the run log.
lowest_price is the cheapest asking price, not a sale price or a market
value. It is also the cheapest copy in any condition.
Pricing
Pay per event:
- $0.002 per run (
actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing. - $0.00035 per release row written (
release-scraped), i.e. $0.35 per 1,000 releases.
How it fetches, and how fast it is
It calls Discogs' public API (api.discogs.com) without a token. Per release it
makes one request in US dollars (/releases/<id> carries the price and the
count next to the details) and two in any other currency (only
/marketplace/stats/<id> converts). Discovery routes add one request per 100
releases found.
Discogs allows 25 requests a minute per address without a token. That is the
speed limit of this actor. With the default Apify proxy, the actor reads the
remaining allowance from every response and moves to a fresh address when it is
spent, so a run keeps going; without a proxy it waits a minute each time, which
is about 24 releases a minute. Plan on minutes, not seconds, for a thousand
releases, and pick USD for the fastest run.
Things worth knowing, all measured on 2026-10-13:
- The request is identified. Discogs requires a descriptive User-Agent and refused (HTTP 403) one that named the hosting platform, so the actor sends its own product name.
- Search stops at 10,000 results (100 pages of 100). Narrow the term or use the artist, label or master routes to go past it.
- A master id that does not exist is checked first. Discogs' version list answers 200 with its entire catalogue (8 million releases) for an unknown master id, so the actor confirms the master exists before reading its versions. An unknown id is reported as not found and costs one request.
- Prices move.
fetched_atis when the price was read; a release can sell out or be undercut a minute later. - Stops early rather than burning your credit. If five releases in a row cannot be read (a blocked address), the run stops and says why.