Ask your history in Claude or ChatGPT
Both assistants are good at digging through listening data, once they have it. There are two ways to give it to them: upload Spotify’s export files into a chat, or connect your history so the assistant can query it. Here’s how each works, where each breaks, and prompts worth trying.
· 5 min read
Step zero: get your full history
Neither assistant can see your Spotify listening on its own. The data that answers interesting questions is your Extended Streaming History: every play since you joined, with timestamps, skips, shuffle and device. Request it from Spotify’s privacy page (pick “Extended streaming history”, not “Account data”) and confirm the email. Our export guide covers every click.
It usually arrives within a few days. When the zip arrives, you have two ways to bring it to an assistant.
Option 1: upload the files to a chat
- Unzip the export and open the
Spotify Extended Streaming Historyfolder. The files you want are namedStreaming_History_Audio_….json. - Pick the years you care about. A decade of listening can be over 200 MB of JSON, more than a single chat will take, so start with a few files.
- Use a chat that can run code: data analysis in ChatGPT, or Claude with its code tool turned on. Without code, the model reads a sample of the text and estimates, and counts come out wrong.
- Attach the files and paste a prompt that sets the rules.
A starter prompt
Most wrong answers come from the data’s quirks, not the model. Spell them out (and swap in your own time zone):
These are my Spotify Extended Streaming History files. Load all of them
into one table with Python. Each record is one play:
- ts is when the play ended, in UTC. Convert it to Europe/Berlin before
answering anything about dates or time of day.
- ms_played is how long it played. Only count plays of 30 seconds or more.
- A song is master_metadata_track_name + master_metadata_album_artist_name.
Group by those, not by spotify_track_uri.
- Drop rows where spotify_track_uri is empty (podcasts and audiobooks).
First tell me how many plays you loaded and the date range. Then answer:
Who was my most-played artist each year?Where it breaks
- Every chat starts from zero. Uploads don’t carry over, so you re-attach the files and re-paste the rules each time.
- Big exports don’t fit. You end up analyzing a few years at a time and stitching answers together.
- Answers drift. The assistant writes new code on every run. Ask it to show the count and the code, and expect small differences between chats.
- The whole log goes along. Every play, with time, place and the IP address Spotify recorded, sits with the AI provider under its own data settings.
Option 2: connect your history
Claude and ChatGPT both support connectors: outside tools the assistant can call mid-conversation, built on the Model Context Protocol (MCP). With a connector, your history stays in a database and the assistant asks it questions, instead of reading a file.
ListenLens works this way. You import your zip once on ListenLens. The connector tells the assistant how your data is laid out and the rules above (time zone, what counts as a play, how songs group), so you don’t have to. The assistant writes the query, ListenLens runs it against your database, and only the result rows go back. A new chat picks up where the data is, with no re-uploading, and your whole history is there, not just the files that fit.
Setting it up
- Import your Spotify zip on ListenLens.
- Open Your AI in the app and copy the server URL.
- Add it as a custom connector in Claude’s or ChatGPT’s settings. Custom connectors depend on your plan in each app, and ChatGPT may ask you to turn on developer mode.
- Sign in to ListenLens when asked and approve read access to your listening history.
You can disconnect an assistant from the same Your AI page at any time.
No assistant? No problem. ListenLens has its own chat with tables and charts built in. The connector is for when you want custom visuals, or to bring your listening into a bigger conversation.
Upload or connect?
| Upload the files | Connect ListenLens | |
|---|---|---|
| Setup | None beyond the export | Import once, add the connector |
| Each new chat | Re-upload and re-explain | Just ask |
| Whole history | Only what fits in one chat | Yes |
| What the assistant gets | The full files | Your question’s result rows |
| IP addresses | Included unless you strip them | Never in the database |
| Cost | Free | ListenLens account |
Prompts to try
Either way, the best questions are the ones a recap can’t answer. Start with these:
- What was my most-played artist each year? Show it as a bump chart.
- Which songs did I play on repeat for a month and then never again?
- What do I play after midnight that I never play at noon?
- Has my skip rate changed over the years? Split it by shuffle on and off.
- List the songs I loved in 2016 and haven’t played since.
- Write a short story of my decade in music, with real numbers.
More ideas in questions worth asking your history.
Questions
Can ChatGPT or Claude see my Spotify history on their own?
No. Neither has access to your listening history unless you give it the data, either by uploading your Extended Streaming History files or by connecting a tool like ListenLens.
Is it safe to upload my Spotify data to ChatGPT?
It’s your full listening log, including an IP address for every play, so treat it as personal data and check the assistant’s data and training settings first. A connector avoids sending the files at all.
Why do I get different numbers in different chats?
The assistant writes new code each time and may treat skips, time zones or duplicate songs differently. State the rules in your prompt and ask it to show the count and the code.
Can an assistant change my data through ListenLens?
No. The connector is read-only. The assistant can query your history but can’t change or delete anything, and you can disconnect it from ListenLens at any time.
Do I need a paid ChatGPT or Claude plan?
It depends on the feature and changes over time. File uploads with code and custom connectors are tied to specific plans in each app, so check their current plan pages. ListenLens’s own chat doesn’t need either.