# Discogs Music Releases & Artists Scraper (`scrapers_lat/discogs-scraper`) Actor

Extract Discogs music releases and artists: tracklist, labels, catalog number, format, genres, ratings, community have/want and lowest marketplace price. Export JSON, CSV, Excel.

- **URL**: https://apify.com/scrapers\_lat/discogs-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![Discogs Music Releases & Artists Scraper](https://scrapers.lat/banners/discogs-scraper.png)](https://console.apify.com/actors/C8ZT7r30uRhhbziIJ/input)

## Discogs Music Releases & Artists Scraper

Here is one real result, with every field the actor returns (the `tracklist` is trimmed from 14 entries to 3 here for readability; the actor returns all of them):

```json
{
  "imageUrl": "https://i.discogs.com/6gMPje3DUKa1LMojsHtGTE5o4fIQon5lYaIJvALlvVM/rs:fit/g:sm/q:90/h:600/w:592/czM6Ly9kaXNjb2dz/LWRhdGFiYXNlLWlt/YWdlcy9SLTI4Nzkt/MTIzNjAzNTQ3Mi5q/cGVn.jpeg",
  "title": "Daft Punk - Discovery",
  "type": "release",
  "url": "https://www.discogs.com/release/2879-Daft-Punk-Discovery",
  "id": 2879,
  "artist": "Daft Punk",
  "artistNames": ["Daft Punk"],
  "label": "Virgin",
  "labelNames": ["Virgin"],
  "catalogNumber": "V2940",
  "catalogNumbers": ["V2940", "8496061", "7243 8496061 2"],
  "format": "Vinyl LP Album Stereo",
  "formatDescriptions": ["LP", "Album", "Stereo"],
  "country": "Europe",
  "released": "2001-03-12",
  "genre": "Electronic",
  "genres": ["Electronic"],
  "style": "Disco, House, Electro, French House",
  "styles": ["Disco", "House", "Electro", "French House"],
  "masterId": 26647,
  "communityHave": 28827,
  "communityWant": 22445,
  "ratingAverage": 4.64,
  "ratingCount": 3645,
  "lowestPrice": 45.98,
  "priceCurrency": "USD",
  "numForSale": 127,
  "trackCount": 14,
  "tracklist": [
    { "position": "A1", "title": "One More Time", "duration": "" },
    { "position": "A2", "title": "Aerodynamic", "duration": "" },
    { "position": "B1", "title": "Harder, Better, Faster, Stronger", "duration": "" }
  ],
  "profile": null,
  "aliases": null,
  "members": null,
  "artistUrls": null,
  "searchInput": "Daft Punk Discovery",
  "aiSummary": null,
  "observedAt": "2026-08-10T14:32:45.193Z",
  "error": null
}
```

The most complete Discogs scraper available. It returns every field a Discogs release, master, artist, or label exposes (catalog numbers, formats, genres, styles, community have/want, rating and marketplace price), adds the full tracklist and, for artists, profile, aliases and members, and gives you search-type, year, genre, style, format, country and label filters plus opt-in AI summaries to target exactly the records you need.

**📥 [Input](https://apify.com/scrapers_lat/discogs-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/discogs-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/discogs-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/discogs-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Discogs-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

The actor searches Discogs for releases, masters, artists, or labels by query and/or scrapes direct Discogs URLs, applies your filters, and writes one normalized record per entity to the run's dataset. For releases it returns the title, artist, label, catalog numbers, format, country, release date, genres and styles, community have/want counts, average rating and rating count, lowest marketplace price with currency, number for sale, and track count.

With `withDetails` on (the default), each release is enriched with the full tracklist, cover image, community rating, and lowest marketplace price; artists get their profile, aliases, and members. Missing source values are returned as `null`, never invented. An optional paid AI add-on writes a concise summary of the artist/label biography, release notes, and tracklist.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 releases matching "Daft Punk Discovery" with full details.

```json
{
  "searchQueries": ["Daft Punk Discovery"],
  "searchType": "release",
  "maxReleases": 10,
  "withDetails": true
}
```

Provide search queries, direct Discogs URLs, or both. All filter fields are optional.

### Input reference

| Field | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| `searchQueries` | string\[] | no | `["Daft Punk Discovery"]` | Artist, release, or label names to search. Each query is searched separately. | `["Aphex Twin"]` |
| `searchType` | enum | no | `release` | Entity kind for searches: `release`, `master`, `artist`, `label`, or `all`. | `artist` |
| `startUrls` | string\[] | no | (empty) | Direct Discogs URLs to scrape (release, master, artist, or label pages). | `["https://www.discogs.com/release/249504"]` |
| `year` | string | no | (any) | Limit search results to this release year. | `2001` |
| `genre` | string | no | (any) | Limit search results to this genre. | `Electronic` |
| `style` | string | no | (any) | Limit search results to this style. | `House` |
| `format` | string | no | (any) | Limit search results to this format. | `Vinyl` |
| `country` | string | no | (any) | Limit search results to this release country. | `UK` |
| `label` | string | no | (any) | Limit search results to this record label. | `Warp Records` |
| `maxReleases` | integer | no | `10` | Maximum number of records to collect across all searches and URLs. | `50` |
| `withDetails` | boolean | no | `true` | Enrich each release with tracklist, cover, rating, and lowest price; artists with profile, aliases, members. | `false` |
| `withSummary` | boolean | no | `false` | AI add-on. Write a 2-3 sentence summary of the biography, notes, and tracklist. Billed per enriched record on success. Paid plans only. | `true` |

### Output reference

One dataset item per entity. Types: `string`, `number`, `integer`, `boolean`, `string[]`, `object[]`, or `null` when the source value is absent.

| Field | Type | Description |
|---|---|---|
| `imageUrl` | string | Cover / primary image URL. |
| `title` | string | Release or entity title. |
| `type` | string | Entity type: `release`, `master`, `artist`, or `label`. |
| `url` | string | Canonical Discogs URL. |
| `id` | integer | Discogs numeric ID (unique per entity). |
| `artist` | string | Primary artist name (releases). |
| `artistNames` | string\[] | All credited artist names. |
| `label` | string | Primary label name (releases). |
| `labelNames` | string\[] | All label names. |
| `catalogNumber` | string | Primary catalog number. |
| `catalogNumbers` | string\[] | All catalog numbers. |
| `format` | string | Full format string. |
| `formatDescriptions` | string\[] | Format descriptors, for example `LP`, `Album`. |
| `country` | string | Release country. |
| `released` | string | Release date or year. |
| `genre` | string | Primary genre. |
| `genres` | string\[] | All genres. |
| `style` | string | Styles joined as text. |
| `styles` | string\[] | All styles. |
| `masterId` | integer | Master release ID when applicable, else `null`. |
| `communityHave` | integer | Number of users who have this release. |
| `communityWant` | integer | Number of users who want this release. |
| `ratingAverage` | number | Average community rating. |
| `ratingCount` | integer | Number of community ratings. |
| `lowestPrice` | number | Lowest marketplace price (with details on), else `null`. |
| `priceCurrency` | string | Currency of the lowest price. |
| `numForSale` | integer | Copies currently for sale. |
| `trackCount` | integer | Number of tracks. |
| `tracklist` | object\[] | Tracklist with `position`, `title`, `duration` (with details on). |
| `profile` | string | Artist/label profile text (with details on), else `null`. |
| `aliases` | string\[] | Artist aliases (with details on), else `null`. |
| `members` | string\[] | Band members (with details on), else `null`. |
| `artistUrls` | string\[] | External artist links (with details on), else `null`. |
| `searchInput` | string | The query or URL that produced this record. |
| `aiSummary` | string | AI summary (opt-in), else `null`. |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `error` | string | Present only on a failed item; carries the failure reason. |

### Example output record

Real record from a live run (input `{"searchQueries": ["Daft Punk Discovery"], "searchType": "release", "maxReleases": 10, "withDetails": true}`), with `tracklist` trimmed to 2 entries for brevity:

```json
{
  "title": "Daft Punk - Discovery",
  "type": "release",
  "url": "https://www.discogs.com/release/2879-Daft-Punk-Discovery",
  "id": 2879,
  "artist": "Daft Punk",
  "label": "Virgin",
  "catalogNumber": "V2940",
  "catalogNumbers": ["V2940", "8496061", "7243 8496061 2"],
  "format": "Vinyl LP Album Stereo",
  "country": "Europe",
  "released": "2001-03-12",
  "genres": ["Electronic"],
  "styles": ["Disco", "House", "Electro", "French House"],
  "masterId": 26647,
  "communityHave": 28827,
  "communityWant": 22445,
  "ratingAverage": 4.64,
  "ratingCount": 3645,
  "lowestPrice": 45.98,
  "priceCurrency": "USD",
  "numForSale": 127,
  "trackCount": 14,
  "tracklist": [
    { "position": "A1", "title": "One More Time", "duration": "" },
    { "position": "B1", "title": "Harder, Better, Faster, Stronger", "duration": "" }
  ],
  "searchInput": "Daft Punk Discovery",
  "aiSummary": null,
  "observedAt": "2026-08-10T14:32:45.193Z",
  "error": null
}
```

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~discogs-scraper/run-sync-get-dataset-items?token=%3CTOKEN%3E" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["Daft Punk Discovery"],"searchType":"release","maxReleases":10,"withDetails":true}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~discogs-scraper/runs?token=%3CTOKEN%3E" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["Aphex Twin"],"searchType":"artist","genre":"Electronic","maxReleases":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/discogs-scraper \
  --input '{"startUrls":["https://www.discogs.com/release/249504"]}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** You are charged per record returned (`result` event). See the [pricing tab](https://apify.com/scrapers_lat/discogs-scraper/pricing) for the current per-result price.
- **Details and AI add-ons are billed separately.** Detail enrichment and the AI summary each charge only when they succeed and only when enabled.
- **No charge on failure.** If a run errors, the actor writes an item with a populated `error` field and does not charge for it. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 25 records per run. AI summaries are paid plans only. Upgrade for higher limits.

### FAQ and troubleshooting

**How do I search artists or labels instead of releases?**
Set `searchType` to `artist` or `label` (or `all` for every type). Artist records include profile, aliases, and members when `withDetails` is on.

**Can I scrape a specific Discogs page?**
Yes. Put the release, master, artist, or label URL in `startUrls`. You can combine URLs and search queries in one run.

**Why is `lowestPrice` null?**
Either `withDetails` was off, or no copies are currently listed in the marketplace. Missing source values are returned as `null`, never invented.

**What do `communityHave` and `communityWant` mean?**
They are the number of Discogs users who have the release in their collection versus their wantlist, a useful demand signal.

**Is this an official Discogs tool?**
No. This actor is independent and has no affiliation with Discogs. It reads only data that is publicly available on the site. Use it in accordance with the source's terms.

### Related scrapers

- [SoundCloud Scraper](https://apify.com/scrapers_lat/soundcloud-scraper): Tracks and artists from SoundCloud.
- [Goodreads Scraper](https://apify.com/scrapers_lat/goodreads-scraper): Books, authors, and ratings.
- [Letterboxd Scraper](https://apify.com/scrapers_lat/letterboxd-scraper): Films, ratings, and reviews.
- [IMDb Titles Scraper](https://apify.com/scrapers_lat/imdb-titles-scraper): Film and TV title data.
- [Steam Games Scraper](https://apify.com/scrapers_lat/steam-games-scraper): Game listings and metadata.
- [OpenLibrary Scraper](https://apify.com/scrapers_lat/openlibrary-scraper): Book records and editions.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

> Independent tool, not affiliated with Discogs. Accesses only publicly available data. Use in accordance with the source's terms of service.

# Actor input Schema

## `maxReleases` (type: `integer`):

Maximum number of records to collect across all searches and URLs. Optional.

## `withDetails` (type: `boolean`):

When enabled, each release is enriched with tracklist, cover image, community rating and lowest marketplace price. Artists get profile, aliases and members.

## `withSummary` (type: `boolean`):

Add-on (paid plans). Uses AI to write a concise 2-3 sentence summary of the artist/label biography, release notes and tracklist. Billed per enriched record only on success.

## `searchQueries` (type: `array`):

Artist, release or label names to search on Discogs. Each query is searched separately. Accepts a single string too.

## `searchType` (type: `string`):

Which kind of entity to return for search queries.

## `startUrls` (type: `array`):

Direct Discogs URLs to scrape (release, master, artist or label pages, e.g. https://www.discogs.com/release/249504).

## `year` (type: `string`):

Optional filter. Limit search results to this release year (e.g. 2001).

## `genre` (type: `string`):

Optional filter. Limit search results to this genre (e.g. Electronic, Rock, Jazz).

## `style` (type: `string`):

Optional filter. Limit search results to this style (e.g. House, Techno, Synth-pop).

## `format` (type: `string`):

Optional filter. Limit search results to this format (e.g. Vinyl, CD, Cassette, LP).

## `country` (type: `string`):

Optional filter. Limit search results to this release country (e.g. US, UK, Germany).

## `label` (type: `string`):

Optional filter. Limit search results to this record label (e.g. Warp Records).

## Actor input object example

```json
{
  "maxReleases": 10,
  "withDetails": true,
  "withSummary": false,
  "searchQueries": [
    "Daft Punk Discovery"
  ],
  "searchType": "release"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxReleases": 10,
    "searchQueries": [
        "Daft Punk Discovery"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/discogs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxReleases": 10,
    "searchQueries": ["Daft Punk Discovery"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/discogs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxReleases": 10,
  "searchQueries": [
    "Daft Punk Discovery"
  ]
}' |
apify call scrapers_lat/discogs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/discogs-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/C8ZT7r30uRhhbziIJ/builds/xU0WV4NahJyw9Ao70/openapi.json
