A full-fledged Songkick API wrapper/enhancer for Node.js.
The Songkick API limits requests to a single page with 50 results. This library adds the ability to fetch all results in a single call as well increase the page size above 50.
You will first need to request a Songkick API key before using this library. Once obtained, simply require this library and instantiate.
const Songkick = require('songkick-api-node');
const songkickApi = new Songkick('YourApiKey');
All requests to the library will be returned a promise and when resolved the response will be JSON. If you would like XML responses, simply construct the library as follows:
const songkickApi = new Songkick('YourApiKey', { returnXML: true });
Returns events an artist has performed in in the past.
artistId
- The ID of the artist.
order
- The order you want the events returned in. Either 'asc' or 'desc'. Defaults is 'asc'.page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getArtistUpcomingEvents(253846);
songkickApi.getArtistUpcomingEvents(253846, { order: 'desc' });
songkickApi.getArtistUpcomingEvents(253846, { order: 'desc', page: 4, per_page: 25 });
Returns events an artist has performed in in the past.
artistId
- The ID of the artist.
order
- The order you want the events returned in. Either 'asc' or 'desc'), defaults is 'asc'.page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getArtistPastEvents(253846);
songkickApi.getArtistPastEvents(253846, { order: 'desc' });
songkickApi.getArtistPastEvents(253846, { order: 'desc', page: 4, per_page: 25 });
Returns a list of artists similar to a given artist.
artistId
- The ID of the artist.
songkickApi.getArtistSimilar(253846);
Returns a list of artists based on search string.
query
- The searched string.
page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.searchArtists({ query: 'Radiohead' });
songkickApi.searchArtists({ query: 'Radiohead', page: 6 });
Returns a list of events based on search params.
artist_name
- The name of an artist to search for.location
- The location of the event.
Note: Requires either artist_name
or location
but not both.
min_date
- The earliest date of events to return (YYYY-MM-DD).max_date
- The latest date of events to return (YYYY-MM-DD).page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
Note: If using either of the date options, both min_date
and max_date
are then required.
songkickApi.searchEvents({ artist_name: 'Radiohead' });
songkickApi.searchEvents({ location: 'geo:44.9325881,-93.26754419999999' });
songkickApi.searchEvents({ location: 'sk:35130' });
Returns detailed event information, including venue information.
eventId
- The ID of the event.
songkickApi.getEventDetails(11129128);
Returns the setlist for a specific event.
eventId
- The ID of the event.
songkickApi.getEventSetlist(11129128);
Returns a list of locations based on search params.
query
- The name of an location to search for.location
- The lat/lng, ip, or clientip of the location.
Note: Requires either query
or location
but not both.
page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.searchLocations({ query: 'New York City' });
songkickApi.searchLocations({ query: 'New York City', page: 4, per_page: 25 });
songkickApi.searchLocations({ location: 'geo:44.9325881,-93.26754419999999' });
songkickApi.searchLocations({ location: 'ip:127.0.0.1' });
songkickApi.searchLocations({ location: 'clientip:127.0.0.1' });
Returns upcoming events for a metro location.
metroAreaId
- The ID of the metro area to get upcoming events for.
page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getLocationUpcomingEvents(35130);
songkickApi.getLocationUpcomingEvents(35130, { page: 5, per_page: 25 });
Returns tracking information for a single artist a user has tracked.
username
- The username of the user.artistId
- The ID of the artist.
songkickApi.getUserArtistTracking('user_123', 253846);
Returns artists the user is tracking.
username
- The username of the user.
created_after
- Return artists tracked after given date (ISO8601 formatted).page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserTrackedArtists('user_123');
songkickApi.getUserTrackedArtists('user_123', { created_after: '2012-02-29T13:37:00Z' });
songkickApi.getUserTrackedArtists('user_123', { created_after: '2012-02-29T13:37:00Z', page: 3, per_page: 25 });
Returns a list of artists the user used to track but is no longer.
username
- The username of the user.
created_after
- Return artists stopped tracking after given date (ISO8601 formatted).page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserMutedArtists('user_123');
songkickApi.getUserMutedArtists('user_123', { created_after: '2012-02-29T13:37:00Z' });
songkickApi.getUserMutedArtists('user_123', { created_after: '2012-02-29T13:37:00Z', page: 3, per_page: 25 });
Returns a list of metro areas a user is tracking.
username
- The username of the user.
created_after
- Return metro areas tracked after given date (ISO8601 formatted).page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserTrackedMetroAreas('user_123');
songkickApi.getUserTrackedMetroAreas('user_123', { created_after: '2012-02-29T13:37:00Z' });
songkickApi.getUserTrackedMetroAreas('user_123', { created_after: '2012-02-29T13:37:00Z', page: 3, per_page: 25 });
Returns a tracking object for a metro area that the user is tracking.
username
- The username of the user.metroAreaId
- The ID of the metro area.
created_after
- Return artists stopped tracking after given date (ISO8601 formatted).page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserMetroAreaTracking('user_123', 35130);
Returns a tracking object for an event the user has tracked.
username
- The username of the user.eventId
- The ID of the metro area.
songkickApi.getUserEventTracking('user_123', 11129128);
Returns a list of calendar entries with events for a user’s tracked artists in their tracked metro areas.
username
- The username of the user.
page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserCalendar('user_123');
songkickApi.getUserCalendar('user_123', { page: 3, per_page: 25 });
Returns a list of events the user is planning to attend.
username
- The username of the user.
attendance
- The status of a user's event attendance. Options include 'all', 'im_going', 'i_might_go'. Defaults to 'im_going'.created_after
- Return artists stopped tracking after given date (ISO8601 formatted).page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserUpcomingEvents('user_123');
songkickApi.getUserUpcomingEvents('user_123', { attendance: 'all', page: 3, per_page: 25 });
songkickApi.getUserUpcomingEvents('user_123', { attendance: 'i_might_go', created_after: '2012-02-29T13:37:00Z' });
Returns a list of events the user has attended in the past.
username
- The username of the user.
order
- The order you want the events returned in. Either 'asc' or 'desc'. Defaults is 'asc'.page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getUserPastEvents('user_123');
songkickApi.getUserPastEvents('user_123', { order: 'desc' });
songkickApi.getUserPastEvents('user_123', { order: 'desc', page: 4, per_page: 25 });
Returns details about a given venue.
venueId
- The ID of the venue.
songkickApi.getVenue(17522);
Returns upcoming events for a given venue.
venueId
- The ID of the venue.
page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.getVenueUpcomingEvents(17522);
songkickApi.getVenueUpcomingEvents(17522, { page: 5, per_page: 10 });
Returns a list of venues based on search params.
query
- The searched venue string.
page
- The offset for paginated results (first page = 1).per_page
- The number of results for paginated results (max 50).
songkickApi.searchVenues({ query: 'First Avenue' });
songkickApi.searchVenues({ query: '7th Street Entry', page: 5, per_page: 25 });