Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bandcamp-scraper

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bandcamp-scraper

A scraper for https://bandcamp.com

  • 1.5.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
153
decreased by-37.55%
Maintainers
1
Weekly downloads
 
Created
Source

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.

Keywords

FAQs

Package last updated on 10 Sep 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc