Spotify App Stats
This library lets you fetch your Spotify app stats from Spotify's developer site programmatically.
How to
You need to use the Spotify credentials for the owner of the app. Make sure you don't leak the password committing it to a public repository, and use secret environment variables instead.
You find the application id navigating to https://developer.spotify.com/dashboard/applications, clicking on the application you are interested, and taking the last bit of the URL. For a URL like https://developer.spotify.com/dashboard/applications/04dca0de1c4e4aca88cc615ac23581be the application id is 04dca0de1c4e4aca88cc615ac23581be.
const SpotifyAppStats = require("@jmperez/spotify-app-stats");
(async () => {
const spotifyAppStats = new SpotifyAppStats();
await spotifyAppStats.init();
await spotifyAppStats.login("username", "password");
const stats = await spotifyAppStats.getStats("application_id");
spotifyAppStats.destroy();
console.log(stats);
})();
The stats will have a similar format to this:
{
"dau": [
{ "date": "2020-06-29", "number_of_daus": 314 },
{ "date": "2020-06-30", "number_of_daus": 282 },
{ "date": "2020-07-01", "number_of_daus": 276 },
{ "date": "2020-07-02", "number_of_daus": 289 },
{ "date": "2020-07-03", "number_of_daus": 325 },
{ "date": "2020-07-04", "number_of_daus": 269 },
{ "date": "2020-07-05", "number_of_daus": 257 },
{ "date": "2020-07-06", "number_of_daus": 291 },
{ "date": "2020-07-07", "number_of_daus": 297 },
{ "date": "2020-07-08", "number_of_daus": 263 },
{ "date": "2020-07-09", "number_of_daus": 290 },
{ "date": "2020-07-10", "number_of_daus": 320 },
{ "date": "2020-07-11", "number_of_daus": 261 },
{ "date": "2020-07-12", "number_of_daus": 238 },
{ "date": "2020-07-13", "number_of_daus": 300 },
{ "date": "2020-07-14", "number_of_daus": 317 },
{ "date": "2020-07-15", "number_of_daus": 382 },
{ "date": "2020-07-16", "number_of_daus": 333 },
{ "date": "2020-07-17", "number_of_daus": 304 },
{ "date": "2020-07-18", "number_of_daus": 291 },
{ "date": "2020-07-19", "number_of_daus": 311 },
{ "date": "2020-07-20", "number_of_daus": 351 },
{ "date": "2020-07-21", "number_of_daus": 339 },
{ "date": "2020-07-22", "number_of_daus": 290 },
{ "date": "2020-07-23", "number_of_daus": 306 },
{ "date": "2020-07-24", "number_of_daus": 334 },
{ "date": "2020-07-25", "number_of_daus": 273 },
{ "date": "2020-07-26", "number_of_daus": 274 },
{ "date": "2020-07-27", "number_of_daus": 333 },
{ "date": "2020-07-28", "number_of_daus": 337 }
],
"mau": [
{ "date": "2020-06-29", "number_of_maus": 5202 },
{ "date": "2020-06-30", "number_of_maus": 5196 },
{ "date": "2020-07-01", "number_of_maus": 5194 },
{ "date": "2020-07-02", "number_of_maus": 5190 },
{ "date": "2020-07-03", "number_of_maus": 5209 },
{ "date": "2020-07-04", "number_of_maus": 5200 },
{ "date": "2020-07-05", "number_of_maus": 5196 },
{ "date": "2020-07-06", "number_of_maus": 5210 },
{ "date": "2020-07-07", "number_of_maus": 5216 },
{ "date": "2020-07-08", "number_of_maus": 5193 },
{ "date": "2020-07-09", "number_of_maus": 5189 },
{ "date": "2020-07-10", "number_of_maus": 5194 },
{ "date": "2020-07-11", "number_of_maus": 5194 },
{ "date": "2020-07-12", "number_of_maus": 5151 },
{ "date": "2020-07-13", "number_of_maus": 5172 },
{ "date": "2020-07-14", "number_of_maus": 5220 },
{ "date": "2020-07-15", "number_of_maus": 5306 },
{ "date": "2020-07-16", "number_of_maus": 5338 },
{ "date": "2020-07-17", "number_of_maus": 5330 },
{ "date": "2020-07-18", "number_of_maus": 5349 },
{ "date": "2020-07-19", "number_of_maus": 5380 },
{ "date": "2020-07-20", "number_of_maus": 5437 },
{ "date": "2020-07-21", "number_of_maus": 5480 },
{ "date": "2020-07-22", "number_of_maus": 5466 },
{ "date": "2020-07-23", "number_of_maus": 5458 },
{ "date": "2020-07-24", "number_of_maus": 5459 },
{ "date": "2020-07-25", "number_of_maus": 5482 },
{ "date": "2020-07-26", "number_of_maus": 5482 },
{ "date": "2020-07-27", "number_of_maus": 5529 },
{ "date": "2020-07-28", "number_of_maus": 0 }
],
"endpoints": [
{ "endpoint": "/v1/playlists/<playlist-id>/tracks", "days": [Array] },
{ "endpoint": "/v1/me/tracks", "days": [Array] },
{
"endpoint": "/v1/users/<username>/playlists/<playlist-id>/tracks",
"days": [Array]
},
{ "endpoint": "/v1/users/<username>/playlists", "days": [Array] },
{ "endpoint": "/v1/me", "days": [Array] }
],
"total_requests": [
{ "date": "2020-06-29", "number_of_requests": 71565 },
{ "date": "2020-06-30", "number_of_requests": 72256 },
{ "date": "2020-07-01", "number_of_requests": 53315 },
{ "date": "2020-07-02", "number_of_requests": 22298 },
{ "date": "2020-07-03", "number_of_requests": 85267 },
{ "date": "2020-07-04", "number_of_requests": 68736 },
{ "date": "2020-07-05", "number_of_requests": 63188 },
{ "date": "2020-07-06", "number_of_requests": 84165 },
{ "date": "2020-07-07", "number_of_requests": 87114 },
{ "date": "2020-07-08", "number_of_requests": 62112 },
{ "date": "2020-07-09", "number_of_requests": 59252 },
{ "date": "2020-07-10", "number_of_requests": 93852 },
{ "date": "2020-07-11", "number_of_requests": 49616 },
{ "date": "2020-07-12", "number_of_requests": 63348 },
{ "date": "2020-07-13", "number_of_requests": 55169 },
{ "date": "2020-07-14", "number_of_requests": 73339 },
{ "date": "2020-07-15", "number_of_requests": 67275 },
{ "date": "2020-07-16", "number_of_requests": 73587 },
{ "date": "2020-07-17", "number_of_requests": 55189 },
{ "date": "2020-07-18", "number_of_requests": 62868 },
{ "date": "2020-07-19", "number_of_requests": 70360 },
{ "date": "2020-07-20", "number_of_requests": 72152 },
{ "date": "2020-07-21", "number_of_requests": 92881 },
{ "date": "2020-07-22", "number_of_requests": 83735 },
{ "date": "2020-07-23", "number_of_requests": 80332 },
{ "date": "2020-07-24", "number_of_requests": 73998 },
{ "date": "2020-07-25", "number_of_requests": 58472 },
{ "date": "2020-07-26", "number_of_requests": 87560 },
{ "date": "2020-07-27", "number_of_requests": 124465 },
{ "date": "2020-07-28", "number_of_requests": 0 }
],
"map_data": {
"last_known_date": "2020-07-27",
"locations": [
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object]
]
}
}
Applications
There are several ways yoou could leverage this data:
- Integrating the data in a personal dashboard
- Creating a public dashboard so anyone can see the stats for your app
- Storing the data so you can get more than 30 days worth of stats, which is what Spotify's developer site shows today.