# Bandcamp API
> Live data from Bandcamp, the independent-music marketplace and streaming platform, with no account and no key. Bandcamp is where independent artists and labels sell and stream music directly to fans; this reads Bandcamp's own public web/mobile JSON and returns clean results. Search across bands, albums, tracks and labels by name (each result with its kind, name, artist, page url, location and cover art); read an album or track in full — its artist, full tracklist with durations, price and currency (many releases are free or name-your-price), release date, tags and cover art; and read a band/artist profile with its complete discography. The artist-direct music-commerce layer for music discovery, price-comparison, fan tools and analytics. Distinct from streaming-catalogue and record-database APIs — this is Bandcamp's own marketplace. Live from Bandcamp; short cache only.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/bandcamp-api/..."
```

## Pricing
- **Free** (Free) — 9,800 calls/Mo, 3 req/s
- **Starter** ($7/Mo) — 182,000 calls/Mo, 10 req/s
- **Pro** ($25/Mo) — 950,000 calls/Mo, 25 req/s
- **Scale** ($72/Mo) — 5,900,000 calls/Mo, 60 req/s

## Endpoints

### Search

#### `GET /v1/search` — Search bands, albums, tracks, labels

**Parameters:**
- `q` (query, required, string) — Search query Example: `radiohead`
- `type` (query, optional, string) — Filter: band, album or track
- `limit` (query, optional, string) — Max results (1-50) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bandcamp-api/v1/search?q=radiohead&limit=25"
```

**Response:**
```json
{
    "data": {
        "note": "Search Bandcamp across bands, albums, tracks and labels — each result with its kind, name, artist, page url, location and cover art. Filter with type=band|album|track. The discovery entry point into Bandcamp's independent-music marketplace.",
        "count": 25,
        "query": "radiohead",
        "source": "Bandcamp",
        "results": [
            {
                "id": 3957198221,
                "art": "https://f4.bcbits.com/img/a40867508_10.jpg",
                "url": "https://radiohead.bandcamp.com",
                "kind": "band",
                "name": "Radiohead",
                "artist": null,
                "band_id": null,
                "is_label": false,
                "location": "Oxford, UK",
                "tag_names": [
                    "Alternative"
                ]
            },
            {
                "id": 3317386587,
                "art": "https://f4.bcbits.com/img/a3185643660_10.jpg",
                "url": "https://radiohead.bandcamp.com",
                "kind": "album",
                "name": "KID A MNESIA",
                "artist": "Radiohead",
                "band_id": 3957198221,
                "is_label": false,
                "location": null,
                "tag_names": []
            },
            {
                "id": 2162872411,
                "art": "https://f4.bcbits.com/img/a552435637_10.jpg",
                "url": "https://radiohead.bandcamp.com",
                "ki
…(truncated, see openapi.json for full schema)
```

### Album

#### `GET /v1/album` — One release in full (album or track)

**Parameters:**
- `q` (query, optional, string) — Resolve the top album/track match by name Example: `boards of canada`
- `band_id` (query, optional, string) — Band id (with tralbum_id)
- `tralbum_id` (query, optional, string) — Album/track id
- `type` (query, optional, string) — a (album) or t (track) Example: `a`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bandcamp-api/v1/album?q=boards+of+canada&type=a"
```

**Response:**
```json
{
    "data": {
        "id": 477965531,
        "art": "https://f4.bcbits.com/img/a3190407865_10.jpg",
        "url": "https://boardsofcanada.bandcamp.com/album/inferno",
        "note": "One Bandcamp release (album or track) in full: its artist, full tracklist with durations, price and currency (many are free or name-your-price), release date, tags and cover art. Pass band_id + tralbum_id (+ type=a|t), or q to resolve the top match.",
        "tags": [
            "Alternative",
            "Electronic"
        ],
        "type": "a",
        "price": null,
        "title": "Inferno",
        "artist": "Boards of Canada",
        "source": "Bandcamp",
        "tracks": [
            {
                "title": "Introit",
                "duration": 35.9999,
                "track_num": 1
            },
            {
                "title": "Prophecy At 1420 MHz",
                "duration": 304.499,
                "track_num": 2
            },
            {
                "title": "Hydrogen Helium Lithium Leviathan",
                "duration": 284.851,
                "track_num": 3
            },
            {
                "title": "Age Of Capricorn",
                "duration": 232.55,
                "track_num": 4
            },
            {
                "title": "Father And Son",
                "duration": 204.835,
                "track_num": 5
            },
            {
                "title": "Somewhere Right Now In The Future",
                "durati
…(truncated, see openapi.json for full schema)
```

### Band

#### `GET /v1/band` — A band/artist profile + discography

**Parameters:**
- `q` (query, optional, string) — Resolve the top band match by name Example: `radiohead`
- `band_id` (query, optional, string) — Band id (numeric)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bandcamp-api/v1/band?q=radiohead"
```

**Response:**
```json
{
    "data": {
        "id": 3957198221,
        "art": "https://f4.bcbits.com/img/a40867508_10.jpg",
        "bio": null,
        "url": "https://radiohead.bandcamp.com",
        "name": "Radiohead",
        "note": "A Bandcamp band/artist profile: its name, location, bio, page url and its full discography (every album and track released), each with title, release date and art. Pass band_id (from /v1/search), or q to resolve the top band match.",
        "source": "Bandcamp",
        "location": "Oxford, UK",
        "discography": [
            {
                "id": 365742988,
                "art": "https://f4.bcbits.com/img/a454733928_10.jpg",
                "type": "album",
                "title": "Hail to the Thief (Live Recordings 2003-2009)",
                "release_date": "13 Aug 2025 00:00:00 GMT"
            },
            {
                "id": 3317386587,
                "art": "https://f4.bcbits.com/img/a3185643660_10.jpg",
                "type": "album",
                "title": "KID A MNESIA",
                "release_date": "05 Nov 2021 00:00:00 GMT"
            },
            {
                "id": 3293551680,
                "art": "https://f4.bcbits.com/img/a1866183002_10.jpg",
                "type": "album",
                "title": "OK Computer OKNOTOK 1997 2017",
                "release_date": "23 Jun 2017 00:00:00 GMT"
            },
            {
                "id": 1880809236,
                "art": "https://f4.bcbits.com/img/a3154171150
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bandcamp-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "sample": {
            "top": "Radiohead"
        },
        "source": "Bandcamp public web/mobile API (bandcamp.com/api), keyless",
        "service": "bandcamp-api",
        "endpoints": {
            "GET /v1/band": "A band/artist profile + discography (band_id, or q for the top match).",
            "GET /v1/meta": "This document.",
            "GET /v1/album": "One release in full (band_id + tralbum_id + type, or q for the top match).",
            "GET /v1/search": "Search bands/albums/tracks/labels (q, type=band|album|track, limit)."
        },
        "description": "Live Bandcamp independent-music marketplace data with no key: search across bands, albums, tracks and labels; read an album or track in full (artist, tracklist, price, release date, tags, art); and read a band/artist profile with its discography. The artist-direct music-commerce layer for discovery, price tools and analytics. Live, short cache only.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-14T17:03:44.028Z",
        "request_id": "d6e40bc4-bbbd-4a20-b624-5cab94aeb7a4"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/bandcamp-api
OpenAPI spec: https://www.oanor.com/api/bandcamp-api/openapi.json
