Skip to main content

Unofficial API for TIDAL music streaming service.

Project description


Unofficial Python API for TIDAL music streaming service.

Requires Python 3.9 or higher.


Install from PyPI using pip:

$ pip install tidalapi


For examples on how to use the api, see the examples directory.


Documentation is available at


This project uses poetry for dependency management and packaging. To install dependencies and setup the project for development, run:

$ pip install pipx
$ pipx install poetry
$ poetry install --no-root



  • Fix: Set token type correctly for OAuth/PKCE authentication - tehkillerbee

  • Revert to using enums with str support for relevant classes - tehkillerbee, exislow

  • Removed return types from method names for consistency, added deprecation warnings - exislow


  • Fix: Use wide image when no square picture is available. - tehkillerbee

  • Feat.: Added HiRes page. - tehkillerbee

  • Feat.: Handle missing Stream fields gracefully. Get stream audio resolution (bit depth, rate) as tuple. - tehkillerbee

  • Feat.: Added misc helper functions for audio mode, get available audio mode for media. - tehkillerbee

  • Feat.: Added misc. fields to album. Get audio resolution for album + individual tracks. - tehkillerbee

  • Feat.: Added MPEG-DASH to HLS stream parsing, Added MPEG-DASH stream example. - tehkillerbee

  • Set default artist IMG if missing. Use default album IMG URI instead of direct URL. - tehkillerbee

  • Bugfix: Make sure is_pkce state is set when pkce_login_url() is used directly. - tehkillerbee

  • Tests: Added misc tests for ObjectNotFound - tehkillerbee

  • Error handling: Handle TooManyRequests exceptions gracefully. - tehkillerbee

  • Error handling: Handle ObjectNotFound exceptions gracefully. - tehkillerbee

  • Tests: Fix misc tests broken by Tidal. - tehkillerbee

  • Bugfix: Fix pkce token refresh. - tehkillerbee

  • Bugfix: Load/store PKCE state from file using wrong client_id. - tehkillerbee

  • Feat.: Improved error handling (Missing albums, missing lyrics, missing track url etc.). - tehkillerbee

  • Bugfix: Page Recursion into Categories. - quodrum-glas




  • (BREAKING!) Drop support for python3.8 and older

  • Improved tests - 2e0byo

  • Add type to album object - jozefKruszynski

  • Add mix images and tests - jozefKruszynski

  • Add mypy and fix immediate typing errors - arusahni

  • New attribute to media.Track() class: ‘full_name’ - WilliamGuisan

  • Fix method - ssnailed

  • Fixed key error for gender when parsing user json - mkaufhol

  • Drop (almost) all user data we don’t use. - 2e0byo

  • Add typing for media, genres, mixes, and albums - arusahni

  • Replace TypedDict and NamedTuple with dataclasses - arusahni

  • Fix circular Imports and Typing - PretzelVector


  • Quick fix for “got key error ‘picture’” error. - BlackLight

  • Bring back Radio support - bjesus

  • Added function for multiple deletions at once bloedboemmel

  • Use UTC instead of local time for expiry_time lutzbuerkle


  • (BREAKING!) Removed obsolete parameter session_id from load_oauth_session - lutzbuerkle

  • (BREAKING!) Drop support for python2.7 - morguldir

  • (BREAKING!) Change the architecture of the library to allow for using more files, see the migration guide - morguldir

  • Add support for tidal pages (e.g. home, videos and explore in the web ui) - morguldir

  • Add support for parsing mixes and retrieving the media - morguldir

  • Get rid of the old genre and mood support, you can now find them in the pages instead - morguldir

  • Update almost all of the json parsing and classes to include more fields - morguldir

  • Add complete docstrings to many of the functions - morguldir

  • Tests now cover almost all of the code - morguldir

  • Pylint scores are now much higher - morguldir

  • Add option to retrieve master quality tracks (I can’t test this, but I believe it works as of writing) - morguldir

  • Add a few documentation pages explaining the basics - morguldir

  • Add support for modifying playlists - morguldir

  • Add a parameter to always fetch the track album if it’s not provided - divadsn

  • Add function to retrieve the year and date from either the release data or the stream start date - divadsn

  • Improve the performance of the internal get_items() function by using extend - BlackLight

  • Properly deal with the api returning non-json results - BlackLight

  • Add support for retrieving the reviews of an album - retired-guy


  • Update the client secret - 1nikolas

  • Use a track url endpoint compatible with the new secret - morguldir


  • Update the client secret - morguldir

  • Fix token_refresh() not correctly including the client secret - morguldir


  • Support OAuth login through login_oauth_simple() and login_oauth() - morguldir

  • Support loading an OAuth session through load_oauth_session() - morguldir

  • Include more info when a request fails - morguldir


  • Fix wimp images not resolving - ktnrg45

  • Made the favorite playlists function also return created playlists - morguldir


  • Update api token and slightly obfuscate it - morguldir



  • Add parameter to search() allowing for more results (up to 300) - morguldir

  • Fix get_track_url() not returning anything - morguldir


  • Fix quality options using enum names instead of values - morguldir

  • Handle situations where tidal doesn’t set the version tag - morguldir


  • Update lossless token - morguldir

  • Always use the same api token - morguldir

  • Include additional info when logging fails - morguldir

  • Make user_id and country_code optional when using load_session() - morguldir

  • Add version tag for Track - Husky22

  • Switch to netlify for documentation - morguldir

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tidalapi-0.7.6.tar.gz (42.4 kB view hashes)

Uploaded Source

Built Distribution

tidalapi-0.7.6-py3-none-any.whl (49.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page