bandcamp.com APIbandcamp.com ↗
Access Bandcamp music data: search artists, albums, tracks, retrieve album details, fan profiles, and the live sales feed via 6 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/d78f6b27-4092-4367-b2a6-af9fb8b6da40/get_sales_feed?limit=2' \ -H 'X-API-Key: $PARSE_API_KEY'
Scrape the live 'Selling right now' sales feed from Bandcamp. Follows each item link to retrieve full metadata including release date and tags.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max number of items to return. |
{
"type": "object",
"fields": {
"items": "array of sale event objects with artist_name, item_title, url, item_type, price_usd, country, country_code, timestamp, release_date, price, currency, tags, about"
},
"sample": {
"data": {
"items": [
{
"url": "https://dancewiththedead.bandcamp.com/album/malombra",
"tags": null,
"about": null,
"price": null,
"country": "France",
"currency": null,
"item_type": "a",
"price_usd": 9,
"timestamp": 1778145489.99,
"item_title": "Malombra",
"artist_name": "DANCE WITH THE DEAD",
"country_code": "fr",
"release_date": "27 Mar 2026 00:00:00 GMT"
}
]
},
"status": "success"
}
}About the bandcamp.com API
The Bandcamp API exposes 6 endpoints covering search, artist profiles, album metadata, fan profiles, music discovery, and a live sales feed. The get_album_details endpoint alone returns track listings, pricing packages, schema.org structured data, and fan comments in a single call. Whether you need to monitor what's selling right now or build a tag-filtered music catalog, the API surfaces the fields required to do it.
Search and Discovery
The search endpoint accepts a query string and an optional item_type filter — b for artists/labels, a for albums, t for tracks, or f for fans. Results include name, url, type, img, and contextual fields like location, band_name, genre, and tags where available. The discover endpoint lets you browse paginated album results filtered by comma-separated tags, a geoname_id for location, and a slice sort (best, new, or top). It returns a cursor for paging through results alongside album objects with band_name, band_location, release_date, track_count, duration, and a featured track reference.
Album and Artist Detail
get_album_details takes a full Bandcamp album URL and returns a multi-part response: a band object with id and name, an embed block, a tralbum object containing trackinfo, packages, and play_cap_data, ld_json schema.org entries covering track listings, offers, and comments, and a supporters array of fan objects with username, url, and comment. get_artist_profile accepts an artist URL and returns band_info (id, subdomain, currency, genre_id, navbar_items), a releases array with titles and URLs, location, and social_links with titles and URLs for external profiles.
Fan Profiles and Sales Feed
get_fan_profile resolves a Bandcamp fan URL to fan_data including fan_id, bio, photo, followers_count, and following_bands_count, plus a collection_items array (empty when the collection is private). The endpoint signals non-existent profiles via a stale_input field with kind input_not_found. get_sales_feed returns the live Bandcamp sales stream as an array of objects with artist_name, item_title, item_type, price_usd, country, country_code, and timestamp. An optional limit parameter caps the number of results returned. Each item follows the release link to populate release_date and tags fields.
- Track real-time purchase activity by genre or region using
get_sales_feedwithcountry_codeandtagsfields. - Build a tag-filtered new-release browser using
discoverwith comma-separatedtagsand thenewslice. - Aggregate full discographies and social links for artist research via
get_artist_profile. - Enrich a music database with tracklist, pricing packages, and schema.org offers from
get_album_details. - Search across artists, albums, and tracks in a single query using the
searchendpoint withitem_typefiltering. - Monitor fan engagement and collection size for a given listener via
get_fan_profilefollowers_countandcollection_items. - Identify trending music by location using
discoverwith ageoname_idand thetopslice.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Bandcamp have an official developer API?+
What does `get_sales_feed` return, and can I filter by genre or country?+
artist_name, item_title, item_type, price_usd, country, country_code, timestamp, release_date, and tags. The endpoint accepts a limit parameter to cap results but does not currently support server-side filtering by genre, tag, or country — that filtering needs to be applied on the client side after receiving the response.Are fan collection items always returned by `get_fan_profile`?+
collection_items array is present in the response but may be empty if the fan has set their collection to private or has not collected any items. The fan_data object (including followers_count, following_bands_count, and bio) is still returned when the profile is public. Non-existent profiles return a stale_input field with kind input_not_found.Does the API return audio stream URLs or embeddable players for tracks?+
get_album_details returns an embed block and tralbum object with track metadata, but direct audio stream URLs are not exposed as named response fields. You can fork the API on Parse and revise it to add an endpoint targeting embeddable player data.How does pagination work for the `discover` endpoint?+
discover endpoint returns a cursor string alongside each page of results. Pass that cursor as the cursor input parameter on the next call to retrieve the following page. Omit the cursor parameter entirely to start from the first page. The tags, slice, and geoname_id filters should remain consistent across pages when paginating through a single result set.