Unofficial API to fetch Spotify Canvas video data (the looping visual videos that appear behind songs on mobile).
Find a file
2025-12-02 10:15:07 +07:00
controllers fix: small typo lead to error, fixed now. 2025-04-09 23:15:12 +08:00
proto fix: error because it's commonjs, so treat it as a CommonJS script, rename it to use the '.cjs' file extension. 2025-04-09 23:19:00 +08:00
routes fix: Fixed auth error and unable to get canvas 2025-04-09 23:05:48 +08:00
services chore: update secrets url 2025-10-14 11:34:55 +07:00
.gitignore Add files via upload 2024-02-11 20:39:21 +08:00
.travis.yml Add files via upload 2024-02-11 20:39:21 +08:00
Dockerfile fix: Dockerfile 2025-12-02 10:15:07 +07:00
index.js fix: Fixed auth error and unable to get canvas 2025-04-09 23:05:48 +08:00
LICENSE Create LICENSE 2024-02-11 21:02:50 +08:00
package.json fix: Fixed auth error and unable to get canvas 2025-04-09 23:05:48 +08:00
README.md fix: small typo 2025-04-09 23:09:12 +08:00
vercel.json Update 2024-02-11 20:51:50 +08:00

Spotify Canvas API

Unofficial API to fetch Spotify Canvas video data (the looping visual videos that appear behind songs on mobile).

Warning

This project uses undocumented endpoints and may violate Spotify's Terms of Service. Use at your own risk.


Features

  • Retrieve Canvas video URLs by track ID or URI
  • Parses Protobuf responses from the internal Spotify API
  • Works with public or private tracks (as long as you're authenticated)

Example Request

GET /api/canvas

https://localhost:3000/api/canvas?trackId=3OHfY25tqY28d16oZczHc8

Response:

{
  "data": {
    "canvasesList": [
      {
        "id": "32b57cbf354b453a95eee32bb04d4e42",
        "canvasUrl": "https://canvaz.scdn.co/upload/licensor/5bSw7fRotCnRCcO9br14W5/video/32b57cbf354b453a95eee32bb04d4e42.cnvs.mp4",
        "trackUri": "spotify:track:3OHfY25tqY28d16oZczHc8",
        "artist": {
          "artistUri": "spotify:artist:7tYKF4w9nC0nq9CsPZTHyP",
          "artistName": "SZA",
          "artistImgUrl": "https://i.scdn.co/image/ab6761610000f1780895066d172e1f51f520bc65"
        },
        "otherId": "2c441fceb502eaa25f26bcd5b1ccfc0d",
        "canvasUri": "spotify:canvas:1xGyujDyxbx4eTPD4nKLw6"
      }
    ]
  }
}

Setup

1. Clone the Repo

git clone https://github.com/Paxsenix0/Spotify-Canvas-API.git
cd Spotify-Canvas-API

2. Install Dependencies

npm install

3. Set Required Environment Variable

You must supply your sp_dc cookie from a logged-in Spotify session.

Create a .env file in the root:

SP_DC=your_sp_dc_cookie_here

This cookie is used to generate an access token to authenticate requests.


Deployment

You can deploy instantly with Vercel:

Deploy with Vercel


Notes

I'm developing this project entirely on my phone, without a PC or laptop. Also, I'm still learning — so feel free to send pull requests or suggestions if something looks off!


Reference

Shoutout to this helpful repo that inspired parts of this: https://github.com/bartleyg/my-spotify-canvas


License

This project is licensed under the MIT license. see LICENSE for details.


Contact

Telegram: @paxsenix0

Email: alex24dzn@proton.me

My Rest-API website: https://api.paxsenix.biz.id