{"id":30219127,"url":"https://github.com/mastert/bandcamp-scraper","last_synced_at":"2025-08-14T07:47:56.997Z","repository":{"id":41344661,"uuid":"41644457","full_name":"masterT/bandcamp-scraper","owner":"masterT","description":"A scraper for https://bandcamp.com","archived":false,"fork":false,"pushed_at":"2024-06-24T21:05:30.000Z","size":291,"stargazers_count":208,"open_issues_count":17,"forks_count":37,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-08-08T13:33:23.656Z","etag":null,"topics":["album","api","artist","bandcamp","hacktoberfest","product","scraper"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/masterT.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-08-30T21:59:03.000Z","updated_at":"2025-07-25T05:48:14.000Z","dependencies_parsed_at":"2023-01-18T03:45:37.803Z","dependency_job_id":"abf7dedd-f092-4108-bd3f-e7b3682946c2","html_url":"https://github.com/masterT/bandcamp-scraper","commit_stats":{"total_commits":94,"total_committers":11,"mean_commits":8.545454545454545,"dds":0.3191489361702128,"last_synced_commit":"030f711a6f8565c110789a6b071d73e2d0acc98e"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/masterT/bandcamp-scraper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masterT%2Fbandcamp-scraper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masterT%2Fbandcamp-scraper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masterT%2Fbandcamp-scraper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masterT%2Fbandcamp-scraper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/masterT","download_url":"https://codeload.github.com/masterT/bandcamp-scraper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masterT%2Fbandcamp-scraper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270385319,"owners_count":24574544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["album","api","artist","bandcamp","hacktoberfest","product","scraper"],"created_at":"2025-08-14T07:47:54.660Z","updated_at":"2025-08-14T07:47:56.949Z","avatar_url":"https://github.com/masterT.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bandcamp-scraper\n\n[![npm version](https://badge.fury.io/js/bandcamp-scraper.svg)](https://badge.fury.io/js/bandcamp-scraper)\n![Test](https://github.com/masterT/bandcamp-scraper/workflows/Test/badge.svg?event=push)\n![Test daily](https://github.com/masterT/bandcamp-scraper/workflows/Test/badge.svg?event=schedule)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)\n\n[![Bandcamp Logo](assets/bandcamp.png)](https://bandcamp.com)\n\n\u003e A scraper for https://bandcamp.com\n\nThe scraper allows you to:\n\n- search `artist`, `album`, `track`, `fan`, `label`\n- get album urls from an artist url\n- get album info from an album url\n- get album products from an album url\n- get artist info from an artist url\n\n#### Why ?\n\nBecause Bandcamp has shut down their public API and don't plan to reopen it.\n\n[https://bandcamp.com/developer](https://bandcamp.com/developer)\n\n## Installation\n\n```bash\nnpm i --save bandcamp-scraper\n```\n\n## Usage\n\n### `search(params, callback)`\n\nSearch any resources that match the given `params.query` for the current `params.page`.\n\n- params _Object_ - query _String_ - page _Integer_ (default `1`)\n- callback _Function(error, searchResults)_\n\n#### Search Results\n\nAn array of resources that have different properties depending on their _type_ property: **artist**, **album**, **track**, **fan**, or **label**.\n\nEvery resource matches the [search-result JSON schema](/schemas/search-result.json).\n\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst params = {\n  query: 'Coeur de pirate',\n  page: 1\n}\n\nbandcamp.search(params, function (error, searchResults) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(searchResults)\n  }\n})\n```\n\n[View example with output](examples/search.js).\n\n### `getAlbumsWithTag(params, callback)`\n\nSearch for albums with the tag `params.tag` for the current `params.page`.\n\n- params _Object_ - tag _String_ - page _Integer_ (default `1`)\n- callback _Function(error, tagResults)_\n\n#### Tag Results\n\nAn array of album information. Matches the [tag-result JSON schema](/schemas/tag-result.json).\n\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst params = {\n  tag: 'nuwrld',\n  page: 1\n}\n\nbandcamp.getAlbumsWithTag(params, function (error, tagResults) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(tagResults)\n  }\n})\n```\n\n[View example with output](examples/tag.js).\n\n### `getAlbumUrls(artistUrl, callback)`\n\nRetrieve the album URLs from an artist URL.\nPlease note: for Bandcamp labels you may want to use the `getArtistsUrls` function to retrieve the list of signed artists first.\n\n- artistUrl _String_\n- callback _Function(error, albumUrls)_\n\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst artistUrl = 'http://musique.coeurdepirate.com/'\nbandcamp.getAlbumUrls(artistUrl, function (error, albumUrls) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(albumUrls)\n  }\n})\n```\n\n[View example with output](examples/getAlbumUrls.js).\n\n### `getAlbumProducts(albumUrl, callback)`\n\nRetrieves all the album's products from its URL.\n\n- albumUrl _String_\n- callback _Function(error, albumProducts)_\n\n#### Album Products\n\nAn array of album products that matches the [album-product JSON schema](/schemas/album-product.json).\n\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst albumUrl = 'http://musique.coeurdepirate.com/album/blonde'\nbandcamp.getAlbumProducts(albumUrl, function (error, albumProducts) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(albumProducts)\n  }\n})\n```\n\n[View example with output](examples/getAlbumProducts.js).\n\n### `getAlbumInfo(albumUrl, callback)`\n\nRetrieves the album's info from its URL.\n\n- albumUrl _String_\n- callback _Function(error, albumInfo)_\n\n#### Album Info\n\nAn _Object_ that represents the album's info. It matches the [album-info JSON schema](/schemas/album-info.json).\n\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst albumUrl = 'http://musique.coeurdepirate.com/album/blonde'\nbandcamp.getAlbumInfo(albumUrl, function (error, albumInfo) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(albumInfo)\n  }\n})\n```\n\n[View example with output](examples/getAlbumInfo.js).\n\n### `getArtistUrls(labelUrl, callback)`\n\nRetrieves an array of artist URLs from a label's URL for further scraping.\n\n- labelUrl _String_\n- callback _Function(error, albumInfo)_\n\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst labelUrl = 'https://randsrecords.bandcamp.com'\nbandcamp.getArtistUrls(labelUrl, function (error, artistsUrls) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(artistsUrls)\n  }\n})\n```\n\n[View example with output](examples/getArtistUrls.js).\n\n### `getArtistInfo(artistUrl, callback)`\n\nRetrieves the artist's info from its URL.\n\n- artistUrl _String_\n- callback _Function(error, artistInfo)_\n\n#### Artist Info\n\nAn _Object_ that represents the artist's info. It matches the [artist-info JSON schema](/schemas/artist-info.json).\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst artistUrl = 'http://musique.coeurdepirate.com'\nbandcamp.getArtistInfo(artistUrl, function (error, artistInfo) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(artistInfo)\n  }\n})\n```\n\n[View example with output](examples/getArtistInfo.js).\n\n### `getTrackInfo(trackUrl, callback)`\n\nRetrieves the track info from its URL.\n\n- trackUrl _String_\n- callback _Function(error, trackInfo)_\n\n#### Track Info\n\nAn _Object_ that represents the track's info. It matches the [track-info JSON schema](/schemas/track-info.json).\n#### Example\n\n```js\nconst bandcamp = require('bandcamp-scraper')\n\nconst trackUrl = 'https://dafnez.bandcamp.com/track/serenade'\nbandcamp.getTrackInfo(trackUrl, function (error, trackInfo) {\n  if (error) {\n    console.log(error)\n  } else {\n    console.log(trackInfo)\n  }\n})\n```\n\n## Test\n\nFeature tests are run _daily_, thanks to [GitHub Action](https://docs.github.com/en/free-pro-team@latest/actions) schedule actions. This way we know if the scraper is ever broken.\n\nRun the test:\n\n```bash\nnpm test\n```\n\n## Contributing\n\nContribution is welcome! Open an issue first.\n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastert%2Fbandcamp-scraper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmastert%2Fbandcamp-scraper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastert%2Fbandcamp-scraper/lists"}