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

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

Search and export public SoundCloud tracks, playlists, users, artist catalogs, playlist contents, and New & hot chart data with engagement, genre, BPM, release, access, and ranking fields.

This Actor reads public SoundCloud web data. Users do not provide a SoundCloud login, cookies, client ID, client secret, or Artist Pro account.

At a glance

  • Search tracks: Run multiple keyword, artist, genre, mood, or campaign searches.
  • Search playlists and albums: Find public sets by playlist, album, genre, mood, curator, or campaign keywords.
  • Resolve track URLs: Paste known public tracks and export one complete metadata row per URL.
  • Extract playlists and albums: Export every public track with the parent playlist's title, owner, counts, dates, tags, artwork, and license.
  • Search users separately: Find public artist, label, and creator profiles as user rows with profile and audience fields.
  • Resolve user URLs: Paste known public profile URLs and export one complete user row per URL.
  • Follow New & hot: Export SoundCloud's current global ranking or filter its ranked tracks by published genre.
  • Collect profile tracks: Export tracks published on one or more public SoundCloud profiles.
  • Filter precisely: Limit keyword searches by genre, tags, BPM, duration, upload date, and playback access.
  • Measure engagement: Save plays, likes, reposts, comments, downloads, and artist follower counts when visible.
  • Keep stable identifiers: Receive SoundCloud URNs alongside backward-compatible numeric IDs and canonical URLs.
  • Export anywhere: Download JSON, CSV, Excel, or XML; use the Apify API, schedules, webhooks, or MCP.

The Actor exports metadata only. It does not download audio, access private tracks, collect login sessions, or bypass playback restrictions.

Ready-to-run examples

View all SoundCloud scraper examples.

Example input

{
"trackUrls": [
{ "url": "https://soundcloud.com/chillhopdotcom/anbuu-monsieur-teddy-high-tide-1" }
],
"playlistQueries": ["chillhop essentials"],
"playlistUrls": [
{ "url": "https://soundcloud.com/chillhopdotcom/sets/chillhop-essentials-summer-2026" }
],
"userQueries": ["chillhop"],
"userUrls": [
{ "url": "https://soundcloud.com/chillhopdotcom" }
],
"chartGenres": ["Hip-hop & Rap"],
"maxItems": 20,
"maxRuntimeSecs": 240,
"proxyConfiguration": { "useApifyProxy": false }
}

All source modes can be combined under one maxItems limit. Track-search filters apply only to queries; playlist/user search, direct URLs, playlist/profile catalogs, and charts retain their published source order.

Example output

{
"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.

What data can you export?

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.

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.
Proxy configurationproxyConfigurationOptional request routing; direct traffic is the default.

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.

Common workflows

  • Genre and mood research: Search several genre or mood terms, then compare plays, likes, BPM, tags, and artist followers.
  • Artist catalog monitoring: Schedule a profile URL input and compare stable track URNs between datasets.
  • Playlist analysis: Export playlist membership together with track, artist, release, and engagement metadata.
  • Playlist discovery: Search playlists or albums by genre, mood, curator, artist, or campaign term and receive standalone playlist rows.
  • Artist and label discovery: Use userQueries to build public creator datasets without mixing user rows into track search.
  • Known-profile lookup: Use userUrls for one current profile row, or profileUrls when you want that profile's public tracks.
  • Trending research: Use chartGenres: ["all-music"] for the live global New & hot chart, or a genre such as Hip-hop & Rap for ranked genre matches.
  • Campaign reporting: Search a campaign, brand, or release term and preserve rank plus engagement snapshots.
  • Music metadata enrichment: Export ISRC, label, release, license, key, tempo, media, and artist fields for known search terms.
  • Public-playback discovery: Set access to playable or preview to exclude metadata-only blocked tracks.

Search filters

The Actor applies genre, tag, BPM, duration, creation-date, and access filters to track-search rows. A track can still have missing output values when its uploader did not publish a field.

Use milliseconds for durations:

  • 30 seconds: 30000
  • 3 minutes: 180000
  • 10 minutes: 600000

For dates, use YYYY-MM-DD. Reversed ranges fail before the run is charged.

Pricing

The Actor uses pay-per-event pricing:

  • start: $0.005 once per run.
  • item: charged only when one track, playlist, or user row is successfully stored in the default dataset.

Error messages, skipped duplicates, malformed records, checkpoints, and RUN_SUMMARY are not item events.

Public plan contextPrice per saved recordApproximate price per 1,000 records
Free$0.000575$0.575
Starter / Bronze$0.000500$0.500
Scale / Silver$0.000390$0.390
Business / Gold$0.000300$0.300
Platinum$0.000200$0.200
Diamond$0.000140$0.140

Platform compute and optional proxy traffic are separate Apify usage. No residential proxy is enabled by default. The shared web-configuration cache stores less than 1 KB, normally performs one read per run and one refresh write per day, and does not create a paid Actor event.

Reliability and run lifecycle

The Actor validates input before charging or requesting SoundCloud data. It then:

  • reuses a small shared copy of SoundCloud's current public web configuration and refreshes it only when stale or rejected;
  • retries bounded transient failures and honors Retry-After;
  • classifies authentication, forbidden, removed, malformed, and non-JSON responses;
  • rejects unsafe pagination hosts and repeated pagination URLs;
  • saves and charges each accepted row atomically;
  • deduplicates by stable URN, then numeric ID, then canonical URL;
  • isolates one failed query, URL, chart entry, or profile without discarding valid rows from other sources;
  • reserves at least 30 seconds for checkpoint and summary persistence;
  • writes RUN_CHECKPOINT when work remains and RUN_SUMMARY for diagnostics.

Unexpected zero-result runs fail with an actionable message instead of reporting misleading success.

Dataset views and run records

The default dataset provides:

  • SoundCloud records: core identity, artist, genre, tempo, engagement, access, playlist, chart, and source fields.
  • Engagement metrics: track and artist counts for analysis and monitoring.
  • SoundCloud users: public user-search and direct-user results with audience/catalog fields.
  • Playlists and playlist tracks: standalone playlist-search rows plus track rows with parent playlist context.
  • Chart tracks: New & hot rows with genre and original rank.
  • Complete SoundCloud data: every published output field.

The default key-value store can contain:

  • RUN_SUMMARY: counts, filters, source errors, and deadline status.
  • RUN_CHECKPOINT: pending sources and deduplication state when the safe deadline stops new work.

Tips for better results

  • Begin with 20–50 records before increasing maxItems; larger runs remain bounded by the shared runtime and checkpoint.
  • Use specific genre, mood, artist, or campaign phrases.
  • Combine searches with profile URLs when you need both discovery rank and catalog coverage.
  • Keep direct traffic unless your own network requires proxy routing.
  • Use stable trackUrn values for monitoring and joins; numeric IDs remain for legacy consumers.
  • Treat engagement counts as snapshots because they can change after the run.

Limits and practical notes

  • Public metadata only; no private tracks, audio downloads, cookies, or user-login sessions.
  • Maximum 1,000 saved records and 50 combined sources per run.
  • Track filters apply only to track-search rows and do not alter playlist/user search, direct URLs, profile catalogs, playlist extraction, or charts.
  • SoundCloud currently publishes one server-rendered global New & hot chart. Genre values filter those ranked tracks by their published genre; they are not a substitute for SoundCloud's discontinued dedicated genre or Top 50 pages.
  • Quiet-mode tracks can hide plays, likes, or comments; check revealStats, revealComments, and warnings.
  • Country availability and playback access can vary by region and over time.
  • SoundCloud can change or throttle its public web data service without notice. The Actor bounds retries and stops safely rather than amplifying a limit.
  • Comments, follower lists, private entities, contact enrichment, audio downloads, and stream-resource rows are outside the contract.

Schedule SoundCloud monitoring

Create an Apify Schedule with the same queries or profile URLs and a bounded maxItems. Export each run’s dataset to a warehouse or spreadsheet, then join by trackUrn to identify new tracks or compare engagement snapshots.

For alerting, attach a webhook to successful Actor runs and inspect RUN_SUMMARY before processing the dataset.

API usage

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'],
genres: ['Electronic'],
bpmFrom: 100,
bpmTo: 140,
maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/soundcloud-tracks-search-scraper').call(run_input={
'profileUrls': [{'url': 'https://soundcloud.com/chillhopdotcom'}],
'access': ['playable', 'preview'],
'maxItems': 25,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['trackTitle'], item['playbackCount'])

cURL

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

Keep your Apify token in an environment variable or secret manager, not source code.

Use with MCP and AI agents

The official Apify MCP server can expose only this Actor:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=fetch_cat/soundcloud-tracks-search-scraper"

Claude Desktop, Cursor, or VS Code configuration:

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

Example prompts:

  • “Find 25 playable ambient techno tracks between 100 and 140 BPM and rank them by plays.”
  • “Export public tracks from this SoundCloud profile with ISRC, release, and engagement fields.”
  • “Export every public track from this playlist with playlist and artist context.”
  • “Search SoundCloud for ambient playlists and return the most-liked public sets.”
  • “Find SoundCloud users matching this label name and rank them by followers.”
  • “Resolve this SoundCloud profile URL to one current user record.”
  • “Export the current New & hot Hip-hop & Rap tracks with their original global chart ranks.”

Responsible use

Use exported metadata only within the authorization, licenses, privacy obligations, and intellectual-property rights that apply to your project. Do not use it for spam, harassment, unauthorized audio copying, rights circumvention, or decisions that unfairly affect individuals.

This independent Actor is not SoundCloud and does not imply SoundCloud endorsement. It accesses public web data without asking customers for SoundCloud credentials.

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 a resumable checkpoint.

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

If a run fails, returns unexpected zero output, or produces incorrect fields, open an issue or report a bug from the Actor page. Include:

  • the Apify run ID or run URL;
  • the input JSON with secrets removed;
  • the expected output;
  • the actual output returned by the Actor;
  • one reproducible public URL or search query.

Do not include SoundCloud or Apify credentials in a support report.