# Bandcamp Scraper - Music Artists and Albums (`parseforge/bandcamp-scraper`) Actor

Scrape Bandcamp artist profiles, album listings, track details, prices, and fan data. Extract music metadata including genres, tags, and release dates.

- **URL**: https://apify.com/parseforge/bandcamp-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Social media, Videos, Other
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🎵 Bandcamp Music Scraper

> 🚀 **Export Bandcamp albums and tracks in seconds.** Browse **any genre or tag** and collect title, artist, price, currency, genre, tags, release date, track count, and cover art. No API key, no login, no manual searching.

> 🕒 **Last updated:** 2026-05-21 · **📊 12 fields** per record · **🎵 Millions of albums** · **🌍 All genres** · **🔀 Top and New sort orders**

The **Bandcamp Music Scraper** browses Bandcamp's discover feed by genre tag and returns **12 structured fields per album**, including the artist name, price, currency, genre, user-defined tags, release date, track count, and a direct link to the album page. Cover art URLs are included so you can render thumbnails without a separate request.

Bandcamp hosts millions of independent albums, EPs, and tracks across hundreds of subgenres, and its discover API is the same internal endpoint the website uses to power its browsing experience. This Actor taps that feed directly, so you get the same results you would see if you browsed by tag, in top-selling or newest-first order, with no pagination friction.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Music researchers, playlist curators, A&R teams, indie label analysts, journalists, data scientists, recommendation-engine developers | Genre trend analysis, indie artist discovery, pricing benchmarks, new release monitoring, music catalog enrichment |

---

### 📋 What the Bandcamp Music Scraper does

Five discovery workflows in a single run:

- 🎸 **Tag browsing.** Enter any genre tag (ambient, jazz, punk, lo-fi, classical, k-pop, and hundreds more) to browse the full Bandcamp catalog for that style.
- 🏆 **Top sort.** Pull the best-selling / most-popular albums in a tag to benchmark pricing and discover leading artists.
- 🆕 **New sort.** Pull the most recently released albums in a tag for new-release monitoring and trend detection.
- 💰 **Pricing data.** Collect digital album prices and currencies from dozens of countries to build pricing benchmarks.
- 🏷️ **Tag cloud.** Each album record includes the full list of user-applied tags, giving you a multi-dimensional genre signal beyond the primary tag.

> 💡 **Why it matters:** Bandcamp is the leading platform for independent music. Its catalog captures indie, experimental, and niche genres months before they surface on streaming platforms. Scraping by tag gives you an early signal on emerging sounds, pricing norms, and which artists are gaining traction.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>tag</code></td><td>string</td><td><code>"ambient"</code></td><td>Genre or tag to browse (e.g. "jazz", "punk", "lo-fi", "electronic").</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Albums to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>sort</code></td><td>string</td><td><code>"top"</code></td><td><code>"top"</code> for best-selling, <code>"new"</code> for most recently released.</td></tr>
</tbody>
</table>

**Example: top 50 ambient albums.**

```json
{
    "tag": "ambient",
    "sort": "top",
    "maxItems": 50
}
````

**Example: 100 newest jazz releases.**

```json
{
    "tag": "jazz",
    "sort": "new",
    "maxItems": 100
}
```

> ⚠️ **Good to Know:** tags on Bandcamp are user-defined, so the same album can appear under "electronic" and "ambient". Setting `sort: "new"` is useful for new-release alerts; `sort: "top"` reflects cumulative sales and is more stable over time. Free plan users are limited to 10 albums per run.

***

### 📊 Output

Each album record contains **12 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🖼️ `imageUrl` | string | `"https://f4.bcbits.com/img/3088783485_10.jpg"` |
| 🏷️ `title` | string | `"Sender"` |
| 🎤 `artist` | string | `"Jogging House"` |
| 💰 `price` | number | `0` |
| 💱 `currency` | string | `"EUR"` |
| 🎸 `genre` | string | `"ambient"` |
| 🏷️ `tags` | array | `["ambient","drone","electronic","lo-fi"]` |
| 📅 `releaseDate` | string | `"2026-05-19 00:00:00"` |
| 🎵 `numTracks` | number | `6` |
| 🔗 `url` | string | `"https://jogginghouse.bandcamp.com/album/sender"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-21T23:47:52.000Z"` |
| ❌ `error` | string | null | `null` |

#### 📦 Sample records

<details>
<summary><strong>🎵 Free ambient album: Sender by Jogging House</strong></summary>

```json
{
    "imageUrl": "https://f4.bcbits.com/img/3088783485_10.jpg",
    "title": "Sender",
    "artist": "Jogging House",
    "price": 0,
    "currency": "EUR",
    "genre": "ambient",
    "tags": ["ambient", "downtempo", "drone", "electronic", "instrumental", "kalimba", "lo-fi", "new age", "soundscapes", "synthwave", "Frankfurt Am Main"],
    "releaseDate": "2026-05-19 00:00:00",
    "numTracks": 6,
    "url": "https://jogginghouse.bandcamp.com/album/sender",
    "scrapedAt": "2026-05-21T23:47:52.000Z",
    "error": null
}
```

</details>

<details>
<summary><strong>💰 Paid jazz album: Happy Today by Jeff Parker ETA IVtet</strong></summary>

```json
{
    "imageUrl": "https://f4.bcbits.com/img/999850971_10.jpg",
    "title": "Happy Today",
    "artist": "Jeff Parker ETA IVtet",
    "price": 9.99,
    "currency": "USD",
    "genre": "jazz",
    "tags": ["electronic", "guitar", "improvisational music", "jazz", "soul", "ambient jazz", "chamber jazz", "improvisation", "psychedelic", "Chicago"],
    "releaseDate": "2026-05-15 00:00:00",
    "numTracks": 4,
    "url": "https://intlanthem.bandcamp.com/album/happy-today",
    "scrapedAt": "2026-05-21T23:47:52.000Z",
    "error": null
}
```

</details>

<details>
<summary><strong>🎧 Electronic album: Pure Devotion by Overmono</strong></summary>

```json
{
    "imageUrl": "https://f4.bcbits.com/img/3819622098_10.jpg",
    "title": "Pure Devotion",
    "artist": "Overmono",
    "price": 9.99,
    "currency": "USD",
    "genre": "electronic",
    "tags": ["electronic", "ambient", "breakbeat", "hardcore", "techno", "London"],
    "releaseDate": "2026-08-07 00:00:00",
    "numTracks": 11,
    "url": "https://overmono.bandcamp.com/album/pure-devotion",
    "scrapedAt": "2026-05-21T23:47:52.000Z",
    "error": null
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🎸 | **Any genre, any tag.** Type any Bandcamp tag slug - ambient, lo-fi, shoegaze, hyperpop, afrobeat, and hundreds more. |
| 🏷️ | **Rich tag cloud.** Every album includes the full list of user-applied tags, not just the primary genre - ideal for multi-label classification. |
| 💰 | **Pricing data.** Captures digital album prices and currencies across dozens of countries for pricing benchmarks. |
| 🖼️ | **Cover art.** Direct image URLs for every album, ready for UI rendering without a secondary request. |
| ⚡ | **Fast.** 10 albums in under 10 seconds, 100 albums in under 2 minutes. |
| 🔁 | **Always live.** Every run fetches real-time Bandcamp data - no stale caches, no CSV snapshots. |
| 🚫 | **No authentication.** Public Bandcamp discover feed. No login or API key required. |

> 📊 Bandcamp's catalog is one of the richest sources of independent music metadata. No streaming API gives you this combination of pricing, user tags, and per-album URLs in a single paginated feed.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Tag Depth | Setup |
|---|---|---|---|---|---|
| **⭐ Bandcamp Music Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **Millions of albums** | **Live per run** | Full user-tag list | ⚡ 2 min |
| Spotify Web API | Free tier limited | Mainstream catalog | Near real-time | Genre only | ⏳ Hours (OAuth) |
| MusicBrainz | Free | Broad but text-heavy | Community lag | Release groups | 🐢 Days |
| Manual Bandcamp browsing | Free | Manual, one page at a time | Manual | Manual | 🕒 Hours |
| Discogs API | Free tier limited | Vinyl-focused | Near real-time | Genre + styles | ⏳ Hours |

Pick this Actor when you want independent music data, multi-tag enrichment, live pricing, and no OAuth setup.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the Bandcamp Music Scraper page on the Apify Store.
3. 🎯 **Set input.** Enter a genre tag (e.g. "ambient"), choose a sort order, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🎵 Music Research & A\&R

- Discover emerging artists before they hit mainstream platforms
- Monitor pricing norms for indie digital albums by genre
- Track new releases in niche subgenres weekly
- Build genre-tagged training data for recommendation engines

</td>
<td width="50%" valign="top">

#### 📊 Data Science & ML

- Build multi-label genre classification datasets from user tags
- Price elasticity research across currencies and genres
- Trend detection by comparing weekly tag-feed snapshots
- NLP training on album titles and tag vocabulary

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🏢 Music Tech Products

- Enrich playlist tools with pricing and tag metadata
- Power genre-browsing UIs with live Bandcamp feed data
- Feed music discovery widgets with cover art and album links
- Sync indie catalog databases without a Bandcamp API contract

</td>
<td width="50%" valign="top">

#### 📰 Journalism & Market Analysis

- Price benchmarking reports for indie music markets
- Quarterly new-release volume analysis by genre
- Artist-country distribution from band location tags
- Identify label concentration by tag dominance

</td>
</tr>
</table>

***

### 🔌 Automating Bandcamp Music Scraper

Connect this Actor to your workflow with [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Trigger a weekly genre snapshot and push to Google Sheets
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Send new-release alerts to Slack when the dataset updates
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run-complete notifications with item counts
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Stream music catalog data into your data warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from CI/CD pipelines to refresh music datasets
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export CSVs directly to Sheets for team sharing

Use webhooks to fire downstream actions the moment a run finishes - push fresh album data to your product backend or alert your curation team.

***

### 🌟 Beyond business use cases

<table>
<tr>
<td width="50%">

#### 🎓 Academic research

- Longitudinal studies on indie music pricing across genres
- Multi-label genre taxonomy research using user tag data
- Country-of-origin analysis from band location tags
- Reproducible music-catalog studies with versioned scrapes

</td>
<td width="50%">

#### 🎨 Personal and creative

- Personal music discovery dashboards by niche tag
- Portfolio demos for music-tech product designers
- Curated playlists built from top-rated genre exports
- Content research for music bloggers and critics

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Open datasets for music education organizations
- Support for independent artist advocacy research
- Investigative journalism on indie pricing and accessibility
- Community tools for local music scene discovery

</td>
<td width="50%">

#### 🧪 Experimentation

- Train music recommendation or similarity ML models
- Validate product hypotheses with live genre data
- Prototype agent pipelines that classify music by tag cloud
- Test pricing-analytics dashboards with real independent data

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20Bandcamp%20Music%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20Bandcamp%20Music%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20Bandcamp%20Music%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20Bandcamp%20Music%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Enter a genre tag (e.g. "ambient") and a sort order ("top" or "new"). The Actor queries Bandcamp's internal discover API, collects album records page by page, and fetches the full tag list from each album page. The result is a structured dataset ready to download.

#### 🏷️ What tags can I use?

Any tag that Bandcamp recognizes as a browsable genre or user tag: ambient, electronic, jazz, punk, metal, lo-fi, classical, hip-hop, folk, reggae, k-pop, shoegaze, noise, and hundreds of niche subgenre tags. Use exactly the slug that appears in the Bandcamp discover URL (e.g. `lo-fi` not `lofi`).

#### 💰 Does it include free albums?

Yes. Albums with `price: 0` are name-your-price or free downloads. Albums with a positive price require payment. The `price` and `currency` fields let you filter after export.

#### 📅 How fresh is the data?

Every run fetches live data from Bandcamp. There is no cache. New releases appear within minutes of being published if you use `sort: "new"`.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (daily, weekly) to monitor new releases or track trending albums in a genre over time.

#### 🌍 Does it cover international releases?

Yes. Bandcamp is global. Results include albums from artists in Europe, South America, Asia, Africa, and beyond. The `currency` field reflects the artist's home currency.

#### 💳 Do I need a paid Apify plan?

No. The free Apify plan gives you 10 albums per run for testing. A paid plan lifts the cap and lets you collect up to 1,000,000 albums per run.

#### 🔁 What if a run fails?

Inspect the log in the Runs tab. Most failures are network timeouts on individual album pages (for tag fetching) - the Actor handles these gracefully and continues. Re-run with the same input to retry.

#### 🎤 Does it include individual tracks or only albums?

Currently the Actor collects album-level records. Each record includes the total `numTracks` count but not individual track listings.

#### 🆔 Can I scrape a specific artist or album URL?

This Actor browses by genre tag. For direct artist or album URL scraping, a separate focused scraper is recommended. Contact us via the form below to request one.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

Bandcamp Music Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step music data workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe music data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh music catalog data into your product backend or alert your curation team in Slack.

***

### 🔗 Recommended Actors

| Actor | Description |
|---|---|
| [**🎵 Discogs Scraper**](https://apify.com/parseforge/discogs-scraper) | Vinyl and music release data from Discogs marketplace |
| [**🎬 Letterboxd Scraper**](https://apify.com/parseforge/letterboxd-scraper) | Film ratings, reviews, and watchlists from Letterboxd |
| [**🎮 itch.io Scraper**](https://apify.com/parseforge/itch-io-scraper) | Indie game listings and metadata from itch.io |
| [**📦 Product Hunt Scraper**](https://apify.com/parseforge/producthunt-scraper) | Launch data and upvotes from Product Hunt |
| [**🌐 IndieGoGo Scraper**](https://apify.com/parseforge/indiegogo-scraper) | Crowdfunding campaign data from IndieGoGo |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more independent-platform scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Bandcamp or its parent company. All trademarks mentioned are the property of their respective owners. Only publicly available data is collected.

# Actor input Schema

## `tag` (type: `string`):

Music genre or tag to browse on Bandcamp (e.g. "ambient", "jazz", "punk", "electronic").

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000.

## `sort` (type: `string`):

Sort order for results.

## Actor input object example

```json
{
  "tag": "ambient",
  "maxItems": 10,
  "sort": "top"
}
```

# 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 = {
    "tag": "ambient",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/bandcamp-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 = {
    "tag": "ambient",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/bandcamp-scraper").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 '{
  "tag": "ambient",
  "maxItems": 10
}' |
apify call parseforge/bandcamp-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bandcamp Scraper - Music Artists and Albums",
        "description": "Scrape Bandcamp artist profiles, album listings, track details, prices, and fan data. Extract music metadata including genres, tags, and release dates.",
        "version": "0.1",
        "x-build-id": "G4ACuYrbWbrXZ4QKG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~bandcamp-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-bandcamp-scraper",
                "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/parseforge~bandcamp-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-bandcamp-scraper",
                "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/parseforge~bandcamp-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-bandcamp-scraper",
                "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",
                "properties": {
                    "tag": {
                        "title": "Tag / Genre",
                        "type": "string",
                        "description": "Music genre or tag to browse on Bandcamp (e.g. \"ambient\", \"jazz\", \"punk\", \"electronic\")."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000."
                    },
                    "sort": {
                        "title": "Sort By",
                        "enum": [
                            "top",
                            "new"
                        ],
                        "type": "string",
                        "description": "Sort order for results.",
                        "default": "top"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
