I am seeing consistent and reproducible behaviour across multiple playlists where the Spotify Web API does not return all playlist items, even though all tracks are playable in the Spotify client.
Observed behaviour
GET /playlists/{playlist_id} reports tracks.total = N
GET /playlists/{playlist_id}/tracks (or playlist_items via Spotipy) returns M < N items
The missing items:
do not appear as track: null
are not returned at any offset
are excluded before pagination
Pagination completes normally (next = null) after M items
This behaviour occurs consistently across runs and playlists
Examples
Playlist with tracks.total = 308 → API returns 200 items
Playlist with tracks.total = 111 → API returns 100 items
Playlist with tracks.total = 196 → API returns 100 items
Playlist with tracks.total = 827 → API returns 427 items
Smaller playlists often return all items, while larger playlists frequently return a reduced subset.
Important detail
All tracks that are missing from the API:
are visible in the Spotify UI
are fully playable in the Spotify client
do not appear greyed out or unavailable in the app
What has been tested
Forced market parameter (e.g. market=GB)
Multiple playlists (personal and Spotify-curated)
Multiple runs with fresh tokens
Spotipy and direct Web API calls show identical behaviour
No track = null placeholders are returned for the missing items. They are silently excluded from the response entirely.
Questions
Is this behaviour intentional?
Is full playlist enumeration via the Web API still supported?
Should developers expect tracks.total to exceed the number of retrievable playlist items?
Is there a documented reason why tracks playable in the Spotify client may be excluded from the Web API without indication?
I am not asking for a workaround, only clarification on whether this behaviour is expected going forward so developer applications can adapt correctly.
Thank you.