SoundCloud Scraper: Tracks, Playlists & Users avatar

SoundCloud Scraper: Tracks, Playlists & Users

Pricing

from $0.30 / 1,000 record saveds

Go to Apify Store
SoundCloud Scraper: Tracks, Playlists & Users

SoundCloud Scraper: Tracks, Playlists & Users

Export public SoundCloud tracks, playlist contents, users, profile catalogs, and New & hot chart data with engagement, release, media, and artist metadata.

Pricing

from $0.30 / 1,000 record saveds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

6

Monthly active users

8 days ago

Last modified

Share

Search and export public SoundCloud tracks, playlists and users with SoundCloud Scraper. Collect artist catalogs, playlist contents and New & hot chart metadata with engagement, genre, BPM, release, access and ranking fields. Export the results for music research, discovery or reporting.

This Actor returns public metadata, not audio downloads. You do not need a SoundCloud login, cookies, client ID, client secret or Artist Pro account.

Quick start

Start with one search and a small record limit:

{
"queries": ["lofi beats"],
"maxItems": 20
}

Run the Actor, then open its dataset to inspect the records. Track-search filters apply only to queries. Other source modes keep their source order.

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose an example to start with a small, preconfigured input.

What you get

  • Track discovery: Search keywords, artist names, genres or moods and filter track-search results by genre, tags, BPM, duration, upload date and playback access.
  • Artist catalogs: Collect tracks uploaded by public profiles, or resolve known track URLs.
  • Playlists and albums: Search public sets as standalone playlist records, or export their available tracks with parent-playlist context.
  • User discovery: Search artists, labels and creators, or resolve a known public profile as a user record.
  • New & hot charts: Collect the global ranking or filter ranked tracks by published genre while keeping the original global rank.
  • Analysis-ready metadata: Save stable identifiers, canonical URLs, engagement snapshots, music metadata, artist details and public artwork references when available.

Who is it for?

  • Music researchers reviewing public catalogs, genres, tempo and engagement.
  • Labels and curators shortlisting available artists, playlists and tracks.
  • Campaign analysts retaining source-backed release and audience snapshots.
  • Data developers joining stable SoundCloud identifiers in their own datasets.

How you can use the data

  • Inspect a lofi or ambient-techno track sample. Use the existing small keyword examples and retain trackUrn, source URL, genre, BPM and available engagement. Track-search filters can narrow that mode, while quiet or missing statistics remain unknown rather than zero audience.
  • Choose catalog rows versus a profile deliberately. The existing chillhopdotcom URL in profileUrls requests uploaded tracks, while userUrls returns one standalone user record. Keep recordType and sourceType so a profile is not mistaken for another track or a complete follower list.
  • Separate playlist discovery from its contents. The existing chillhop essentials playlist query returns standalone playlist records. A known playlist URL instead requests its available tracks with parent context. Keep playlist identifiers and shared caps rather than assuming every playlist track is returned.
  • Review the actual New and hot chart context. All-music uses the current global chart, and other genre values filter that list while preserving original rank. Keep rank and chartGenre without relabeling the subset as a dedicated genre or discontinued Top 50 ranking. Reports and repeated-export comparisons remain your own work.

Input settings

SettingJSON keyWhat it controls
Search queriesqueriesOne or more public track searches.
Playlist search queriesplaylistQueriesPlaylist, album, genre, mood, curator, or campaign keywords. produces playlist records.
Public profile URLsprofileUrlsSoundCloud profile pages whose public tracks should be collected.
Direct track URLstrackUrlsKnown public SoundCloud tracks to resolve directly.
Playlist URLsplaylistUrlsPublic playlist or album URLs whose tracks and playlist context should be exported.
User search queriesuserQueriesArtist, label, creator, or profile keywords. produces user records.
Direct user URLsuserUrlsKnown public SoundCloud profiles to resolve as standalone user records.
Chart genreschartGenresall-music for the full New & hot chart, or genre names/slugs to filter its ranked tracks.
Maximum recordsmaxItemsTotal unique paid track, playlist, or user rows across every source. 1–1,000.
GenresgenresOptional genre filters for keyword searches.
TagstagsOptional tag filters for keyword searches.
Minimum BPMbpmFromLowest accepted published tempo.
Maximum BPMbpmToHighest accepted published tempo.
Minimum durationdurationFromMsShortest accepted duration in milliseconds.
Maximum durationdurationToMsLongest accepted duration in milliseconds.
Created on or aftercreatedAtFromEarliest upload date, YYYY-MM-DD.
Created on or beforecreatedAtToLatest upload date, YYYY-MM-DD.
Playback accessaccessAny combination of playable, preview, and blocked.
Work budgetmaxRuntimeSecsActive work time, 45–600 seconds. default 240. Use a larger opt-in budget for high-volume runs. the default platform timeout is 670 seconds.

Add at least one query, URL, or chart genre. The Actor removes blank and duplicate sources and rejects malformed profile, track, playlist, and user URLs before network or paid work.

Combine source modes

Use profileUrls for uploaded tracks and userUrls for standalone profile records. playlistUrls returns playlist tracks, while playlistQueries returns standalone playlists. All sources share the same record limit.

{
"playlistQueries": ["chillhop essentials"],
"userUrls": [{ "url": "https://soundcloud.com/chillhopdotcom" }],
"maxItems": 20
}

Genre, tag, BPM, duration, date and access filters apply only to track keyword searches. Durations use milliseconds. Dates use YYYY-MM-DD. Reversed ranges are rejected.

Output data

Illustrative shape only, not an observed track or promised field coverage:

{
"recordType": "track",
"trackId": 123456,
"trackUrn": "soundcloud:tracks:123456",
"trackTitle": "Example Track",
"url": "https://soundcloud.com/artist/example-track",
"durationMs": 184000,
"bpm": 120,
"genre": "Electronic",
"tags": ["ambient", "techno"],
"playbackCount": 10000,
"likesCount": 500,
"repostsCount": 30,
"access": "playable",
"publisherIsrc": "USABC2600001",
"artistUsername": "artist",
"artistFollowersCount": 4200,
"playlistTitle": "Chillhop Essentials Summer 2026",
"playlistTrackCount": 24,
"sourceType": "playlist",
"source": "https://soundcloud.com/chillhopdotcom/sets/chillhop-essentials-summer-2026",
"rank": 1,
"warnings": [],
"scrapedAt": "2026-07-20T12:00:00.000Z"
}

Optional fields can be null or empty when the uploader does not publish them or has hidden statistics.

Data groupOutput fields
Track identitytrackId, trackUrn, trackTitle, url, permalink, apiUri
Descriptive metadatadescription, createdAt, displayDate, durationMs, bpm, keySignature, genre, tags
EngagementplaybackCount, likesCount, repostsCount, commentCount, downloadCount
Rights and availabilitylicense, sharing, embeddableBy, access, availableCountryCodes, revealStats, revealComments
Release and publisherlabelName, metadataArtist, release, releaseDate, purchaseTitle, purchaseUrl, publisher and ISRC fields
Mediaoriginal and high-resolution artwork/avatar URLs, waveformUrl
Artist profilenumeric ID, stable URN, username, display name, public bio/location, profile URL, counts, verification, plan, and website
Playlist contextplaylist ID/URN, title, URL, description, artwork, genre, tags, duration, track/like/repost counts, dates, license, and owner
Playlist-search recordsrecordType: playlist plus public playlist identity, metadata, engagement, owner, album/set type, and rank
User-search recordsrecordType: user plus public identity, bio, location, profile URL, avatar, audience/catalog counts, verification, plan, and website
Chart contextchartKind, chartGenre, and original global New & hot rank
Run contextsourceType, source, query, profileUrl, rank, warnings, scrapedAt

High-resolution media fields are additive. The original artworkUrl and artistAvatarUrl values remain unchanged for backward compatibility.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

The Actor uses pay-per-event pricing. The start event is a one-time startup charge, including valid runs with no matching records.

The item event charges for each track, playlist or user row successfully stored in the default dataset. Skipped duplicates, malformed records, errors and run summaries are not item events.

See the live Pricing tab for current rates and discounts.

Use maxItems, the work budget and an Apify run charge limit to bound your run. A charge limit does not replace the work budget.

Tips for best results

  • Start small. Try 20 records before increasing the limit. All sources share that limit.
  • Use specific phrases. Artist, genre, mood or campaign terms make track discovery easier to review.
  • Choose the right source field. Use profile URLs for catalogs and direct user URLs for profile records.
  • Keep stable identifiers. Use trackUrn for joins and comparisons between datasets.
  • Treat counts as snapshots. Engagement and audience values can change after collection.
  • Check the run summary. RUN_SUMMARY explains missing sources, empty results and partial runs. Restarting a run does not renew its original work budget.

Limits and caveats

  • Public metadata only. No private tracks, login sessions, audio downloads, comments, follower lists or contact enrichment.
  • Up to 1,000 unique saved records and 50 combined sources per run. Source availability, filters and the work budget may reduce the total.
  • Track-search filters do not filter playlist or user searches, direct URLs, profile catalogs, playlist extraction or charts.
  • Charts use the global New & hot ranking. Genre values filter that list by published genre, not dedicated genre or Top 50 charts.
  • Missing optional values can be null or empty. Quiet-mode tracks can hide statistics. Check revealStats, revealComments and warnings.
  • Country availability and playback access can vary. SoundCloud may change or throttle public data without notice.
  • Valid no-match searches and unavailable targets can finish successfully with no records and a reason in RUN_SUMMARY. Inaccessibility alone does not establish privacy or deletion.
  • This independent Actor is not affiliated with or endorsed by SoundCloud. Playback restrictions and rights to reuse exported data still apply.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/fetch_cat~soundcloud-tracks-search-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["lofi beats"],"maxItems":20}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/soundcloud-tracks-search-scraper').call({
queries: ['ambient techno'],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/soundcloud-tracks-search-scraper").call(run_input={
"profileUrls": [{"url": "https://soundcloud.com/chillhopdotcom"}],
"maxItems": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

MCP and AI agents

You can ask your AI assistant to collect data with SoundCloud Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's SoundCloud Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/soundcloud-tracks-search-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use SoundCloud Scraper by Fetch Cat, or give it the identifier fetch_cat/soundcloud-tracks-search-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Use Fetch Cat’s SoundCloud Scraper to collect up to 5 public ambient techno track-search records. Keep stable IDs, links, tempo and available plays and likes without interpreting hidden statistics as measured zero.”
  • “Collect up to 5 standalone playlists for chillhop essentials. Keep playlist identifiers, owner context and available public counts without downloading audio or treating playlist rows as all their tracks.”
  • “Retrieve https://soundcloud.com/chillhopdotcom as a standalone public user record with a one-row cap. Keep source-linked audience and catalog metadata without collecting uploaded tracks, private account data or a follower list.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Does this Actor require my SoundCloud login or API key?

No. Public searches and public profile-track lists work without a SoundCloud account, login, OAuth token, or customer API key. Do not paste SoundCloud credentials into Actor input.

Can it download SoundCloud audio?

No. It exports public metadata and public media-image or waveform references only.

Can I combine searches, URLs, playlists, charts, and users?

Yes. maxItems is shared across all modes. Duplicate tracks, playlists, and users are saved once by stable identity, in input-source order.

Why did the run return fewer tracks than requested?

The source may contain fewer matching public tracks, filters may narrow the set, duplicates may occur across sources, or the shared run deadline may leave unfinished sources in a checkpoint. A restart retains that original deadline. Inspect RUN_SUMMARY before deciding on a separate bounded run.

Why are fields empty?

Uploaders do not always publish genre, BPM, ISRC, label, release, artwork, location, or engagement values. Quiet mode can intentionally hide statistics.

Does it support playlist search and direct user URLs?

Yes. playlistQueries produces standalone recordType: playlist rows, while playlistUrls produces track rows with parent-playlist context. userQueries searches creators and userUrls resolves known profiles as standalone recordType: user rows. Use profileUrls when you want a profile's uploaded tracks instead.

How does genre chart filtering work?

all-music returns SoundCloud's current global New & hot ranking. Other values filter that live ranked list by each track's published genre while preserving the original global rank. SoundCloud's old Top 50 and dedicated genre pages currently return unavailable responses, so the Actor does not claim those discontinued lists.

Can I export CSV, Excel, JSON, or use an API?

Yes. Apify datasets support CSV, Excel, JSON, XML, RSS, REST API access, SDKs, integrations, schedules, and webhooks.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review from the Actor page to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥