SoundCloud Scraper: Tracks, Artists, Playlists & Emails
Pricing
from $1.20 / 1,000 track scrapeds
SoundCloud Scraper: Tracks, Artists, Playlists & Emails
Scrape SoundCloud tracks, artists, playlists and trending charts. Plays, likes, reposts, ISRC, label, genre, artist emails from bios. Search with filters or paste any URL. No API key.
Pricing
from $1.20 / 1,000 track scrapeds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
587
Total users
62
Monthly active users
4 hours ago
Last modified
Categories
Features
Share
Extract tracks, playlists, user profiles, and search results from SoundCloud — no API key or login required. Get full metadata: play counts, likes, reposts, comments, genre, tags, ISRC, label and publisher data, creator profiles, and optional artist emails found in bios. Export to JSON, CSV, Excel, or feed into your pipelines.
Try it free on Apify Store. The Apify Free plan's $5 monthly credit covers about 2,000 results.
Best first run: search one artist, playlist, or genre
Start with a single SoundCloud URL or a focused search term and cap the run at 25-50 tracks. You can verify track metadata, artist fields, play counts, likes, reposts, comments, tags, and playlist context before collecting a larger music dataset.
Typical FREE-tier event charge: 50 tracks cost about $0.12 ($0.005 start + 50 × $0.0023/track). The Apify Free plan credit covers multiple small validation runs.
What does SoundCloud Scraper do?
SoundCloud Scraper uses SoundCloud's public API to extract full track, playlist, and user data without a browser or paid API subscription. Just enter a search query or a SoundCloud URL and you get structured data you can use immediately.
Supported scrape modes:
- 🔍 Search tracks — find tracks by keyword, genre, or artist name
- 🎵 Search playlists — find curated playlists matching your query
- 👤 Search users — find artists and creators
- 🎧 Track by URL — scrape full metadata for a specific track
- 📋 Playlist by URL — extract playlist metadata and optionally expand it into public child tracks
- 👤 User profile + tracks — scrape a creator's profile and all their public tracks
- 🔗 Any SoundCloud URLs — paste a mix of track, playlist and artist links; each one is detected for you
- 📈 Trending tracks — export SoundCloud's trending top 100 with rank and score
Unlike web scrapers that break constantly, this actor uses SoundCloud's official internal API — the same one their web player uses — making it reliable and fast.
Who is it for?
Music researchers and analysts tracking trends across genres, monitoring which emerging artists gain traction, or building datasets for music recommendation models.
Music marketing professionals who need to monitor how tracks are performing — play counts, likes, comment velocity — to report on campaigns or identify influential creators to collaborate with.
Podcasters and content creators who want to find popular tracks in specific genres for licensed background music, or track how their own music is performing over time.
Data scientists and developers building music discovery apps, playlist generators, or audio classification datasets who need labeled track metadata at scale without paying for the official SoundCloud API.
Record labels and A&R teams identifying emerging talent by monitoring follower growth, track engagement, and upload frequency across thousands of independent artists.
Why use SoundCloud Scraper?
- ✅ No API key required — SoundCloud's public v2 API works without authentication
- ✅ No login or cookies needed — fully public data extraction
- ✅ Pure HTTP — fast and cheap — no browser overhead, runs on 256 MB
- ✅ Full metadata — play counts, likes, reposts, ISRC, waveform URLs, user bios
- ✅ Pagination support — extract hundreds or thousands of tracks per query
- ✅ 8 scrape modes — search, target specific URLs, or export the trending chart
- ✅ Artist contacts — optional emails found in public bios, plus website and social links
- ✅ Search filters — narrow track searches by genre or tag, upload date, duration and license
- ✅ Past the 300 limit — SoundCloud stops each search at 300 results; track searches here are widened automatically to reach your limit
- ✅ No results, no charge — the run start is charged only with the first saved row
- ✅ Opt-in playlist expansion — set
includePlaylistTracksto return public child tracks after each playlist row - ✅ Export anywhere — JSON, CSV, Excel, Google Sheets, or via API
What data can you extract?
🎧 Track data
| Field | Description |
|---|---|
title | Track title |
url | Full SoundCloud URL |
artworkUrl | Cover art image URL |
description | Track description / tracklist |
genre | Genre classification |
tagList | Array of tags; quoted multi-word tags are preserved as one value |
duration | Duration in milliseconds |
playbackCount | Total plays |
likesCount | Total likes/hearts |
repostsCount | Total reposts |
commentCount | Total comments |
downloadCount | Total downloads |
downloadable | Whether download is enabled |
streamable | Whether streaming is available |
license | License type (e.g., all-rights-reserved, cc-by) |
releaseDate | Original release date |
createdAt | Upload date |
isrc | ISRC music identifier code |
labelName | Record label |
publisherArtist, publisherAlbumTitle, publisherReleaseTitle | Release metadata from the distributor |
upc, explicit, publisherLine, copyrightLine | Release codes and rights lines |
purchaseUrl, purchaseTitle | Buy or smart link set by the artist |
monetizationModel, policy, sharing, embeddableBy, commentable | Availability and monetization settings |
artworkUrlHighRes | Cover art at 500×500 |
fullDuration, displayDate, lastModified, urn | Full length, shown date, last edit, SoundCloud URN |
waveformUrl | URL to waveform JSON data |
userName | Creator username |
userUrl | Creator profile URL |
userFollowersCount | Creator's follower count |
userVerified | Whether creator is verified |
userFullName, userCity, userCountryCode, userDescription | Creator name, location and bio (with includeUserDetails) |
userEmails | Emails found in the creator's bio (with includeUserDetails and includeEmails) |
userFollowingsCount, userTrackCount, userPlaylistCount, userIsPro | Creator counts and Pro status (with includeUserDetails) |
chartRank, chartScore | Position and score, in Trending mode |
📋 Playlist data
| Field | Description |
|---|---|
title | Playlist name |
url | Full SoundCloud URL |
artworkUrl | Cover art image URL |
description | Playlist description |
genre | Genre classification |
duration | Total duration in ms |
trackCount | Number of tracks |
likesCount | Total likes |
isAlbum | Whether it's a released album vs playlist |
publishedAt | Publication date |
userName | Creator username |
👤 User profile data
| Field | Description |
|---|---|
username | SoundCloud username |
fullName | Display name |
url | Profile URL |
avatarUrl | Profile picture URL |
description | Bio text |
city | Location city |
countryCode | Country code |
followersCount | Number of followers |
followingsCount | Accounts they follow |
trackCount | Number of uploaded tracks |
playlistCount | Number of playlists |
likesCount | Total likes given |
verified | Verification status |
isPro | Pro subscription holder |
emails | Emails found in the artist's bio, with includeEmails |
websites | Website and social links on the profile, with includeContactLinks |
avatarUrlHighRes | Profile picture at 500×500 |
commentsCount, lastModified | Comments written and last profile edit |
How much does it cost to scrape SoundCloud?
This actor uses Pay-Per-Event (PPE) pricing. You only pay for results you get.
| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| Run start | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
| Track, playlist, or user item | $0.0023 | $0.002 | $0.00156 | $0.0012 | $0.0008 | $0.00056 |
Estimated FREE-tier event charges: 10 items cost about $0.028, 100 cost $0.235, 500 cost $1.155, and 1,000 cost $2.305. Each estimate is $0.005 start + item count × $0.0023.
Free plan estimate: $5 of platform credit covers approximately 2,170 FREE-tier item events plus one run start, before any other account charges.
Compare to SoundCloud's official API: requires an approved developer application and has strict rate limits. This scraper has no rate limiting issues for typical research volumes.
How to scrape SoundCloud data
- Go to SoundCloud Scraper on Apify Store
- Click Try for free
- Select a scrape mode from the dropdown (e.g., "Search Tracks")
- Enter your search query (e.g., "lofi hip hop") or paste a SoundCloud URL
- Set Max results per query (start with 20 for testing)
- Click Start and wait for results (usually under 30 seconds)
- Download your data as JSON, CSV, or Excel from the Dataset tab
Example inputs for different use cases:
Search for tracks by genre:
{"mode": "searchTracks","searchQueries": ["ambient techno", "dark jazz"],"maxResults": 100}
Scrape a specific artist's profile and all their tracks:
{"mode": "userUrl","startUrls": ["https://soundcloud.com/moderat"],"maxResults": 200}
Get playlist metadata plus up to 50 public child tracks:
{"mode": "playlistUrl","startUrls": ["https://soundcloud.com/user/sets/my-playlist"],"includePlaylistTracks": true,"maxResults": 50}
Find booking emails for a genre, with website and social links:
{"mode": "searchUsers","searchQueries": ["techno dj booking"],"maxResults": 100,"includeEmails": true,"includeContactLinks": true}
Recent long techno mixes you may share, using the search filters:
{"mode": "searchTracks","searchQueries": ["mix"],"filterGenreOrTag": "techno","filterCreatedAt": "last_month","filterDuration": "epic","filterLicense": "to_share","maxResults": 100}
Paste a mix of links and let each one be detected:
{"mode": "anyUrl","startUrls": ["https://soundcloud.com/forss/flickermood", "https://soundcloud.com/forss/sets/soulhack", "https://soundcloud.com/nasa"],"maxResults": 20}
Export the trending top 100:
{"mode": "charts","maxResults": 100}
Playlist URL mode always emits the playlist metadata row first. Child-track expansion is opt-in; when enabled, maxResults per playlist limits child tracks rather than the playlist metadata row.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | String | searchTracks | What to scrape: searchTracks, searchPlaylists, searchUsers, trackUrl, playlistUrl, userUrl, anyUrl, charts |
searchQueries | Array | [] | Search terms for search modes. One query per item. |
startUrls | Array | [] | SoundCloud URLs for URL-based modes. |
maxResults | Integer | 100 | Max items to extract per query/URL. Use 0 for unlimited. |
includeUserDetails | Boolean | true | Add creator name, location, bio and counts to each track row. No extra charge. |
includeContactLinks | Boolean | false | Fetch website and social links for artist rows into websites. One extra request per artist, no extra charge. |
includeEmails | Boolean | false | Add emails written in public artist bios. These can be personal data; collect them only with a lawful reason. No extra charge. |
filterGenreOrTag | String | Search Tracks only: a genre or tag. | |
filterCreatedAt | String | Search Tracks only: last_hour, last_day, last_week, last_month, last_year. | |
filterDuration | String | Search Tracks only: short (under 2 min), medium (2-10), long (10-30), epic (over 30). | |
filterLicense | String | Search Tracks only: to_share, to_use_commercially, to_modify_commercially. | |
includePlaylistTracks | Boolean | false | In playlistUrl mode, emit public child tracks after the playlist metadata row. maxResults limits child tracks per playlist. |
Output examples
Track output:
{"type": "track","id": 417474360,"title": "Chill Study Beats - Lofi Hip Hop Mix","url": "https://soundcloud.com/nigeldelviero/chill-study-beats-lofi-hip-hop-mix","artworkUrl": "https://i1.sndcdn.com/artworks-000321524016-jw118f-large.jpg","genre": "Hip-hop & Rap","tagList": ["Lo-Fi", "Lounge Music", "Chill"],"duration": 7200255,"playbackCount": 4732814,"likesCount": 93032,"repostsCount": 2211,"commentCount": 4802,"downloadable": false,"streamable": true,"license": "all-rights-reserved","createdAt": "2018-03-22T08:35:48Z","userName": "nigeldelviero","userFollowersCount": 4056,"userVerified": false,"isrc": null,"scrapedAt": "2026-04-03T00:00:00.000Z"}
User output:
{"type": "user","id": 203410014,"username": "deadmau5","fullName": "deadmau5","url": "https://soundcloud.com/deadmau5","followersCount": 352371,"trackCount": 45,"verified": true,"isPro": true}
Tips for best results
- 🔍 Use specific genre names — SoundCloud indexes genre tags, so "lo-fi hip hop" returns more relevant results than "lofi"
- 📊 Start with small maxResults (20-50) to preview data before large extractions
- 🔁 Schedule runs for monitoring — use Apify's scheduling feature to track track metrics weekly
- 🎯 Combine modes — search for users first, then use their URLs in
userUrlmode for comprehensive data - 📋 Expand playlists explicitly — enable
includePlaylistTrackswhen you need track-level rows; leave it off for metadata-only runs - 💾 Export to Google Sheets — use Apify's Google Sheets integration for real-time data sharing
- ⚡ Pagination is automatic — just set
maxResultshigher and the scraper fetches multiple pages
Integrations
SoundCloud Scraper → Google Sheets: Track how a set of artists' follower counts change week over week. Schedule a weekly run in userUrl mode, output to Google Sheets, and watch the trends.
SoundCloud Scraper → Slack alerts: Monitor when a target artist uploads a new track. Set up a daily userUrl run, compare track counts, and send Slack notifications via Apify webhooks when the count increases.
SoundCloud Scraper → Make / Zapier: Automatically add newly discovered tracks (from search runs) to a Spotify playlist or Notion database for music curation workflows.
SoundCloud Scraper → Data warehouse: Pull 1,000+ tracks per genre weekly into BigQuery or Snowflake for music trend analysis dashboards.
Scheduled monitoring: Run searchTracks mode daily with specific genre queries to build a time-series dataset of SoundCloud's trending content.
API usage
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('automation-lab/soundcloud-scraper').call({mode: 'searchTracks',searchQueries: ['lofi hip hop', 'ambient techno'],maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/soundcloud-scraper").call(run_input={"mode": "searchTracks","searchQueries": ["lofi hip hop", "ambient techno"],"maxResults": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["playbackCount"])
cURL:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~soundcloud-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "searchTracks","searchQueries": ["lofi hip hop"],"maxResults": 100}'
Use with AI agents via MCP
SoundCloud Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/soundcloud-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/soundcloud-scraper"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/soundcloud-scraper to find the top 50 lofi hip hop tracks on SoundCloud and show me which artists have the most plays"
- "Scrape the SoundCloud profile for soundcloud.com/moderat and list all their tracks with play counts"
- "Search SoundCloud for ambient techno playlists and find the 10 most-liked ones"
Learn more in the Apify MCP documentation.
Diagnostics and privacy
This Actor is not affiliated with, endorsed by, or sponsored by SoundCloud. SoundCloud is named only to describe the data source.
When a run fails, the Actor sends sanitized diagnostic input, the exception, and the Actor, build and run IDs to our private GlitchTip error tracker so we can repair it. Secret fields and URL query strings are removed, and reports are kept for 30 days.
Legality of scraping SoundCloud
This actor only accesses publicly available data via SoundCloud's public API — the same data anyone can see when visiting soundcloud.com. No private data, no account credentials, no authentication is required or used.
Web scraping public data is generally considered legal in most jurisdictions. The 2022 hiQ Labs v. LinkedIn ruling confirmed that scraping publicly available data does not violate the Computer Fraud and Abuse Act (CFAA).
You are responsible for how you use the data. We recommend:
- Only scraping data you are legally entitled to use
- Respecting SoundCloud's Terms of Service for your specific use case
- Complying with GDPR and other applicable privacy regulations when processing personal data
- Not using the data for spam, harassment, or other harmful purposes
For legal advice about your specific use case, consult a qualified attorney.
FAQ
How many tracks can I scrape per run?
Set maxResults: 0 for no limit. SoundCloud serves at most 300 results for one search. Track searches above that are widened automatically through duration and upload-date windows, which reached 1,200 of 1,200 unique tracks in testing; playlist and artist searches stop at 300 per query, so use several specific queries. User profile mode extracts all of an artist's public tracks.
How much does it cost? On the FREE tier, the event charge is $0.005 per run start + $0.0023 per track, playlist, or user item scraped. Higher tiers have lower per-item event prices.
Does it require a SoundCloud account or API key? No. This actor uses SoundCloud's public API that powers their website, no account or API key needed.
Why are some tracks missing play counts or download counts?
SoundCloud sometimes returns null for private or restricted metrics. The playbackCount field may be null for very new tracks or tracks that have been set to private after upload.
Why does the userUrl mode return 0 tracks for some artists? Some artists have all their tracks set to private or streaming-only without public listing. The API only returns publicly listed tracks.
Why am I getting fewer results than maxResults?
The SoundCloud search index may have fewer results than your requested limit for very specific queries. Try broader search terms or use searchUsers mode to find artists, then use userUrl mode for their tracks. Playlist expansion also skips private, deleted, or otherwise unavailable child tracks.
Does playlist URL mode return individual tracks?
Only when you set includePlaylistTracks: true. The playlist metadata row is always returned first, followed by at most maxResults public child tracks per playlist URL. This actor returns metadata only; it does not download audio files or direct stream media.
Does an empty run cost anything? No. The run start is charged with the first saved row, so a search with no matches or a wrong link costs nothing. The run's status message always says how many results were saved and why it stopped.
Where do the artist emails come from?
Only from the public bio text on the artist's profile, and only when you turn on includeEmails. If an artist has no email in their bio, the list is empty. Emails can be personal data: you are responsible for having a lawful reason to collect them and for following GDPR and anti-spam law before contacting anyone.
How many trending tracks can I get? SoundCloud publishes one global trending chart of 100 tracks. Genre and country charts are not available from its public API.
The actor stopped mid-run — what happened?
SoundCloud occasionally returns rate limit errors (429) for very high-volume requests. Try reducing maxResults per query or splitting your search queries across multiple runs.
Related scrapers
- Spotify Playlist Scraper — Extract Spotify playlist tracks and metadata
- YouTube Music Scraper — Scrape YouTube music videos and channel data
- Bandcamp Scraper — Extract independent music from Bandcamp
Built by Automation Lab — building reliable data extraction tools for music, media, and research.
Server API: search SoundCloud or read one link over HTTP
SoundCloud Scraper is also a Server Actor. Besides normal runs, it answers short HTTP requests directly, without starting a run for each lookup. Copy the server URL from the Actor's Server tab (do not build it from the Actor name) and authenticate with your Apify token. Use normal Actor runs for many queries or links, more than 50 results per search or 50 tracks per link, search filters, trending charts and user contact links.
curl -sS "$SERVER_URL/search?query=lofi+hip+hop&type=tracks&maxResults=10" -H "Authorization: Bearer $APIFY_TOKEN"curl -sS "$SERVER_URL/search?query=techno&type=users&maxResults=5&includeEmails=true" -H "Authorization: Bearer $APIFY_TOKEN"curl -sS "$SERVER_URL/url?url=https%3A%2F%2Fsoundcloud.com%2Fforss%2Fflickermood" -H "Authorization: Bearer $APIFY_TOKEN"curl -sS "$SERVER_URL/url?url=https%3A%2F%2Fsoundcloud.com%2Fforss&maxTracks=5" -H "Authorization: Bearer $APIFY_TOKEN"
| Method and path | Input | Output and charge |
|---|---|---|
GET / | None | ready: true, the routes and limits; no scraping or charge |
GET /search | Query query: search text (1–200 characters); optional type (tracks, users or playlists; default tracks), maxResults 1–50 (default 20), includeEmails (true/false, default false) | {ok,count,results} with the first result page, the same records as a normal Search Tracks, Search Users or Search Playlists run; one Track scraped event (track-scraped) per returned row; no run-started fee |
GET /url | Query url: one SoundCloud track, playlist or user link (soundcloud.com or on.soundcloud.com share link); optional maxTracks 0–50 (default 10), includeEmails | {ok,count,results}: a track link gives the track; a playlist link gives the playlist and up to maxTracks of its tracks; a user link gives the profile and up to maxTracks of their latest tracks. Same records as a normal Any SoundCloud URLs run; user websites are not read here and are null. One Track scraped event (track-scraped) per returned row; no run-started fee |
Rows are the dataset items described above (type is track, playlist or user); track rows include the uploader details. includeEmails=true adds emails written in user bios at no extra charge. A private, deleted or mistyped link, or a search with no results, returns an error and is free. Each request has a 45-second deadline and a 1 MiB response cap, and one server works on at most eight requests at once. Only SoundCloud's public web client ID is kept between requests. Errors use { "ok": false, "error": { "code": "...", "message": "...", "retryable": false } }: 400 INVALID_QUERY, INVALID_TYPE, INVALID_URL, UNSUPPORTED_URL, INVALID_LIMIT or INVALID_INPUT; 402 spending limit; 404 NOT_FOUND, NO_RESULTS or unknown route; 405 wrong method; 413 RESPONSE_TOO_LARGE; 502 BLOCKED, UPSTREAM_ERROR or charging failure; 503 server busy or stopping; 504 TIMEOUT. Failed requests are free. Retry only when retryable is true. The Server tab shows the full OpenAPI description.