npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-songkick

v0.2.1

Published

A node.js wrapper around the songkick API.

Readme

node-songkick

Build Status

A node.js wrapper around songkick's API.

Installation

You can use npm to install this module:

npm install node-songkick

If you prefer to use the source form github, clone the repo:

git clone https://github.com/carvil/node-songkick.git

Usage

After installing/cloning the module, you can open a node console:

node

and require the module:

var Songkick = require("node-songkick");

If you cloned the repo, use this instead:

var Songkick = require("<PATH-TO-node-songkick>");

And create an instance of Songkick:

var sk = new Songkick("<YOUR API KEY>");

You can request an API key at songkick's website.

After creating an instance, it is possible to query information about artists. More to come in the future (venue, location, events)

Artist

All

Assuming there is a sk object, it is possible to search for all artists:

sk.artist.all({ page: 1 }, callback)

The params are:

  1. A hash of options: page and the api key;
  2. A callback function, which will handle the results.

An example:

> sk.artist.all({page: 1}, function(r) {console.log(r);})
> { resultsPage:
    { results: { artist: [Object] },
      page: 1,
      totalEntries: 266226,
      perPage: 30 } }

The results object will contain the first set of results. More examples in specs/fixtures.

Search

Assuming there is a sk object, it is possible to search for artists:

sk.artist.search("joe bonamassa", { page: 1, per_page: 25 }, callback)

The params are:

  1. The query string;
  2. A hash of options: per_page and page, besides the api key and query string already present;
  3. A callback function, which will handle the results.

An example:

> sk.artist.search("muse",{},function(r) { console.log(r); } )
> { resultsPage:
   { results: { artist: [Object] },
     totalEntries: 0,
     perPage: 50,
     page: 1,
     status: 'ok' } }

The results object will contain a number of results. More examples in specs/fixtures.

Calendar

Assuming there is a sk object, it is possible to search for an artist's calendar:

sk.artist.calendar("artist_id", 324967,{ per_page: 10, page: 1 }, callback )

The params are:

  1. The type of the id used: artist_id or music_brainz_id;
  2. The actual id;
  3. A hash of options: per_page and page, besides the api key and query string already present;
  4. A callback function, which will handle the results.

An example:

> sk.artist.calendar("artist_id", 324967, { per_page: 10 }, function(r) { console.log(r);} )
> { resultsPage:
   { results: { event: [Object] },
     totalEntries: 5,
     perPage: 10,
     page: 1,
     status: 'ok' } }

The results object will contain a number of results. More examples in specs/fixtures.

Gigography

Assuming there is a sk object, it is possible to search for an artist's gigography:

sk.artist.gigography("artist_id", 324967, { per_page: 5, page: 2 }, callback )

The params are:

  1. The type of the id used: artist_id or music_brainz_id;
  2. The actual id;
  3. A hash of options: per_page and page, besides the api key and query string already present;
  4. A callback function, which will handle the results.

An example:

> sk.artist.gigography("artist_id", 324967,{ per_page: 10, page: 2 }, function(r) { console.log(r);} )
> { resultsPage:
   { results: { event: [Object] },
     totalEntries: 961,
     perPage: 10,
     page: 2,
     status: 'ok' } }

The results object will contain a number of results. More examples in specs/fixtures.

Testing

In order to run the tests, clone the repo:

git clone https://github.com/carvil/node-songkick.git
cd node-songkick

Install dependencies:

npm install

And the run:

npm test

or

jasmine-node --coffee --verbose ./spec/

TODO

  • Venues
  • Events
  • Metro areas
  • Users

Submitting a Pull Request

  1. Fork the repository.
  2. Create a topic branch.
  3. Add specs for your unimplemented feature or bug fix.
  4. Run jasmine-node --coffee --verbose ./spec/. If your specs pass, return to step 3.
  5. Implement your feature or bug fix.
  6. Run jasmine-node --coffee --verbose ./spec/. If your specs fail, return to step 5.
  7. Add documentation for your feature or bug fix.
  8. Add, commit, and push your changes.
  9. Submit a pull request.

Supported node versions

I only tested this module on node 0.8.0, therefore I don't know if it will work on previous/more recent versions. Please let me know if you tried it and if it worked/didn't work.

Disclaimer

This was the first time I wrote a node module. If you find stuff that could be improved or done differently/in a better way, I would love to hear from you. Feel free to DM me on twitter or send me a pull request!

Copyright

Copyright (c) 2012 Carlos Vilhena. See LICENSE for details.