sjdonado/idonthavespotify

TypeScriptidonthavespotify.sjdonado.com

Effortlessly convert music links between streaming services

spotifytailwindcssdeezer-apibunhtmxstimulus
Star Growth
Stars
1.9k
Forks
53
Weekly Growth
+1
Issues
5
5001k1.5k
Mar 2023May 2024Jul 2025Sep 2026
Artifactsnpm
README

IDHS (I Don't Have Spotify)

Copy a link from your favorite streaming service, paste it into the search bar, and voilà! Links to the track on all other supported platforms are displayed. If the original source is Spotify you'll even get a quick audio preview to ensure it's the right track.

Note: Playlists are out of scope. Only individual tracks, albums, artists, and podcasts are supported.

Supported Streaming Services

Adapters represent the streaming services supported by the Web App and the Raycast Extension. Each adapter allows the app to convert links from one platform to others. The table below shows which features are available for each one:

Adapter Inverted Search Official API Verified Links
Spotify Yes No Yes
Tidal Yes Yes Yes
YouTube Music Yes No Yes
Apple Music Yes No Yes
Deezer Yes Yes Yes
SoundCloud Yes No Yes
Qobuz Yes No Yes
Bandcamp Yes No Yes
Pandora Yes No Yes

Architecture overview: Parsers and Adapters

IDHS extracts metadata from the provided link and uses that information to create a new query for public search engines or official APIs, such as Apple Music, YouTube, and SoundCloud. It selects the result that seems most relevant, but it cannot guarantee that the returned link is the exact track you want or even a song at all. Suggestions for improving the query-building workflow are welcome, with the main constraint being to keep requests fast and excluding brute-force retries to avoid rate limits.

Parsers (src/parsers)

Identify the incoming link's platform and extract normalized metadata (title, description, type, image, and optional audio) as well as a consistent search query. For example, a Spotify link is parsed to gather Open Graph metadata and produce a query string that represents the track/album/artist/show/episode. This query is later used to search other platforms.

Adapters (src/adapters)

Turn that normalized query into outbound links for each destination platform (Spotify, YouTube Music, Apple Music, Deezer, SoundCloud, Tidal). Each adapter is responsible for:

  • Performing a platform-specific search (API or HTML-based) using the normalized query
  • Returning a result with type, url, and flags like isVerified and notAvailable
  • Preferring "verified" links when the platform provides a reliable match signal

This separation keeps the system modular: parsers focus on understanding the source, while adapters focus on finding the best possible destination links.

Web App

image

Extensions

Raycast

Source code: https://github.com/raycast/extensions/tree/main/extensions/idonthavespotify

Local Setup

The list of environment variables is available in .env.test. To complete the values for the following variables:

Note: Spotify search uses an anonymous access token extracted from the Spotify web player (open.spotify.com) via a TOTP-based authentication flow. This is necessary because as of March 2026, Spotify restricted their Web API to require a Premium account for Development Mode and limited the available endpoints. Since this project doesn't have a premium account, we use the same internal GraphQL API that the Spotify web player itself uses. The token is auto-refreshed (~1 hour expiry) and requires no developer account.

Ensure that the values are correctly added to your .env file to configure the API keys properly.

  • To get the app up:
bun install
bun dev
  • To run with url-shortener:

Set this ENV file URL_SHORTENER_API_KEY, with the value used in docker-compose.yml

docker compose up -d
bun install
bun dev

More info

Contributions are more than welcome, just open a PR and I'll review it promptly.

Icon Generated by https://deepai.org/machine-learning-model/text2img
Related repositories
DIYgod/RSSHub

🧡 Everything is RSSible

TypeScriptnpmGNU Affero General Public License v3.0rsstwitter
docs.rsshub.app
46.1k10.2k
GorvGoyl/Clone-Wars

100+ open-source clones of popular sites like Airbnb, Amazon, Instagram, Netflix, Tiktok, Spotify, Whatsapp, Youtube etc. See source code, demo links, tech stack, github stars.

awesomeGNU Affero General Public License v3.0clonetiktok
gourav.io/clone-wars
36.7k3.3k
spotDL/spotify-downloader

Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found).

PythonPyPIcliMIT Licensemp3spotify
spotdl.readthedocs.io/en/latest/
26k2.2k
spicetify/cli

Command-line tool to customize Spotify client. Supports Windows, macOS, and Linux.

JavaScriptnpmcliGNU Lesser General Public License v2.1spotifycustomization
spicetify.app
24.4k928
SpotX-Official/SpotX

SpotX patcher used for patching the desktop version of Spotify

PowerShellMIT Licensespotifyspotify-desktop-client
22.3k1.1k
Rigellute/spotify-tui

Spotify for the terminal written in Rust 🚀

Rustcrates.iocliMIT Licensespotifyspotify-api
19.3k581
nukeop/nuclear

Streaming music player that finds free music for you

TypeScriptnpmappGNU Affero General Public License v3.0music-playermusic
nuclearplayer.com
18.4k1.3k
Shabinder/SpotiFlyer

Kotlin Multiplatform Music Downloader, Supports Spotify / Gaana / Youtube Music / Jio Saavn / SoundCloud.

KotlinappGNU General Public License v3.0spotify-downloadermp3
spotiflyer.in
11.3k819
maxrave-dev/SimpMusic

A cross-platform music app using YouTube Music for backend

KotlinappGNU General Public License v3.0androidandroid-application
simpmusic.org
11.1k585
spotbye/SpotiFLAC

Get Spotify tracks in true FLAC from Tidal, Qobuz & Amazon Music — no account required.

TypeScriptnpmappMIT Licensespotifyspotify-downloader
spotbye.qzz.io
11k564
Spotifyd/spotifyd

A spotify daemon

Rustcrates.ioappGNU General Public License v3.0spotifyspotifyd
spotifyd.rs
10.8k517
WXRIW/Lyricify-App

Lyricify (/lɪ'rɪsəfaɪ/), a fantastic app to provide scroll lyrics for Spotify and other apps. 一款为 Spotify 等各种应用提供滚动歌词的软件。

appspotifyqq-music
lyricify.app
7.2k127