# Discogs Records Scraper (Cheap) (`data_api/discogs-records-scraper-cheap`) Actor

Discogs Record Miner is a dedicated search scraper that extracts artist profiles, releases, and labels from Discogs, so you can build and update your music catalog databases without blocks.

- **URL**: https://apify.com/data\_api/discogs-records-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 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/platform/actors/running/actors-in-store#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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Records Scraper

![Discogs Records Scraper](cover.jpg)

Searching Discogs by hand means typing a name, scrolling page after page, and copying each title, artist, and link into a sheet by yourself. This scraper skips all of that. Give it a list of artists, albums, labels, or plain keywords and it returns every matching record as a clean row, with the title, category, artist, cover image, and Discogs link already split into fields. It runs fast, costs little, needs no code, and you only pay for the records you pull.

### What you get

Each match comes back as one row covering three things:

- **What it is** — `recordTitle`, `resultCategory` (artist, release, master, or label), and the `searchTerm` that found it
- **Who made it** — `creatorName` and `creatorUrl` for releases and masters
- **Where to find it** — `recordUrl`, `coverImage`, and a `collectedAt` timestamp

### Quick start

1. Open the actor and hit **Try for free**.
2. Type your artists, albums, labels, or keywords into **Search terms**, one per line.
3. Pick a **Result category** if you only want artists, releases, masters, or labels; leave it on every category for all matches.
4. Set **Results per term** to cap how many records each term brings back.
5. Press **Start**, then export the rows as JSON, CSV, Excel, or XML.

![How it works](how-it-works.jpg)

### Use cases

- **Record collectors** — track down every pressing and master of an album across the Discogs catalog
- **Music researchers** — pull a label's or artist's catalog into a spreadsheet for analysis
- **Resellers and crate diggers** — build watchlists of titles to hunt for in the marketplace
- **Data and ML teams** — assemble a structured music dataset of titles, artists, and categories
- **Apps and tools** — feed live Discogs search results into your own catalog, sheet, or BI dashboard

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchTerms` | array of strings | Yes | Artists, albums, labels, or keywords to look up; each term runs separately with pagination. Prefilled with an Aphex Twin search. |
| `categoryFilter` | string | No | Limit results to one Discogs category: `artist`, `release`, `master`, or `label`. Default `all`. |
| `resultsPerTerm` | integer | No | How many records to return per term. Default `50`. |
| `timeoutSeconds` | integer | No | Seconds to wait on each request before it times out. Default `45`. |

#### Example input

```json
{
    "searchTerms": [
        "aphex twin",
        "boards of canada"
    ],
    "categoryFilter": "release",
    "resultsPerTerm": 50,
    "timeoutSeconds": 45
}
````

### Output

Every Discogs match becomes one row, paginated automatically up to your limit. Fields that don't apply to a given entry (an artist result has no creator, for instance) come back empty rather than guessed.

#### Example output

```json
{
    "searchTerm": "aphex twin",
    "resultCategory": "release",
    "recordTitle": "Aphex Twin - Selected Ambient Works 85-92",
    "recordUrl": "https://www.discogs.com/release/1234567-Aphex-Twin-Selected-Ambient-Works-85-92",
    "coverImage": "https://i.discogs.com/example-thumbnail.jpg",
    "creatorName": "Aphex Twin",
    "creatorUrl": "https://www.discogs.com/artist/45-Aphex-Twin",
    "collectedAt": "2026-06-29T12:00:00.000000+00:00"
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `searchTerm` | string | The keyword or name that surfaced this record |
| `resultCategory` | string | Discogs category: artist, release, master, or label |
| `recordTitle` | string | Name or title shown for the entry |
| `recordUrl` | string | Direct Discogs link to the entry |
| `coverImage` | string | Thumbnail of the sleeve art or artist photo |
| `creatorName` | string | Artist behind the record, on releases and masters |
| `creatorUrl` | string | Direct Discogs link to the artist page |
| `collectedAt` | string | Timestamp of when the search ran |

### Tips for best results

- **Be specific with terms.** A precise artist or album name returns cleaner matches than a broad keyword.
- **Use `categoryFilter` to cut noise.** Set it to `release` or `master` when you only want records, or `label` when you're mapping a catalog.
- **Start small with `resultsPerTerm`.** Try 50 to confirm the output fits your pipeline, then raise it for a full pull.
- **Add terms in bulk.** Paste a whole list into `searchTerms` and the scraper works through them one by one.
- **Raise `timeoutSeconds`** if you hit timeouts on larger runs.

### How can I use Discogs records data?

**How can I use the Discogs Records Scraper to catalog an artist's discography?**
Add the artist name to `searchTerms`, set `categoryFilter` to `release` or `master`, and run it. Each row carries `recordTitle`, `creatorName`, and `recordUrl`, so you get a clean list of every pressing and master tied to that name.

**How can I export Discogs label data to a spreadsheet?**
Put the label name in `searchTerms` with `categoryFilter` set to `label` (or `all` to include its releases), set `resultsPerTerm` to the volume you need, and export to CSV or Excel. The result is a structured table of titles, categories, artists, and links.

**How can I build a music dataset from Discogs search results?**
Feed in a batch of artists, albums, or keywords, leave `categoryFilter` on every category, and let the scraper paginate each term. You get a consistent dataset of `recordTitle`, `resultCategory`, `creatorName`, `coverImage`, and `recordUrl` ready for analysis or a model.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords, artist names, album titles, or label names to look up on Discogs. Add one term per line and each runs on its own.

## `categoryFilter` (type: `string`):

Narrow the results to a single Discogs category, or leave it on every category to keep all matches.

## `resultsPerTerm` (type: `integer`):

How many records to bring back for each search term. The scraper walks through the result pages (25 per page) until it hits this number.

## `timeoutSeconds` (type: `integer`):

Seconds to wait on each Discogs request before it gives up.

## Actor input object example

```json
{
  "searchTerms": [
    "aphex twin",
    "boards of canada"
  ],
  "categoryFilter": "all",
  "resultsPerTerm": 25,
  "timeoutSeconds": 45
}
```

# 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 = {
    "searchTerms": [
        "aphex twin"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/discogs-records-scraper-cheap").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 = { "searchTerms": ["aphex twin"] }

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

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "aphex twin"
  ]
}' |
apify call data_api/discogs-records-scraper-cheap --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=data_api/discogs-records-scraper-cheap",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Discogs Records Scraper (Cheap)",
        "description": "Discogs Record Miner is a dedicated search scraper that extracts artist profiles, releases, and labels from Discogs, so you can build and update your music catalog databases without blocks.",
        "version": "0.0",
        "x-build-id": "TLH722VAVKq4Eokv2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/data_api~discogs-records-scraper-cheap/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-data_api-discogs-records-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/data_api~discogs-records-scraper-cheap/runs": {
            "post": {
                "operationId": "runs-sync-data_api-discogs-records-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/data_api~discogs-records-scraper-cheap/run-sync": {
            "post": {
                "operationId": "run-sync-data_api-discogs-records-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Keywords, artist names, album titles, or label names to look up on Discogs. Add one term per line and each runs on its own.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categoryFilter": {
                        "title": "Result category",
                        "enum": [
                            "all",
                            "artist",
                            "release",
                            "master",
                            "label"
                        ],
                        "type": "string",
                        "description": "Narrow the results to a single Discogs category, or leave it on every category to keep all matches.",
                        "default": "all"
                    },
                    "resultsPerTerm": {
                        "title": "Results per term",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "How many records to bring back for each search term. The scraper walks through the result pages (25 per page) until it hits this number.",
                        "default": 25
                    },
                    "timeoutSeconds": {
                        "title": "Timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Seconds to wait on each Discogs request before it gives up.",
                        "default": 45
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
