Table of Contents
- What Is the Deezer API?
- Why Developers Target Deezer
- Deezer API Capabilities for Developers
- Integrating Deezer Through MusicAPI vs Direct API
- Building a Deezer-Powered Feature: Step by Step
- Rate Limiting and Best Practices for Deezer Integrations
- FAQ
What Is the Deezer API?
The Deezer API is a REST interface that exposes Deezer's music catalog, user data, and playback features to third-party applications. Developers use it to search tracks, read and create playlists, access user libraries, and retrieve detailed metadata for artists, albums, and tracks.
Deezer's API covers most of the same capabilities you find in other streaming service APIs: OAuth-based user authentication, JSON responses for catalog queries, and CRUD operations on playlists. What sets it apart is Deezer's catalog coverage in markets where other services have thinner libraries, and its straightforward REST design that avoids the SDK complexity you see with some other platforms.
MusicAPI wraps Deezer alongside 11 other streaming services into a single unified API. If your app needs Deezer support, you can either build directly against Deezer's endpoints or connect through MusicAPI and get Deezer plus every other supported service in one integration.
Why Developers Target Deezer
Deezer holds a 56-million-track catalog and operates in over 180 countries. For developers building music-powered apps, Deezer fills coverage gaps that matter: strong presence in France, Germany, Brazil, and across Africa and the Middle East. If your user base extends beyond North America, Deezer is not optional.
Global Reach Beyond the Usual Suspects
Most developers start with the largest streaming platforms. That covers North America and parts of Western Europe well. But user data tells a different story when your app reaches Latin America, Francophone Africa, or the Middle East.
Deezer holds significant market share in these regions. In France, it competes directly with the biggest players. In Brazil, it has deep catalog partnerships with local labels. Across West Africa, Deezer's presence exceeds most international competitors.
For apps with global user bases, skipping Deezer means leaving a meaningful segment of users without their preferred music service. Every user who cannot connect their streaming account is a user who gets less value from your app.
Catalog Strengths: Tracks, Podcasts, and Flow
Beyond raw track count, Deezer offers features that developers can leverage:
- Flow: Deezer's personalized recommendation algorithm generates an infinite, personalized stream of tracks for each user. Apps that surface Flow give users a "lean back" listening experience without requiring playlist selection.
- Editorial playlists: Deezer maintains curated playlists by mood, genre, activity, and region. These are accessible through the API and useful for apps that want pre-built content without manual curation.
- Podcast catalog: Deezer's podcast integration means the same API that handles music also handles spoken-word content. For apps combining music and podcasts, this avoids a separate podcast API integration.
- Lyrics: Deezer provides synchronized lyrics for a large portion of its catalog, accessible through the API.
Deezer API Capabilities for Developers
The Deezer API exposes a standard set of music service operations: search, metadata retrieval, playlist management, and user library access. All endpoints return JSON over HTTPS. Authentication uses OAuth 2.0 for user-scoped operations and API keys for public catalog queries.
Track Search and Metadata
Searching for tracks is the most common starting point. A search query returns track objects with title, artist, album, duration, preview URL, and cover art.
Here is a track search through MusicAPI, which normalizes the Deezer response into the same format used for every other supported service:
curl -X GET "https://api.musicapi.com/api/search?query=Stromae%20Papaoutai&type=track&service=deezer" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
The response returns normalized track objects:
{
"tracks": [
{
"id": "track_dz_67238735",
"service": "deezer",
"title": "Papaoutai",
"artist": "Stromae",
"album": "Racine Carree",
"duration_ms": 233000,
"album_art_url": "https://api.deezer.com/album/6575789/image",
"isrc": "BEA1113000340"
}
]
}
Deezer's direct API returns the same data but in Deezer's own schema (nested under data[] with fields like title_short, artist.name, album.cover_xl). With MusicAPI, you get a consistent format regardless of the source service.
Playlist Access and Management
Playlist operations let your app read a user's existing Deezer playlists, create new ones, and add or remove tracks. These are user-scoped operations that require OAuth authentication.
Fetching a user's playlists through MusicAPI:
curl -X GET "https://api.musicapi.com/api/playlists?service=deezer" \
-H "Authorization: Bearer USER_ACCESS_TOKEN"
The response lists each playlist with its name, track count, cover image, and playlist ID. You can then fetch individual playlist tracks or create a new playlist:
curl -X POST "https://api.musicapi.com/api/playlists" \
-H "Authorization: Bearer USER_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"service": "deezer", "name": "Workout Mix", "description": "High-energy tracks for the gym"}'
Playlist creation returns the new playlist ID, which you can immediately use to add tracks.
User Profile and Library Data
User profile data includes the Deezer username, avatar, country, and account type (free or premium). Library data covers favorite tracks, albums, and artists.
Retrieving a user's Deezer profile:
curl -X GET "https://api.musicapi.com/api/user/profile?service=deezer" \
-H "Authorization: Bearer USER_ACCESS_TOKEN"
Fetching favorite tracks:
curl -X GET "https://api.musicapi.com/api/user/favorites?service=deezer&type=tracks" \
-H "Authorization: Bearer USER_ACCESS_TOKEN"
Both return normalized JSON that matches the response shape for every other service MusicAPI supports.
Integrating Deezer Through MusicAPI vs Direct API
You have two paths to Deezer integration. Build directly against Deezer's REST API, or connect through MusicAPI and get Deezer plus every other supported service in one integration. The right choice depends on whether Deezer is your only target or one of several.
Comparison Table: Direct Deezer vs MusicAPI
| Factor | Direct Deezer API | Via MusicAPI |
|---|---|---|
| Services covered | Deezer only | Deezer + 11 other services |
| Auth implementation | Deezer OAuth 2.0 | Single unified auth flow |
| Response format | Deezer-specific JSON schema | Normalized across all services |
| Rate limit handling | Manual (50 req/s) | Managed by MusicAPI |
| Playlist operations | Deezer endpoints only | One endpoint for all services |
| Adding another service | New integration from scratch | Already included |
| Development time | 2 to 3 weeks | 1 to 2 days |
| Maintenance burden | Track Deezer API changes | MusicAPI handles updates |
| Cost | Free (Deezer API is free) | Free tier available at musicapi.com/pricing |
If your app only needs Deezer and will never add another service, building directly is a reasonable choice. Deezer's API is well-designed and the documentation is decent. But most apps eventually need to support multiple services. Starting with a unified API means you never have to rebuild when that day comes.
Authentication Differences
Deezer uses a standard OAuth 2.0 authorization code flow. You register your app on the Deezer developer portal, redirect users to Deezer's consent screen, receive an authorization code, and exchange it for an access token.
The catch: Deezer access tokens do not expire automatically (unlike most other services), but they can be revoked by the user at any time. Your app needs to handle token revocation gracefully and prompt re-authentication when a previously valid token stops working.
With MusicAPI, Deezer authentication works through the same unified flow used for every other service:
curl -X POST "https://api.musicapi.com/api/auth/init" \
-H "Authorization: Bearer YOUR_APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"service": "deezer", "callback_url": "https://yourapp.com/callback"}'
MusicAPI handles the Deezer-specific OAuth details, token storage, and revocation detection. You get back a unified token that works the same way regardless of which service the user connected.
Building a Deezer-Powered Feature: Step by Step
Here is a practical walkthrough: adding a "Browse Your Deezer Library" feature to an existing app using MusicAPI.
Step 1: Authenticate the User
Start by sending the user through the authentication flow. Your backend calls the auth initialization endpoint, receives an authorization URL, and redirects the user:
# Initialize Deezer auth
curl -X POST "https://api.musicapi.com/api/auth/init" \
-H "Authorization: Bearer YOUR_APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"service": "deezer", "callback_url": "https://yourapp.com/auth/callback"}'
Response:
{
"auth_url": "https://connect.deezer.com/oauth/auth.php?app_id=...",
"session_id": "sess_abc123"
}
Redirect the user to auth_url. After they approve, Deezer redirects back to your callback_url. Your backend calls the callback endpoint to complete the exchange and receive a user access token.
Step 2: Fetch the User's Deezer Playlists
With the user authenticated, fetch their playlists:
curl -X GET "https://api.musicapi.com/api/playlists?service=deezer" \
-H "Authorization: Bearer USER_ACCESS_TOKEN"
Response:
{
"playlists": [
{
"id": "pl_dz_908622995",
"service": "deezer",
"name": "Chill Vibes",
"track_count": 47,
"cover_url": "https://api.deezer.com/playlist/908622995/image",
"owner": "user_dz_2529"
},
{
"id": "pl_dz_1045889221",
"service": "deezer",
"name": "Running Tracks",
"track_count": 23,
"cover_url": "https://api.deezer.com/playlist/1045889221/image",
"owner": "user_dz_2529"
}
]
}
Render these in your UI. Each playlist object contains everything you need for a list view: name, track count, and cover image.
Step 3: Display Playlist Tracks
When a user selects a playlist, fetch its tracks:
curl -X GET "https://api.musicapi.com/api/playlists/pl_dz_908622995/tracks" \
-H "Authorization: Bearer USER_ACCESS_TOKEN"
Response:
{
"tracks": [
{
"id": "track_dz_3135556",
"title": "Harder, Better, Faster, Stronger",
"artist": "Daft Punk",
"album": "Discovery",
"duration_ms": 224000,
"album_art_url": "https://api.deezer.com/album/302127/image"
}
],
"pagination": {
"total": 47,
"limit": 25,
"offset": 0
}
}
The response uses the same normalized schema as every other service. If you later add support for other streaming platforms, your frontend rendering code does not change.
Rate Limiting and Best Practices for Deezer Integrations
Deezer enforces a rate limit of approximately 50 requests per second per application. This is more generous than most streaming services, but you still need to handle it.
Best practices for Deezer integrations:
- Cache metadata aggressively. Track metadata (title, artist, album art) changes rarely. Cache it for at least 24 hours. Playlist contents change more often but can be cached for 5 to 15 minutes.
- Batch where possible. When loading a playlist view, fetch the playlist list first, then fetch tracks for the selected playlist only. Do not preload all tracks for all playlists.
- Handle 429 responses. When you hit the rate limit, Deezer returns a 429 status. Back off with exponential delay and retry. Do not hammer the endpoint.
- Watch for token revocation. Deezer tokens can be revoked at any time. When you get a 401, prompt the user to re-authenticate instead of retrying with the same token.
- Use pagination. Deezer endpoints return paginated results. Always check the
totalfield and implement "load more" rather than fetching everything in one call.
When using MusicAPI, rate limiting is handled at the API layer. MusicAPI tracks per-service limits, handles backoff automatically, and returns consistent 429 responses with retry guidance. You do not need to implement per-service rate tracking yourself.
Ready to skip months of OAuth and SDK work? Start your free MusicAPI trial and connect 10+ streaming services with one unified API.
FAQ
Is the Deezer API free to use?
Yes. Deezer's API is free for developers. There are no API access fees or per-request charges. You register your app on the Deezer developer portal, get credentials, and start making requests. The rate limit (approximately 50 requests per second) is the main constraint. For production apps that need higher throughput or access to multiple services, MusicAPI offers free and paid tiers that include Deezer alongside 11 other streaming services.
What data can I access through the Deezer API?
The Deezer API provides access to track search and metadata (title, artist, album, duration, ISRC, cover art), user playlists (read, create, update), user favorites (tracks, albums, artists), user profile information, album and artist details, editorial playlists, radio stations, and podcast content. User-scoped data requires OAuth authentication. Public catalog data (search, track metadata) can be accessed with just an API key.
Can I create playlists on Deezer through an API?
Yes. The Deezer API supports full playlist CRUD: create, read, update, and delete. You can create a new playlist, add tracks to it, remove tracks, and update the playlist name and description. Through MusicAPI, you use the same create playlist endpoint for Deezer as for every other supported service. The request body is identical; only the service parameter changes.
How does MusicAPI handle Deezer rate limits?
MusicAPI tracks Deezer's rate limits (approximately 50 requests per second) at the API layer. When your requests approach the limit, MusicAPI queues them and applies automatic backoff. If the limit is hit, you receive a standard 429 response with a Retry-After header telling you exactly how long to wait. This is consistent across all services. You do not need separate rate limit tracking for Deezer, separate tracking for other platforms, and separate backoff logic for each. One rate limiting strategy covers everything.
Can I access Deezer alongside other streaming services in the same API call?
With MusicAPI, yes. A single search request can return results from Deezer and every other connected service simultaneously. The response includes results from all services the user has authenticated, each tagged with the source service. Playlist and library operations are per-service (you specify which service to query), but the request format and response schema are identical across services. Your code writes one parser, one error handler, and one authentication flow that works for all supported services.
Does Deezer support playback through its API?
Deezer offers a JavaScript Widget for browser-based playback and 30-second preview URLs for all tracks through its REST API. Full playback requires the Deezer Widget, which embeds an iframe player in your web application. For mobile apps, Deezer's SDK options are more limited compared to some other services. Through MusicAPI, playback control is normalized across services, so the same commands that control playback on one service work identically for Deezer.
