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.
| Input | What it controls |
|---|---|
modestring · required | Search by phrases or collect TIDAL links. |
queriesarray | Search mode only. Enter up to 50 phrases. Multiple phrases share the result limit. |
urlsarray | URL 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). |
searchTypestring | Result type for phrase searches and pasted search links. Entity links keep their own type. |
countryCodestring | Two-letter country code such as US or AU. Applies to both modes; availability differs by country. |
maxItemsinteger | Total 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. |
maxPagesinteger | Zero 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
| Input | What it controls |
|---|---|
fetchDetailsboolean | Adds 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. |
maxTracksinteger | Maximum 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. |
resumeFromRunIdstring | Skip 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. |
incrementalModeboolean | First 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. |
stateKeystring | Optional incremental campaign name. Country, mode, phrases, links and detail settings always remain isolated, even with a matching label. Does not affect Resume. |
emitUnchangedboolean | Incremental mode only. Also return and bill extra UNCHANGED rows. Off by default; unrelated to Resume. |
emitExpiredboolean | Incremental mode only. Also return and bill synthetic EXPIRED rows after a complete nonempty scan. Bounded, failed or resumed scans never expire records. |
ignoreFieldsForChangesarray | Incremental 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. |
mcpConnectorsarray | Export 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. |
notionParentPageUrlstring | Notion page URL or ID for new summary pages. Required for Notion; ignored by other connectors. |
maxNotifyListingsinteger | Maximum 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.
