Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP API bindings for JavaScript
branch: master

This branch is 10 commits ahead of fxb:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


JavaScript API Readme


The JavaScript API allows you to call API methods and get the corresponding JSON responses. Basically it just acts as a wrapper that gives easy access to API methods. Responses can be cached using the localStorage API.


You don't need to worry about encoding when calling API methods. Everything should automatically be UTF-8 encoded and decoded by your browser if you set the Content-Type for your document to UTF-8:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />


It's easy to fetch a session for a user account. This allows you to perform actions on that account in a manner that is secure for users. All write services require authentication.


Scrobbling is possible once a user is authenticated by adding their session data to the api call.


You need to add the following scripts to your code in order to work with the JavaScript API:

<script src="lastfm.api.md5.js"></script>
<script src="lastfm.api.js"></script>

The API depends upon jQuery for sending AJAX requests:

<script src="//"></script>

For older browser support (IE 6, 7 & 8) use the 1.x version of jQuery.

If you want to use caching, you need to add another script:

<script src="lastfm.api.cache.js"></script>

Built in JSON support should be available in modern browsers, if you want to be sure it's supported, include the following:

<script src="json2.js"></script>

You can get that file at , and make sure you've removed the first line before using it.

Now you can use the JavaScript API like this:

/* Create a cache object */
var cache = new LastFMCache();

/* Create a LastFM object */
var lastfm = new LastFM({
  apiKey    : 'f21088bf9097b49ad4e7f487abab981e',
  apiSecret : '7ccaec2093e33cded282ec7bc81c6fca',
  cache     : cache

/* Load some artist info. */
lastfm.artist.getInfo({artist: 'The xx'}, {success: function(data){
  /* Use data. */
}, error: function(code, message){
  /* Show error message. */


Example application code / more useful wrapper functions can be found in lastfm.js this includes specific functions for easily calling updateNowPlaying and scrobble and setting up the session.

The code in here relies upon jquery.cookie plugin for persistant sessions.

The toggle scrobble button functionality uses jqueryUI on:

<input type="checkbox" id="toggleScrobble"><label for="toggleScrobble">Scrobble</label>

With the CSS:

.toggleScrobble {
    border: none;
    background: none;
.toggleScrobble .ui-button-text {
    width: 80px;
    height: 28px;
    padding: 0;
    background: url(;
.toggleScrobble .ui-button-text:hover,
.toggleScrobble .ui-button-text:active,
.toggleScrobble.ui-state-hover .ui-button-text,
.toggleScrobble.ui-state-active .ui-button-text {
    background: url(;


For further information, please visit the official API documentation:

Something went wrong with that request. Please try again.