diff --git a/server/src/routes/api/get/getTracklist.ts b/server/src/routes/api/get/getTracklist.ts
index 227daa2..4605658 100644
--- a/server/src/routes/api/get/getTracklist.ts
+++ b/server/src/routes/api/get/getTracklist.ts
@@ -1,5 +1,5 @@
 // @ts-expect-error
-import { Deezer } from 'deezer-js'
+import { Deezer, utils as dzUtils } from 'deezer-js'
 import { ApiHandler } from '../../../types'
 import { sessionDZ } from '../../../app'
 
@@ -62,9 +62,20 @@ const handler: ApiHandler['handler'] = async (req, res) => {
 			break
 		}
 		default: {
-			const releaseAPI = await dz.api[`get_${list_type}`](list_id)
-			let releaseTracksAPI = await dz.api[`get_${list_type}_tracks`](list_id)
-			releaseTracksAPI = releaseTracksAPI.data
+			let releaseAPI, releaseTracksAPI
+			try {
+				releaseAPI = await dz.api[`get_${list_type}`](list_id)
+				releaseTracksAPI = await dz.api[`get_${list_type}_tracks`](list_id)
+				releaseTracksAPI = releaseTracksAPI.data
+			} catch {
+				if (list_type === 'playlist') {
+					releaseAPI = dzUtils.map_playlist(await (await dz.gw.get_playlist_page(list_id)).DATA)
+					releaseTracksAPI = await dz.gw.get_playlist_tracks(list_id)
+				} else {
+					releaseAPI = {}
+					releaseTracksAPI = []
+				}
+			}
 
 			const tracks: any[] = []
 			const showdiscs =
@@ -74,6 +85,7 @@ const handler: ApiHandler['handler'] = async (req, res) => {
 			let current_disk = 0
 
 			releaseTracksAPI.forEach((track: any) => {
+				if (track.SNG_ID) track = dzUtils.map_track(track)
 				if (showdiscs && parseInt(track.disk_number) !== current_disk) {
 					current_disk = parseInt(track.disk_number)
 					tracks.push({ type: 'disc_separator', number: current_disk })