Deezer Scraper at a glance
Deezer Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes id, type, title, link and duration (s), which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.20 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 30 options
- Run success
- 99.5% of completed public runs in the last 30 days
Scrape Deezer by keyword or URL. Extract tracks, albums, artists, playlists, lyrics, radios, charts and public profiles. Get BPM, ISRC, contributors, release dates, availability, full tracklists, artist top tracks and discographies.
What Deezer Scraper can do
- Two ways in. Search by keyword (six entity types), or paste any Deezer link (track, album, artist, playlist, radio, genre or public profile) and the actor picks the right read.
- Full track listings, not truncated samples. Albums and playlists return the collection record plus one row per track, walked across every result page (a 1,075-track playlist was verified to come back complete, not cut at the first hundred).
- Per-track depth on demand. In search mode, switch on detail enrichment to add BPM, the full contributor list, ISRC, release date, disk and track positions, and the per-country availability list - billed per track only when you use it.
- Charts per genre. Read the global or per-genre charts for tracks, albums, artists or playlists in one run.
- Lyrics in any mode. Add plain lyrics, time-synced LRC lines, word-level karaoke timing, songwriters and publishers to every track row, billed only where lyrics were found.
- Built for schedules. Incremental mode returns only new and changed records on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
Choose what to collect
These inputs let you configure Deezer Scraper - Tracks, Albums, Artists, Playlists & Lyrics. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose 'search' to query the catalog by keyword (or read the charts), or 'url' to scrape pasted Deezer links: track, album, artist, playlist, radio, genre and public user-profile pages. |
queriesarray | Keywords to search for, one search per row (e.g. "daft punk"). Combined with Entity type below. |
querystring | Alias for one entry of Search keywords. Added to the keyword list. |
searchTypestring | What to search for: tracks (default), albums, artists, playlists, radios, or public user profiles. |
sourcestring | Search reads keyword results. Charts reads Deezer's global or per-genre charts for the entity type above (charts cover tracks, albums, artists and playlists). |
chartGenreIdinteger | Deezer genre id whose chart to read (0 = all genres). Find ids via a genre URL like https://www.deezer.com/en/genre/116 - the number at the end is the id. |
urlsarray | Paste track, album, artist, playlist, radio, genre, chart, search or public user-profile URLs from deezer.com or api.deezer.com (e.g. https://www.deezer.com/track/3135556). Playlists and albums return the collection record plus one row per track. Genre channel pages (/channels/rap) are matched to a catalog genre and return that genre's tracks chart. Podcast and share links are skipped with a warning. |
Show 23 more inputs
| Input | What it controls |
|---|---|
startUrlsarray | Alias for Deezer URLs. When set without keywords and without a mode, the run reads these links in URL mode. |
includeArtistReleasesboolean | When an artist link is pasted, also return one album row per release in their discography (paged). Off by default. |
includeArtistProfileboolean | Also read each artist's Deezer page and fill bio, status and social (website, Twitter, Facebook links). Works for artist rows in every mode. Adds one page read per artist, so runs are slower; no extra charge. Artists without a bio, status or links keep those fields empty. Off by default. |
includeUserCollectionsboolean | When a user-profile link is pasted, also return one playlist row per public playlist they published. Off by default. |
excludeExplicitboolean | Drop records flagged explicit. Off by default. |
minDurationSecinteger | Keep only records at least this many seconds long (tracks, and track rows of playlists/albums). Leave 0 to disable. |
maxDurationSecinteger | Keep only records at most this many seconds long. Leave 0 to disable. |
minFansinteger | Artist rows only: keep artists with at least this many fans. 0 disables the filter; other record kinds are unaffected. |
sortBystring | Relevance keeps the catalog's own ranking (default). Title and Duration sort ascending; Fans and Rank sort highest first (rows without the value go last). |
fetchDetailsboolean | In search mode, also open each track's own endpoint for BPM, the full contributor list, ISRC, release date, disk and track positions, and the per-country availability list. Adds one request per track and a per-track surcharge. Off by default. |
includeLyricsboolean | Also return each track's lyrics: plain text, time-synced LRC lines (when Deezer has them), songwriters and publisher. Works in every mode, including album, playlist and chart track rows. Lyrics are licensed per country, so the connection's exit country decides which tracks have them. Read in batches of 25 tracks, so it adds very little run time. Charged per track where lyrics were found; tracks without lyrics are not charged. Off by default. |
lyricsWordTimingboolean | With Include lyrics on, also return per-word start and end times (milliseconds) for tracks where Deezer has them, in the lyricsWords field: one entry per line, each with its words. Most popular tracks have word timing. No extra charge; rows get larger. Off by default. |
maxItemsinteger | Maximum number of records to return across the whole run. This is the run's cap. Use 0 for unlimited. |
maxPagesinteger | Maximum number of result pages read per keyword or link. 0 means no limit, which is the default: the run then stops only at Max records, at the end of the results, or when a page returns nothing new. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large crawl that stopped part-way: this run skips records already collected there and returns only the remaining ones. For recurring monitoring of the same search instead, use Incremental changes below (the two are mutually exclusive once Incremental has saved state). |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns every matching record as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED records, which is how a track-listing or release-detail change is spotted. Records are compared on their content; rank, fan counts, lyrics, the signed preview link and the order of countries and genres are not compared. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the mode, keywords, links and filters, so different searches never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max records capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you want removal tracking. |
ignoreFieldsForChangesarray | Optional. Field names that must not make a record count as UPDATED, for example description or trackTitles. Use a dotted path for a nested value. The fields still appear in every row; they are only left out of the comparison and out of changedFields. Rank, fan counts, lyrics, the signed preview link and the order of countries and genres are always left out already. |
mcpConnectorsarray | Optional. Each selected connector receives a condensed summary per record; the full record always stays in the dataset. Leave empty to skip. |
notionParentPageUrlstring | URL (or id) of the Notion page under which record pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on records written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
ididdeezerTypeType (text)titleTitleurlLink (link)durationSecDuration (s) (number)explicitLyricsExplicit (boolean)rankRank (number)isrcISRC (text)previewUrlPreview (link)releaseDateReleased (date)bpmBPM (number)gaingainShow 49 more fields
diskNumberdiskNumbertrackPositiontrackPositionartistIdartistIdartistNameArtist (text)artistUrlartistUrlartistFansartistFansartistAlbumCountartistAlbumCountalbumIdalbumIdalbumTitleAlbum (text)albumUrlalbumUrllabellabelcopyrightcopyrightalbumTrackCountTracks in album (number)genresgenrescontributorNamescontributorNamesavailableCountriesavailableCountriescollectionContextFrom collection (text)trackIdstrackIdstrackTitlestrackTitlesdescriptiondescriptionfansFans (number)creatorIdcreatorIdcreatorNamecreatorNameplaylistPublicplaylistPubliccollaborativecollaborativeuserNameuserNameuserCountryuserCountrysourceQueryQuery (text)chartGenreIdchartGenreIddetailFetchedDetail fetched (boolean)lyricsStatusLyrics status (text)lyricsLyrics (text)lyricsSyncedlyricsSyncedlyricsSyncTypeLyrics sync (text)lyricsWriterslyricsWriterslyricsCopyrightlyricsCopyrightlyricsWordslyricsWordschangeTypeChange type (incremental mode) (text)changedFieldsChanged fields (incremental mode) (text)firstSeenAtFirst seen (incremental mode) (text)lastSeenAtLast seen (incremental mode) (text)nameName (text)fansCountFans (number)hasSmartRadioSmart radio (boolean)imagesImages (array)bioBio (text)onTourOn tour (boolean)statusStatus (text)socialSocial (object)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"id": "track:3135556",
"deezerType": "track",
"title": "One More Time",
"url": "https://www.deezer.com/track/3135556",
"durationSec": 320,
"explicitLyrics": false,
"isrc": "GBDUW0000059",
"previewUrl": "https://cdns-preview-d.dzcdn.net/stream/track.mp3",
"releaseDate": "2001-03-07",
"bpm": 122.7,
"artistId": 27,
"artistName": "Daft Punk",
"artistUrl": "https://www.deezer.com/artist/27",
"artistFans": 4500000,
"albumId": 302127,
"albumTitle": "Discovery",
"albumUrl": "https://www.deezer.com/album/302127",
"label": "Parlophone (France)",
"copyright": "(C) 2001 Daft Life Ltd.",
"genres": [
"Dance",
"Electronic"
],
"contributorNames": [
"Daft Punk"
],
"availableCountries": [
"US",
"GB",
"DE"
],
"collectionContext": null,
"detailFetched": true,
"changeType": null,
"changedFields": [],
"firstSeenAt": null,
"lastSeenAt": null
}Ways to use this data
- Music analytics: build catalogs of tracks, albums and artists with popularity rank, fan counts and chart positions for trend research.
- Playlist monitoring: walk any public playlist on a schedule and get only the tracks added, removed or reordered since the last run.
- Catalog enrichment: attach BPM, ISRC, contributors and release metadata to your own music database.
- Chart tracking: follow the global or per-genre charts daily and diff what moved.
- Content and media tooling: feed previews, cover art and canonical links into apps, bots or newsletters.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Deezer Scraper return?
The documented output for Deezer Scraper includes id, type, title, link, duration (s), explicit, rank and isrc. Availability of each field depends on the source page and the selected mode.
How much does Deezer Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get word-by-word (karaoke) timing?
Yes. Also turn on Lyrics: word-level timing and each track with word timing gets lyricsWords: every line with its start and end in milliseconds, and every word inside it with its own start and end. lyricsSyncType: "word" tells you which tracks have it; most popular tracks do. It costs nothing extra but makes each row larger.
Can I get podcasts or shows?
No. Deezer retired the public podcast endpoints: the API answers with an error for every podcast id, and podcast search is rejected. Only the music catalog (tracks, albums, artists, playlists, radios, charts, public profiles) is covered.
Can I get only new or changed tracks on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated records, and unchanged ones are not billed.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
