SoundCloud Scraper: Tracks, Playlists & Users
Pricing
from $0.30 / 1,000 record saveds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
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
- Search SoundCloud lofi tracks
- Search SoundCloud playlists by keyword
- Export tracks from a SoundCloud playlist
- Get a SoundCloud user profile from its URL
- Find trending Hip-hop & Rap tracks
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 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
userQueriesto build public creator datasets without mixing user rows into track search. - Known-profile lookup: Use
userUrlsfor one current profile row, orprofileUrlswhen you want that profile's public tracks. - Trending research: Use
chartGenres: ["all-music"]for the live global New & hot chart, or a genre such asHip-hop & Rapfor 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
accesstoplayableorpreviewto 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.005once 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 context | Price per saved record | Approximate 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_CHECKPOINTwhen work remains andRUN_SUMMARYfor 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
trackUrnvalues 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, andwarnings. - 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 ApifyClientclient = 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.
Related Actors
- Spotify Scraper
- YouTube Search Results Scraper
- YouTube Video Details Scraper
- TikTok Video Scraper
- Instagram Profile Posts Scraper
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.