TIDAL Scraper icon

TIDAL Scraper

Scrape TIDAL tracks, albums, artists, playlists and public mixes by search phrase or URL. Extract structured catalogue metadata with optional track…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

TIDAL Scraper at a glance

TIDAL Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes recordtype, title, url, countrycode and artists, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 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
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
18 options
Run success
100.0% of completed public runs in the last 30 days

Scrape TIDAL tracks, albums, artists, playlists and public mixes by search phrase or URL. Extract structured catalogue metadata with optional track lists, recurring change detection and app exports for ongoing music data workflows.

What TIDAL Scraper can do

  • Four result types. Tracks, albums, artists and playlists.
  • Direct links. Individual catalogue entities and public mixes.
  • Collections. Top music and New music collection records with their source section.
  • Track lists. Optional artist top tracks, album tracks and playlist contents.
  • Resume and monitor. Resume interrupted collections or monitor changes across recurring runs.
  • Exports. JSON, CSV and Excel dataset exports, plus optional app summaries.

Choose what to collect

These inputs let you configure TIDAL Scraper - Tracks, Albums, Artists & Playlists. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch by phrases or collect TIDAL links.

Choices: search, url

queriesarraySearch mode only. Enter up to 50 phrases. Multiple phrases share the result limit.
urlsarrayURL mode only. Multi-URL supported. Artist, album, track, playlist, mix, search, Top music and New music links are supported. Search phrases are ignored. A search link's page parameter sets the starting page. Left untouched, URL mode scrapes the six example links (album, artist, track, playlist, a legacy /browse/ artist link and an album on the listen host).
searchTypestringResult type for phrase searches and pasted search links. Entity links keep their own type.

Choices: tracks, albums, artists, playlists

countryCodestringTwo-letter country code such as US or AU. Applies to both modes; availability differs by country.
maxItemsintegerTotal dataset record limit, including EXPIRED rows. Zero removes this limit; the page cap of 1000 pages per source still applies. Values above 1,000,000 are not accepted.
maxPagesintegerZero uses the built-in hard cap of 1000 pages per source. Set a smaller value for a bounded sample; larger values are clamped to 1000. The record limit is the primary cap.
Show 11 more inputs
More input fields
InputWhat it controls
fetchDetailsbooleanAdds full metadata and artist, album or playlist track lists. Successfully enriched records saved add a detail-enrichment surcharge. Mix links include their available track list without this surcharge.
maxTracksintegerMaximum tracks inside an enriched artist, album or playlist, or a mix. Does not change dataset row count. tracksComplete states whether the whole available list is included.
resumeFromRunIdstringSkip IDs collected in a previous run or dataset. For local datasets use local:NAME. Use Incremental mode for recurring monitoring instead. Combining Resume with an existing incremental baseline is rejected.
incrementalModebooleanFirst run emits NEW; later runs emit NEW, UPDATED and REAPPEARED records. A record is UPDATED when any output field changes, except scrape metadata, the raw source copy, query/source labels, popularity counters and fields listed under Ignore fields. Use Resume above to continue one run. Avoid overlapping runs of the same scope.
stateKeystringOptional incremental campaign name. Country, mode, phrases, links and detail settings always remain isolated, even with a matching label. Does not affect Resume.
emitUnchangedbooleanIncremental mode only. Also return and bill extra UNCHANGED rows. Off by default; unrelated to Resume.
emitExpiredbooleanIncremental mode only. Also return and bill synthetic EXPIRED rows after a complete nonempty scan. Bounded, failed or resumed scans never expire records.
ignoreFieldsForChangesarrayIncremental mode only. Field names left out when deciding whether a record changed; they stay in the output. Use dotted paths for nested fields, for example tracks.duration. Popularity counters are always left out of the comparison. Changing this list never marks stored records as updated.
mcpConnectorsarrayExport summaries via Model Context Protocol (MCP) connectors. Authorize under Apify Settings > API & Integrations, then select a connector. Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). Leave empty to skip. Complete dataset output is unchanged.
notionParentPageUrlstringNotion page URL or ID for new summary pages. Required for Notion; ignored by other connectors.
maxNotifyListingsintegerMaximum summaries per connector. 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.

recordTyperecordType (text)
titletitle (text)
urlurl (link)
countryCodecountryCode (text)
artistsartists (array)
durationduration (text)
releaseDatereleaseDate (text)
numberOfTracksnumberOfTracks (text)
audioQualityaudioQuality (text)
isrcisrc (text)
descriptiondescription (text)
tracksTotaltracksTotal (text)
Show 18 more fields
tracksCompletetracksComplete (text)
changeTypechangeType (text)
changedFieldschangedFields (array)
firstSeenAtfirstSeenAt (text)
lastSeenAtlastSeenAt (text)
scrapedAtscrapedAt (text)
albumalbum (text)
explicitexplicit (text)
popularitypopularity (text)
trackNumbertrackNumber (text)
volumeNumbervolumeNumber (text)
copyrightcopyright (text)
upcupc (text)
imageUrlimageUrl (image)
creatorcreator (text)
mixTypemixType (text)
enrichmentStatusenrichmentStatus (text)
trackstracks (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "track:00000001",
  "entityId": "00000001",
  "recordType": "track",
  "title": "Example Song",
  "url": "https://tidal.com/track/00000001",
  "countryCode": "US",
  "artists": [
    {
      "id": 1,
      "name": "Example Artist"
    }
  ],
  "album": {
    "id": 2,
    "title": "Example Album"
  },
  "duration": 240,
  "releaseDate": null,
  "explicit": false,
  "popularity": 50,
  "numberOfTracks": null,
  "audioQuality": "LOSSLESS",
  "audioModes": [
    "STEREO"
  ],
  "isrc": "XXAAA0000001",
  "upc": null,
  "copyright": "Example rights holder",
  "description": null,
  "imageUrl": null,
  "creator": null,
  "mixes": null,
  "mixType": null,
  "trackNumber": 1,
  "volumeNumber": 1,
  "sourceUrl": null,
  "query": "Example Artist",
  "sourceSection": null,
  "tracks": [],
  "tracksTotal": null,
  "tracksComplete": null,
  "raw": {
    "id": 1,
    "title": "Example Song",
    "duration": 240
  },
  "scrapedAt": "2026-01-01T00:00:00+00:00",
  "changeType": "NEW",
  "changedFields": [],
  "firstSeenAt": "2026-01-01T00:00:00+00:00",
  "lastSeenAt": "2026-01-01T00:00:00+00:00"
}

Ways to use this data

  • Music catalogue research and data science: build structured datasets of tracks, albums, artists and playlists for analysis or catalogue mapping.
  • Release monitoring: track new albums, playlist updates or Top/New music collection changes on a schedule using incremental mode.
  • Music discovery tools: power search, recommendation or a companion catalogue browser with structured track, album and artist metadata.
  • Rights and metadata verification: check ISRC, UPC, release dates and copyright lines against your own catalogue records.
  • Playlist and mix tracking: monitor public playlists or artist-radio mixes for track list changes over time.
  • Content and editorial teams: source artwork links, descriptions, track lists and artist names for editorial or promotional use.

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 TIDAL Scraper return?

The documented output for TIDAL Scraper includes recordtype, title, url, countrycode, artists, duration, releasedate and numberoftracks. Availability of each field depends on the source page and the selected mode.

How much does TIDAL Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 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 only new or changed catalogue entries on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated or reappeared records; unchanged ones are suppressed and not billed unless you turn that on too.

Should I use Resume or Incremental mode?

Use Resume to continue one interrupted run without paying twice for what it already collected. Use Incremental mode to monitor the same catalogue scope across separate scheduled runs. A first incremental baseline can be bootstrapped with Resume, but Resume cannot be combined with an existing incremental baseline.

Why did my run fail instead of returning an empty dataset?

If the catalogue refuses every request, the run stops with a clear message so "no results" is never confused with "nothing could be read". Run it again in a few minutes. If only some phrases or links could be read, the records that were found are still saved.

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 summaries into Notion, Linear or Airtable.

Ready to collect with TIDAL Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.