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.

Data fields

FieldTypeDescription
recordTypestring | nullWhether this row represents a public SoundCloud track, playlist, or user.
trackIdinteger | nullLegacy numeric SoundCloud track identifier.
trackUrnstring | nullStable SoundCloud track URN.
trackTitlestring | nullPublic track title.
urlstring | nullCanonical public SoundCloud URL.
permalinkstring | nullTrack permalink slug.
apiUristring | nullSoundCloud API resource URI when supplied.
descriptionstring | nullPublic track description.

Input preview

queriesSearch queries
playlistQueriesPlaylist search queries
profileUrlsPublic profile URLs
trackUrlsDirect track URLs
playlistUrlsPlaylist URLs
userQueriesUser search queries

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

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.

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 group Output fields
Track identity trackId, trackUrn, trackTitle, url, permalink, apiUri
Descriptive metadata description, createdAt, displayDate, durationMs, bpm, keySignature, genre, tags
Engagement playbackCount, likesCount, repostsCount, commentCount, downloadCount
Rights and availability license, sharing, embeddableBy, access, availableCountryCodes, revealStats, revealComments
Release and publisher labelName, metadataArtist, release, releaseDate, purchaseTitle, purchaseUrl, publisher and ISRC fields
Media original and high-resolution artwork/avatar URLs, waveformUrl
Artist profile numeric ID, stable URN, username, display name, public bio/location, profile URL, counts, verification, plan, and website
Playlist context playlist ID/URN, title, URL, description, artwork, genre, tags, duration, track/like/repost counts, dates, license, and owner
Playlist-search records recordType: playlist plus public playlist identity, metadata, engagement, owner, album/set type, and rank
User-search records recordType: user plus public identity, bio, location, profile URL, avatar, audience/catalog counts, verification, plan, and website
Chart context chartKind, chartGenre, and original global New & hot rank
Run context sourceType, 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

Setting JSON key What it controls
Search queries queries One or more public track searches.
Playlist search queries playlistQueries Playlist, album, genre, mood, curator, or campaign keywords; produces playlist records.
Public profile URLs profileUrls SoundCloud profile pages whose public tracks should be collected.
Direct track URLs trackUrls Known public SoundCloud tracks to resolve directly.
Playlist URLs playlistUrls Public playlist or album URLs whose tracks and playlist context should be exported.
User search queries userQueries Artist, label, creator, or profile keywords; produces user records.
Direct user URLs userUrls Known public SoundCloud profiles to resolve as standalone user records.
Chart genres chartGenres all-music for the full New & hot chart, or genre names/slugs to filter its ranked tracks.
Maximum records maxItems Total unique paid track, playlist, or user rows across every source; 1–1,000.
Genres genres Optional genre filters for keyword searches.
Tags tags Optional tag filters for keyword searches.
Minimum BPM bpmFrom Lowest accepted published tempo.
Maximum BPM bpmTo Highest accepted published tempo.
Minimum duration durationFromMs Shortest accepted duration in milliseconds.
Maximum duration durationToMs Longest accepted duration in milliseconds.
Created on or after createdAtFrom Earliest upload date, YYYY-MM-DD.
Created on or before createdAtTo Latest upload date, YYYY-MM-DD.
Playback access access Any combination of playable, preview, and blocked.
Work budget maxRuntimeSecs Active 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 configuration proxyConfiguration Optional 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.

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.

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.

Common questions

Questions and answers reused from the canonical actor README.

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.