{
  "openapi": "3.0.1",
  "info": {
    "title": "Bandcamp Music Scraper",
    "description": "[💰 from $2 / 1K] Extract Bandcamp artists, labels, albums, tracks, and fans. Scrape full discographies, track listings with audio previews, prices, tags, and supporter lists from URLs, keyword search, or genre and location discovery.",
    "version": "1.0",
    "x-build-id": "TgZNd2aF3o9sMukeX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~bandcamp-music-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-bandcamp-music-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/solidcode~bandcamp-music-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-bandcamp-music-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/solidcode~bandcamp-music-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-bandcamp-music-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": {
          "startUrls": {
            "title": "Bandcamp URLs",
            "type": "array",
            "description": "Paste any Bandcamp links. The scraper auto-detects what each one is: an artist or label page (e.g. artistname.bandcamp.com), an album page (/album/...), or a single track (/track/...). For an artist or label page, every release on their discography is collected. (To collect fans, use the Include Supporters option below.)",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Words to look up on Bandcamp, such as an artist name, album title, or genre (e.g. 'lo-fi hip hop' or 'Aphex Twin'). Each keyword returns matching artists, albums, and tracks. No need to build URLs yourself.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search For",
            "enum": [
              "all",
              "artists_labels",
              "albums",
              "tracks",
              "fans"
            ],
            "type": "string",
            "description": "Which kind of result your keywords should return. Only applies to Search Keywords above.",
            "default": "all"
          },
          "discoverGenre": {
            "title": "Discover by Genre",
            "enum": [
              "none",
              "electronic",
              "rock",
              "metal",
              "alternative",
              "hip-hop-rap",
              "experimental",
              "punk",
              "folk",
              "pop",
              "ambient",
              "soundtrack",
              "world",
              "jazz",
              "acoustic",
              "funk",
              "r-b-soul",
              "devotional",
              "classical",
              "reggae",
              "podcasts",
              "country",
              "spoken-word",
              "comedy",
              "blues",
              "kids",
              "audiobooks",
              "latin"
            ],
            "type": "string",
            "description": "Browse trending and recommended releases in a music genre, the way Bandcamp's Discover page works. Leave as 'None' to skip genre discovery.",
            "default": "none"
          },
          "discoverLocation": {
            "title": "Discover by Location",
            "type": "string",
            "description": "Narrow genre discovery to releases tagged from a place, such as 'berlin', 'tokyo', or 'los angeles'. Leave empty for worldwide results. Only applies when a genre is selected above."
          },
          "sortBy": {
            "title": "Sort Discovery By",
            "enum": [
              "top",
              "new",
              "rand"
            ],
            "type": "string",
            "description": "How to order genre discovery results.",
            "default": "top"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of results to return across all URLs, searches, and discovery. Set to 0 for unlimited. Tip: start with 10-50 to test, then increase.",
            "default": 100
          },
          "includeTracks": {
            "title": "Include Track Listings",
            "type": "boolean",
            "description": "For each release, also return its full track list with titles, durations, track numbers, and 30-second audio preview links. Turn off for a lighter dataset with release-level data only.",
            "default": true
          },
          "includeFans": {
            "title": "Include Supporters",
            "type": "boolean",
            "description": "For each release, also return the fans who bought or wishlisted it (their username and profile link). Popular releases can have thousands of supporters, so to keep runs predictable this is capped at 500 supporters per release. Leave off unless you need supporter data.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}