Skip to content

Repository files navigation

npm Node.js MIT

Reverse-engineered Qobuz API client for Node.js

Website · Documentation

Features

  • Token auth, captcha-proof — authenticates with a user_auth_token borrowed from your logged-in browser; no password handling, no captcha walls.
  • Pluggable credential store — ships in-memory and macOS Keychain implementations; bring your own.
  • Typed resources — search, albums, artists, tracks, playlists, favourites — clean camelCase domain types mapped from the raw API.
  • Deep links — build open.qobuz.com URLs to open anything in the Qobuz app.
  • Now playing — read the track the Qobuz desktop app is currently playing (macOS), bypassing the OS now-playing system Qobuz never registers with.
  • Collection stats — analyse your library from the desktop app's local database: genre mix, hi-res ratio, top artists/labels, and collection timeline (macOS).
  • ESM + types, zero runtime deps — tree-shakeable, fully typed, ships nothing extra.

Install

npm install @kud/qobuz

Usage

Grab a token from a logged-in play.qobuz.com session — open DevTools, inspect any api.json network request, and copy the X-User-Auth-Token header. Then connect validates it, persists it to your store, and hands back a ready client (the app_id is scraped automatically if you don't pass one):

import { connect, createKeychainStore } from "@kud/qobuz"

const client = await connect({ token, store: createKeychainStore() })
const { albums } = await client.search.search("radiohead")
console.log(client.deepLink.album(albums[0].id))

On later runs the token is already stored, so skip connect and build straight from the store:

import { createQobuzClient, createKeychainStore } from "@kud/qobuz"

const client = await createQobuzClient({ store: createKeychainStore() })

Prefer the terminal? The companion CLI @kud/qobuz-cli wraps all of this in a qobuz login flow.

Development

git clone https://github.com/kud/qobuz.git
cd qobuz
npm install
npm run build   # tsup → ESM + dts
npm test        # vitest
npm run typecheck

📚 Full documentation → qobuz/docs

Disclaimer

This is an independent, unofficial project — not affiliated with, endorsed by, or sponsored by Qobuz. "Qobuz", the Qobuz logo, and any icons derived from it are trademarks of Qobuz Music, used here only to indicate compatibility.

About

Reverse-engineered Qobuz API client for Node.js

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages