Spotify Stats, Self-Hosted.

Live capture, lifetime history, stats on every artist, album and track, and an MCP server for your AI.

Time, plays, tracks and artists, each against the period before.

Every Play Since Day One

spotussi records what you play as you play it, imports your history back to day one, and charts all of it for any range you pick.

  • Top Lists

    Every track, artist, album and genre you have played, ranked for any range, with rank movement.

  • Listening Clock

    When in the day you listen, hour by hour, and which hour is your busiest.

  • Lifetime History

    Import your lifetime streaming history from Spotify, back to your very first play.

  • Live Capture

    Your Spotify streams are read every 12 seconds, so it knows what you finished and what you skipped.

  • Stats Over Time

    How much you listen, and how much of it your top artists hold, day after day.

  • Sessions

    Your longest listening runs, from Saturday’s party to the Wednesday you should have slept.

  • Artists, Albums, Tracks

    Open any one to see your rank, your first play and when you play it.

  • API and MCP

    A documented API for your scripts, and an MCP server your AI assistant can ask.

Free Is Better.

Hosted stats apps charge a subscription and keep your plays on their servers. spotussi runs on your own machine, keeps every play in a file you own, and costs nothing.

spotussi

$0

free forever

  • Plays stored on your own server
  • Your full Spotify history imported, free
  • Every top list ranked in full, for any range

Last.fm Pro

$49.99

a year

  • Plays stored on Last.fm’s servers
  • Counts plays from the day you connect it
  • Advanced stats and reports need Pro

stats.fm Plus

$6

for lifetime Plus

  • Plays stored on stats.fm’s servers
  • History import needs Plus
  • Free top lists stop at 50

US prices as listed on 18 October 2026, from last.fm/pro, stats.fm/plus and the stats.fm App Store listing. Last.fm and stats.fm are trademarks of their owners; spotussi is not affiliated with either.

Rank by plays.

Count plays and short songs win. Count hours and long ones do. Scroll on and Metallica climbs from sixth to third.

Plays: every start past 30 seconds.Time: minutes actually listened, not track length.

  1. Drake212
  2. Kendrick Lamar196
  3. Travis Scott141
  4. Fred again..120
  5. Arctic Monkeys104

Top artists, last 4 weeks, sample data. Every chart and list in spotussi has this switch.

From Stream to Dashboard

Follow three tracks from the phone they played on to your dashboard and your assistant.

  1. 1 · Stream

    Stream on Spotify

    Listen in Spotify on your phone, laptop or speaker. spotussi reads your player from your server every 12 seconds, so there is nothing to install where you listen.

  2. 2 · Ingest

    Each Stream Is Ingested

    Every read brings in the track, your position, the device and the playlist. When the track changes, spotussi stores one play with the seconds you listened and whether you skipped. Your history export lands in the same table, matched so nothing counts twice.

  3. 3 · Dashboard

    All Your Data, One Dashboard

    Overview, top lists and charts include the new play straight away, from today back to the first year you imported. A skip adds to your time listened and never to your plays.

  4. 4 · Ask

    Ask Your Assistant

    The built-in MCP server lets an assistant answer from your own history, with the same numbers as the dashboard. Scripts get them from the API.

The Nitty-Gritty

Built with Go, Svelte and SQLite.

One Go Binary One process, one port. Pure-Go SQLite, no cgo. amd64 and arm64. 8.1 MB image.
  1. Workers

    Capture, import and catalog lookups. Goroutines in the same process.

  2. One SQLite File

    WAL, so writes never block reads. Live backups. Open it in sqlite3.

  3. In-Memory Index

    Every play, columnar. About 35 MB for a lifetime. Swapped in whole after each rebuild.

  4. Documented API

    OpenAPI docs at /api/docs. Revocable tokens. No private endpoints.

  5. UI and MCP

    Svelte 5, compiled into the binary. MCP on the same API.

< 25 ms

How long a dashboard takes with 500,000 plays loaded: quicker than a blink.

Faster than my cat at 3 AM

12 s

Your listening is captured every 12 s while music plays, and every 90 s when idle.

29 MiB

Memory in use at idle, little enough for a small arm64 board.

Installation

Five steps, most of them in the setup wizard. You need Docker and a Spotify account with Premium. Each step links its guide in the documentation on GitHub.

Run

Save the compose file from the install guide and run docker compose up -d. One container, one data volume.

Install guide

Claim

Open spotussi in your browser, enter the setup token from the container log and choose an owner password. Single sign-on through a forward-auth proxy works too.

Sign-in options

Connect

Create your own Spotify app, paste its Client ID and approve read-only access. The wizard shows every value to copy.

Spotify guide

Import

Request your Extended Streaming History from Spotify. It can take up to 30 days. Drop the zip in when it arrives.

Import guide

Listen

Play music as normal. spotussi checks your player about every 12 seconds, so each play lands as you hear it.

Live capture

FAQ

Premium

Yes. Spotify only lets Premium accounts create the developer app spotussi connects through. Every instance uses its own app, and the wizard walks you through making it.

Privacy

Into one SQLite file on your server. spotussi asks Spotify for read-only access only, and the free public catalog sources it uses for artwork and genres can each be switched off.

History

Request the Extended Streaming History on Spotify's privacy page and import the zip when it arrives. Raw rows are kept forever, so a rule change applies to all of it.

Artwork

Spotify allows apps like this about 150 catalog lookups a day. Public sources fill the gaps meanwhile, so a lifetime export has its artwork, durations and genres in about six to seven hours.

Assistants

Yes. The built-in MCP server answers assistants that hold an API token, using the same documented API the dashboard runs on.

Cost

There is nothing to buy and no subscription. It runs on any amd64 or arm64 machine with Docker, or as a static binary on Linux and macOS, and you can back it up while it runs with one command.

The compose file, the guides and every release are on GitHub. Install