SoundCloud Scraper: Tracks, Artists, Playlists & Emails avatar

SoundCloud Scraper: Tracks, Artists, Playlists & Emails

Pricing

from $1.20 / 1,000 track scrapeds

Go to Apify Store
SoundCloud Scraper: Tracks, Artists, Playlists & Emails

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

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

587

Total users

62

Monthly active users

4 hours ago

Last modified

Features

Limited permissionsMulti-tenantServer interface

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 includePlaylistTracks to 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

FieldDescription
titleTrack title
urlFull SoundCloud URL
artworkUrlCover art image URL
descriptionTrack description / tracklist
genreGenre classification
tagListArray of tags; quoted multi-word tags are preserved as one value
durationDuration in milliseconds
playbackCountTotal plays
likesCountTotal likes/hearts
repostsCountTotal reposts
commentCountTotal comments
downloadCountTotal downloads
downloadableWhether download is enabled
streamableWhether streaming is available
licenseLicense type (e.g., all-rights-reserved, cc-by)
releaseDateOriginal release date
createdAtUpload date
isrcISRC music identifier code
labelNameRecord label
publisherArtist, publisherAlbumTitle, publisherReleaseTitleRelease metadata from the distributor
upc, explicit, publisherLine, copyrightLineRelease codes and rights lines
purchaseUrl, purchaseTitleBuy or smart link set by the artist
monetizationModel, policy, sharing, embeddableBy, commentableAvailability and monetization settings
artworkUrlHighResCover art at 500×500
fullDuration, displayDate, lastModified, urnFull length, shown date, last edit, SoundCloud URN
waveformUrlURL to waveform JSON data
userNameCreator username
userUrlCreator profile URL
userFollowersCountCreator's follower count
userVerifiedWhether creator is verified
userFullName, userCity, userCountryCode, userDescriptionCreator name, location and bio (with includeUserDetails)
userEmailsEmails found in the creator's bio (with includeUserDetails and includeEmails)
userFollowingsCount, userTrackCount, userPlaylistCount, userIsProCreator counts and Pro status (with includeUserDetails)
chartRank, chartScorePosition and score, in Trending mode

📋 Playlist data

FieldDescription
titlePlaylist name
urlFull SoundCloud URL
artworkUrlCover art image URL
descriptionPlaylist description
genreGenre classification
durationTotal duration in ms
trackCountNumber of tracks
likesCountTotal likes
isAlbumWhether it's a released album vs playlist
publishedAtPublication date
userNameCreator username

👤 User profile data

FieldDescription
usernameSoundCloud username
fullNameDisplay name
urlProfile URL
avatarUrlProfile picture URL
descriptionBio text
cityLocation city
countryCodeCountry code
followersCountNumber of followers
followingsCountAccounts they follow
trackCountNumber of uploaded tracks
playlistCountNumber of playlists
likesCountTotal likes given
verifiedVerification status
isProPro subscription holder
emailsEmails found in the artist's bio, with includeEmails
websitesWebsite and social links on the profile, with includeContactLinks
avatarUrlHighResProfile picture at 500×500
commentsCount, lastModifiedComments 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.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
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

  1. Go to SoundCloud Scraper on Apify Store
  2. Click Try for free
  3. Select a scrape mode from the dropdown (e.g., "Search Tracks")
  4. Enter your search query (e.g., "lofi hip hop") or paste a SoundCloud URL
  5. Set Max results per query (start with 20 for testing)
  6. Click Start and wait for results (usually under 30 seconds)
  7. 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

ParameterTypeDefaultDescription
modeStringsearchTracksWhat to scrape: searchTracks, searchPlaylists, searchUsers, trackUrl, playlistUrl, userUrl, anyUrl, charts
searchQueriesArray[]Search terms for search modes. One query per item.
startUrlsArray[]SoundCloud URLs for URL-based modes.
maxResultsInteger100Max items to extract per query/URL. Use 0 for unlimited.
includeUserDetailsBooleantrueAdd creator name, location, bio and counts to each track row. No extra charge.
includeContactLinksBooleanfalseFetch website and social links for artist rows into websites. One extra request per artist, no extra charge.
includeEmailsBooleanfalseAdd emails written in public artist bios. These can be personal data; collect them only with a lawful reason. No extra charge.
filterGenreOrTagStringSearch Tracks only: a genre or tag.
filterCreatedAtStringSearch Tracks only: last_hour, last_day, last_week, last_month, last_year.
filterDurationStringSearch Tracks only: short (under 2 min), medium (2-10), long (10-30), epic (over 30).
filterLicenseStringSearch Tracks only: to_share, to_use_commercially, to_modify_commercially.
includePlaylistTracksBooleanfalseIn 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 userUrl mode for comprehensive data
  • 📋 Expand playlists explicitly — enable includePlaylistTracks when 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 maxResults higher 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 ApifyClient
client = 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.


Built by Automation Lab — building reliable data extraction tools for music, media, and research.

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 pathInputOutput and charge
GET /Noneready: true, the routes and limits; no scraping or charge
GET /searchQuery 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 /urlQuery 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.

⌂ 换网址