Skip to content

masterT/bandcamp-scraper

Repository files navigation

bandcamp-scraper

npm version Test Test daily JavaScript Style Guide

Bandcamp Logo

A scraper for https://bandcamp.com

The scraper allows you to:

  • search artist, album, track, fan, label
  • get album urls from an artist url
  • get album info from an album url
  • get album products from an album url
  • get artist info from an artist url

Why ?

Because Bandcamp has shut down their public API and don't plan to reopen it.

https://bandcamp.com/developer

Installation

npm i --save bandcamp-scraper

Usage

search(params, callback)

Search any resources that match the given params.query for the current params.page.

  • params Object - query String - page Integer (default 1)
  • callback Function(error, searchResults)

Search Results

An array of resources that have different properties depending on their type property: artist, album, track, fan, or label.

Every resource matches the search-result JSON schema.

Example

const bandcamp = require('bandcamp-scraper') const params = { query: 'Coeur de pirate', page: 1 } bandcamp.search(params, function (error, searchResults) { if (error) { console.log(error) } else { console.log(searchResults) } })

View example with output.

getAlbumsWithTag(params, callback)

Search for albums with the tag params.tag for the current params.page.

  • params Object - tag String - page Integer (default 1)
  • callback Function(error, tagResults)

Tag Results

An array of album information. Matches the tag-result JSON schema.

Example

const bandcamp = require('bandcamp-scraper') const params = { tag: 'nuwrld', page: 1 } bandcamp.getAlbumsWithTag(params, function (error, tagResults) { if (error) { console.log(error) } else { console.log(tagResults) } })

View example with output.

getAlbumUrls(artistUrl, callback)

Retrieve the album URLs from an artist URL. Please note: for Bandcamp labels you may want to use the getArtistsUrls function to retrieve the list of signed artists first.

  • artistUrl String
  • callback Function(error, albumUrls)

Example

const bandcamp = require('bandcamp-scraper') const artistUrl = 'http://musique.coeurdepirate.com/' bandcamp.getAlbumUrls(artistUrl, function (error, albumUrls) { if (error) { console.log(error) } else { console.log(albumUrls) } })

View example with output.

getAlbumProducts(albumUrl, callback)

Retrieves all the album's products from its URL.

  • albumUrl String
  • callback Function(error, albumProducts)

Album Products

An array of album products that matches the album-product JSON schema.

Example

const bandcamp = require('bandcamp-scraper') const albumUrl = 'http://musique.coeurdepirate.com/album/blonde' bandcamp.getAlbumProducts(albumUrl, function (error, albumProducts) { if (error) { console.log(error) } else { console.log(albumProducts) } })

View example with output.

getAlbumInfo(albumUrl, callback)

Retrieves the album's info from its URL.

  • albumUrl String
  • callback Function(error, albumInfo)

Album Info

An Object that represents the album's info. It matches the album-info JSON schema.

Example

const bandcamp = require('bandcamp-scraper') const albumUrl = 'http://musique.coeurdepirate.com/album/blonde' bandcamp.getAlbumInfo(albumUrl, function (error, albumInfo) { if (error) { console.log(error) } else { console.log(albumInfo) } })

View example with output.

getArtistUrls(labelUrl, callback)

Retrieves an array of artist URLs from a label's URL for further scraping.

  • labelUrl String
  • callback Function(error, albumInfo)

Example

const bandcamp = require('bandcamp-scraper') const labelUrl = 'https://randsrecords.bandcamp.com' bandcamp.getArtistUrls(labelUrl, function (error, artistsUrls) { if (error) { console.log(error) } else { console.log(artistsUrls) } })

View example with output.

getArtistInfo(artistUrl, callback)

Retrieves the artist's info from its URL.

  • artistUrl String
  • callback Function(error, artistInfo)

Artist Info

An Object that represents the artist's info. It matches the artist-info JSON schema.

Example

const bandcamp = require('bandcamp-scraper') const artistUrl = 'http://musique.coeurdepirate.com' bandcamp.getArtistInfo(artistUrl, function (error, artistInfo) { if (error) { console.log(error) } else { console.log(artistInfo) } })

View example with output.

getTrackInfo(trackUrl, callback)

Retrieves the track info from its URL.

  • trackUrl String
  • callback Function(error, trackInfo)

Track Info

An Object that represents the track's info. It matches the track-info JSON schema.

Example

const bandcamp = require('bandcamp-scraper') const trackUrl = 'https://dafnez.bandcamp.com/track/serenade' bandcamp.getTrackInfo(trackUrl, function (error, trackInfo) { if (error) { console.log(error) } else { console.log(trackInfo) } })

Test

Feature tests are run daily, thanks to GitHub Action schedule actions. This way we know if the scraper is ever broken.

Run the test:

npm test

Contributing

Contribution is welcome! Open an issue first.

License

MIT.

Contributors