bandcamp-scraper

    1.4.1 • Public • Published

    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.

    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.

    Install

    npm i bandcamp-scraper

    DownloadsWeekly Downloads

    160

    Version

    1.4.1

    License

    MIT

    Unpacked Size

    97.9 kB

    Total Files

    24

    Last publish

    Collaborators

    • mastert