Bandcamp API: List releases by genre
Lists Bandcamp releases in a genre, sorted by best-selling or new arrivals and filtered by format. Physical-format prices come from the matching package when available.
Unofficial. Not affiliated with or endorsed by Bandcamp.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Sort optional
sort Listing order, for example new_arrivals.
best_selling (default)
One of
best_selling,new_arrivals.- Genre, required
genre Genre to browse, such as electronic, hip-hop, jazz, or metal.
electronic
- Format optional
format Release format, for example vinyl.
all (default)
One of
all,digital,vinyl,cd,cassette.- Max Results optional
max_results Maximum albums to return, for example 30.
30 (default)
Whole number from 1 to 100.
Input as JSON
{ "genre": "electronic"}Output
{ "releases": [ { "genre": "electronic", "price": 4, "artist": "Amynedd", "currency": "GBP", "album_url": "https://amynedd.bandcamp.com/album/16-bit-adventure?from=discover_page" , "album_title": "16-Bit Adventure", "release_date": "2020-10-21", "cover_image_url": "https://f4.bcbits.com/img/a1621207929_16.jpg" }, { "genre": "electronic", "price": 1, "artist": "State Azure", "currency": "GBP", "album_url": "https://stateazure.bandcamp.com/album/ancient-light-longform-edit?from=discover_page" , "album_title": "Ancient Light (Longform Edit)", "release_date": "2026-10-21", "cover_image_url": "https://f4.bcbits.com/img/a3001556591_16.jpg" }, { "genre": "electronic", "price": 3.95, "artist": "the shallow margins (the humble bee & fields we found)", "currency": "GBP", "album_url": "https://quietdetails.bandcamp.com/album/tule?from=discover_page" , "album_title": "tule", "release_date": "2026-10-21", "cover_image_url": "https://f4.bcbits.com/img/a3804072161_16.jpg" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"bandcamp.com/list_releases_by_genre","input":{"genre":"electronic"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "bandcamp.com/list_releases_by_genre" , "input": { "genre": "electronic" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "bandcamp.com/list_releases_by_genre" , "input": { "genre": "electronic" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run bandcamp.com/list_releases_by_genre# with {"genre":"electronic"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "genre" ], "properties": { "sort": { "enum": [ "best_selling", "new_arrivals" ], "type": "string", "default": "best_selling", "description": "Listing order, for example new_arrivals." }, "genre": { "type": "string", "minLength": 1, "description": "Genre to browse, such as electronic, hip-hop, jazz, or metal." }, "format": { "enum": [ "all", "digital", "vinyl", "cd", "cassette" ], "type": "string", "default": "all", "description": "Release format, for example vinyl." }, "max_results": { "type": "integer", "default": 30, "maximum": 100, "minimum": 1, "description": "Maximum albums to return, for example 30." } }}Output schema
{ "type": "object", "required": [ "releases" ], "properties": { "releases": { "type": "array", "items": { "type": "object", "required": [ "album_title", "artist", "genre", "release_date", "price", "currency", "cover_image_url", "album_url" ], "properties": { "genre": { "type": "string" }, "price": { "type": [ "number", "null" ] }, "artist": { "type": "string" }, "currency": { "type": [ "string", "null" ] }, "album_url": { "type": "string" }, "album_title": { "type": "string" }, "release_date": { "type": [ "string", "null" ] }, "cover_image_url": { "type": [ "string", "null" ] } } }, "description": "Releases in Bandcamp listing order." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
bandcamp.com/list_releases_by_genre- Returns
- album title, artist, genre, release date, price, currency, cover image, album URL
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method bandcamp.com/list_releases_by_genre with the inputs above.
Ask your agent
- Show me the top-selling vinyl albums in jazz on Bandcamp right now
- What are the newest cassette releases in ambient music?
- List 15 best-selling digital electronic albums sorted by popularity
- Find recent hip-hop CD releases, newest first, up to 50 results
- I want metal albums on bandcamp.com with prices in cassette format, newest arrivals first
See more
All Bandcamp methodsGets a Bandcamp album by title and optional artist, or by album link, with prices, physical formats, tracks and album details. Supporter count covers only profiles shown on the page; copies left is given only when displayed.
bandcamp.com/get_albumLists the newest Pitchfork album reviews. You can filter them by genre or limit them to Best New Music.
pitchfork.com/list_latest_reviewsLists an artist's songs on Genius by popularity or newest release date, with featured artists, release dates, page views and song art. The artist can be given by name or by Genius artist link; dates or views may be unavailable.
genius.com/list_artist_songsGets Shazam's current ranked top songs for the world, a country, or a city, optionally by genre. City charts have up to 50 songs; genres are available only in some places.
shazam.com/list_top_chartsLists a SoundCloud artist's public tracks in latest or SoundCloud popular order, with profile and track details. SoundCloud's popular list may contain fewer than 100 tracks (currently at most 30).
soundcloud.com/list_artist_tracksLists the current bestselling audiobooks of an Audible store (United States, United Kingdom, Canada, Australia, India, Germany, France, Italy, Spain, Brazil or Japan), overall or in one chart category, in chart order with listed prices.
audible.com/list_best_sellersFinds a Discogs release by title, artist or release link and returns its edition details, tracks, community counts, current price and sold price statistics.
discogs.com/get_releaseLists Steam's top-selling, discounted, or new and trending games in store order, with prices for a chosen country, review summaries and release dates.
store.steampowered.com/list_top_sellers