Skip to content
🎶 API client for PHP 7. Comes with a Laravel service provider.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
phpunit.xml.dist API client for PHP 7

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

API keys

You can create a API account at


Via Composer

$ composer require barryvanveen/lastfm

Laravel installation

Add a LASTFM_API_KEY variable to your .env configuration. You could also publish the default configuration and alter it yourself:

php  artisan vendor:publish --provider="Barryvanveen\Lastfm\LastfmServiceProvider"

Update config/app.php by adding the LastfmServiceProvider:

'providers' => [

If you are using Laravel 5.5 the service provider will be used automagically by Laravel's package discovery.

Tested against Laravel 5.* but probably works in most versions because it is so simple. Please create an issue if it doesn't work for you.


Basic example

use Barryvanveen\Lastfm\Lastfm;
use GuzzleHttp\Client;
$lastfm = new Lastfm(new Client(), 'YourApiKey');
$albums = $lastfm->userTopAlbums('AnyUsername')->get();

Laravel example

use Barryvanveen\Lastfm\Lastfm;
public function index(Lastfm $lastfm)
    $albums = $lastfm->userTopAlbums('AnyUsername')->get();
    return view('home', compact('albums'));

All available methods

// Get top albums for user
$albums = $lastfm->userTopAlbums('AnyUsername')->get();
// Get top artists for user
$artists = $lastfm->userTopArtists('AnyUsername')->get();
// Get recent tracks for user
$tracks = $lastfm->userRecentTracks('AnyUsername')->get();
// Get user info
$info = $lastfm->userInfo('AnyUsername')->get();
// Get track that user is now listening to, or FALSE
$trackOrFalse = $lastfm->nowListening('AnyUsername'); 
// Get the weekly top albums given a starting day 
$albums = $lastfm->userWeeklyTopAlbums('AnyUsername', new \DateTime('2017-01-01'));                      
// Get the weekly top artists given a starting day 
$artists = $lastfm->userWeeklyTopArtists('AnyUsername', new \DateTime('2017-01-01'));
// Get the weekly top tracks given a starting day 
$tracks = $lastfm->userWeeklyTopTracks('AnyUsername', new \DateTime('2017-01-01'));

Filtering results

// Define time period for results
// Limit number of results
// Retrieve paginated results

Valid time periods

// use these constants as an argument to ->period()
Barryvanveen\Lastfm\Constants::PERIOD_WEEK     = '7day';
Barryvanveen\Lastfm\Constants::PERIOD_MONTH    = '1month';
Barryvanveen\Lastfm\Constants::PERIOD_3_MONTHS = '3month';
Barryvanveen\Lastfm\Constants::PERIOD_6_MONTHS = '6month';
Barryvanveen\Lastfm\Constants::PERIOD_YEAR     = '12month';
Barryvanveen\Lastfm\Constants::PERIOD_OVERALL  = 'overall';

Official API docs

Read the official API documentation at

Change log

Please see CHANGELOG for more information what has changed recently.


Copy phpunit.xml.dist to phpunit.xml and fill in your own LASTFM_API_KEY. Then run the tests using:

$ composer test


Please see CONTRIBUTING and CONDUCT for details.


If you discover any security related issues, please email instead of using the issue tracker.



The MIT License (MIT). Please see License File for more information.

You can’t perform that action at this time.