SoundCloud Scraper avatar

SoundCloud Scraper

Pricing

from $1.09 / 1,000 results

Go to Apify Store
SoundCloud Scraper

SoundCloud Scraper

Scrape SoundCloud tracks, playlists, and artist profiles by search query or URL: plays, likes, reposts, comments, genre, tags, ISRC, followers, and more. No login or API key. Export as JSON, CSV, or Excel.

Pricing

from $1.09 / 1,000 results

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

SoundCloud Scraper

SoundCloud Scraper extracts structured data from SoundCloudtracks, playlists, and artist profiles — by search query or by URL. It reads SoundCloud's own public api-v2 endpoints, the same ones the website uses, so there is no login, no API key, and no browser. Get play counts, likes, reposts, comments, genre, tags, ISRC codes, waveform URLs, follower counts, and more.

Six modes in one SoundCloud scraper — search tracks, playlists, or users, or pass a track, playlist, or artist URL. Playlist mode can expand every public child track; track results carry the creator's profile stats.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/soundcloud-scraper (SoundCloud Scraper on Apify)
Purpose: scrape SoundCloud tracks, playlists, and artist/user profiles from SoundCloud's public api-v2 (no auth).
Call it with ApifyClient. Example (Python):
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/soundcloud-scraper").call(run_input={
"mode": "searchTracks", # searchTracks | searchPlaylists | searchUsers | trackUrl | playlistUrl | userUrl
"searchQueries": ["ambient techno", "dark jazz"], # search modes: one term per item
"startUrls": ["https://soundcloud.com/flume"], # URL modes: track, playlist (/sets/), or profile URLs
"maxResults": 100, # per query / URL; 0 = unlimited. In playlistUrl mode limits child tracks
"includeUserDetails": True, # attach creator follower count + verified status to each track
"includePlaylistTracks": False # playlistUrl mode: emit public child tracks after the playlist row
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
Output rows have a "type" field: "track" (title, url, genre, tagList, duration, playbackCount, likesCount,
repostsCount, commentCount, license, isrc, waveformUrl, userName, userFollowersCount, userVerified),
"playlist" (title, url, trackCount, duration, likesCount, isAlbum, publishedAt, userName), or
"user" (username, fullName, url, followersCount, followingsCount, trackCount, playlistCount, verified, isPro).
API docs: https://docs.apify.com/api/v2 | Token: https://console.apify.com/account/integrations

What does SoundCloud Scraper do?

SoundCloud Scraper turns any SoundCloud search or URL into a clean dataset. Pick one of six modes per run:

  • 🔎 Search tracks — find tracks by genre, mood, artist, or any keyword and get full track metadata with play, like, repost, and comment counts.
  • 📋 Search playlists — discover playlists and albums matching a query, with track counts, total duration, and creator.
  • 👤 Search users / artists — find creators by name or keyword and get their follower counts, upload counts, location, and verified/Pro status.
  • 🎵 Track by URL — pass one or many soundcloud.com/artist/track URLs and get a row per track.
  • 📀 Playlist by URL — pass a /sets/ URL to get the playlist metadata, and optionally every public track inside it.
  • 🎤 User / artist by URL — pass a profile URL to get the artist profile plus their uploaded tracks.

Platform features: schedule runs to track play-count and follower growth over time, call the actor from the Apify API, pipe results into integrations (Zapier, Make, n8n, Slack, Google Sheets), and export to JSON, CSV, or Excel.

Why scrape SoundCloud?

  • A&R and talent scouting — surface fast-growing artists by play count, repost velocity, and genre.
  • Playlist and catalog research — map which tracks sit in the biggest playlists and albums.
  • Music analytics and monitoring — poll a set of tracks or artists on a schedule and chart plays, likes, and followers.
  • Rights and metadata work — pull ISRC codes, license types, release dates, and label names in bulk.
  • Dataset building — assemble genre- or mood-labelled track datasets for research or machine learning.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringYessearchTrackssearchTracks, searchPlaylists, searchUsers, trackUrl, playlistUrl, or userUrl
searchQueriesarrayFor search modes[]Search terms, one per item
startUrlsarrayFor URL modes[]SoundCloud track, playlist (/sets/), or profile URLs
maxResultsintegerNo100Max items per query or URL. 0 = unlimited. In playlistUrl mode, limits child tracks per playlist
includeUserDetailsbooleanNotrueAttach the creator's follower count and verified status to each track result
includePlaylistTracksbooleanNofalseIn playlistUrl mode, emit each public child track after the playlist row
proxyConfigurationobjectNoApify ProxyOptional — SoundCloud works from Apify's datacenter proxy

What data can you extract from SoundCloud?

Track data (type: "track")

FieldDescription
titleTrack title
urlFull SoundCloud track URL
artworkUrlCover art image URL
descriptionTrack description / tracklist
genreGenre classification
tagListArray of tags
durationDuration in milliseconds
playbackCountTotal plays
likesCountTotal likes
repostsCountTotal reposts
commentCountTotal comments
downloadCount / downloadableDownload count and whether download is enabled
streamableWhether streaming is available
licenseLicense type (e.g. all-rights-reserved, cc-by)
releaseDate / createdAtOriginal release date and upload date
isrcISRC music identifier code
waveformUrlURL to the waveform JSON data
userName / userUrlCreator username and profile URL
userFollowersCount / userVerifiedCreator follower count and verified flag (when includeUserDetails)

Playlist data (type: "playlist")

FieldDescription
titlePlaylist name
urlFull SoundCloud URL
artworkUrlCover art image URL
descriptionPlaylist description
genreGenre classification
durationTotal duration in milliseconds
trackCountNumber of tracks
likesCount / repostsCountTotal likes and reposts
isAlbumWhether it is a released album vs a playlist
publishedAtPublication date
userNameCreator username

User / artist data (type: "user")

FieldDescription
username / fullNameSoundCloud username and display name
url / avatarUrlProfile URL and profile picture URL
descriptionBio text
city / countryCodeLocation
followersCount / followingsCountFollower and following counts
trackCount / playlistCountNumber of uploaded tracks and playlists
likesCountTotal likes given
verifiedVerification status
isProWhether the account holds a SoundCloud Pro subscription

Output example

Track (searchTracks / trackUrl modes):

{
"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", "Relax", "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",
"isrc": null,
"userName": "nigeldelviero",
"userUrl": "https://soundcloud.com/nigeldelviero",
"userFollowersCount": 4056,
"userVerified": false,
"scrapedAt": "2026-09-03T00:00:00.000Z"
}

User (searchUsers / userUrl modes):

{
"type": "user",
"id": 203410014,
"username": "deadmau5",
"fullName": "deadmau5",
"url": "https://soundcloud.com/deadmau5",
"followersCount": 384482,
"followingsCount": 3,
"trackCount": 392,
"playlistCount": 78,
"verified": true,
"isPro": true
}

Download the dataset in JSON, CSV, Excel, HTML, or RSS from the Storage tab or via the API.

How to scrape SoundCloud

  1. Open the Actor and go to the Input tab.
  2. Choose a Mode.
  3. Fill the field that mode needs:
    • searchTracks, searchPlaylists, searchUsersSearch queries (one term per line).
    • trackUrl, playlistUrl, userUrlSoundCloud URLs.
  4. Set Max results. Keep it low for the first run; use 0 for unlimited.
  5. For playlistUrl mode, toggle Include playlist child tracks to expand a playlist into its tracks.
  6. Click Start. When the run finishes, open the Storage tab and export as JSON, CSV, or Excel.

Run from the Apify API — Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/soundcloud-scraper").call(run_input={
"mode": "userUrl",
"startUrls": ["https://soundcloud.com/flume"],
"maxResults": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["type"], item.get("title") or item.get("username"), item.get("playbackCount"))

Run from the Apify API — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/soundcloud-scraper').call({
mode: 'playlistUrl',
startUrls: ['https://soundcloud.com/user/sets/my-playlist'],
includePlaylistTracks: true,
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

The actor also works over plain HTTP and as an MCP tool for AI assistants.

How it works

  1. Validate input — the actor checks the mode and the field it requires (search queries or URLs).
  2. Resolve a session — it reads a public client_id from SoundCloud's own JavaScript and caches it, refreshing automatically if SoundCloud rotates it.
  3. Query api-v2 — search endpoints are paginated in pages of 200; URLs are resolved through /resolve; artist tracks and playlist child tracks are fetched and, where SoundCloud returns partial rows, hydrated in batches.
  4. Normalize — nested API objects are flattened into clean, consistent track, playlist, and user records.
  5. Push and charge — each record is written to the dataset and charged once (see Pricing). Unknown or private URLs are logged and skipped; the run continues.

How much does it cost to scrape SoundCloud?

Pricing is pay-per-result: one charge per record written to the dataset (a track, playlist, or user row).

PlanPrice per 1,000 results
Free$1.79
Bronze$1.49
Silver$1.29
Gold$1.09

Scraping 1,000 tracks costs about $1.79 on the Free plan. A playlist with 200 child tracks costs about $0.36 (201 records). Apify's monthly free platform credits cover thousands of records. See Apify pricing.

Scraping publicly available data is generally legal. This Actor accesses only public data through SoundCloud's own public API endpoints — the same data any visitor sees on soundcloud.com — and never logs in or bypasses access controls. You are responsible for how you use the data: comply with SoundCloud's Terms of Service, respect artists' rights, and follow data-protection laws such as GDPR and CCPA when the data includes personal information. For background, read the Apify blog on the legality of web scraping.

Browse all ParseBird actors.

FAQ

Do I need a SoundCloud account or API key? No. The Actor uses SoundCloud's public api-v2 endpoints with the same client_id the website ships to every visitor. Nothing is logged in.

How many results can I get? URL modes return one row per track, plus child tracks for playlists and uploaded tracks for artists (bounded by maxResults, 0 = unlimited). Search modes return everything SoundCloud's search exposes for a query — in practice a few hundred results per term, since SoundCloud caps how deep its search pages go.

Can I get every track in a large playlist? Yes. Use playlistUrl mode with Include playlist child tracks enabled and maxResults set to 0. The playlist metadata row is always emitted first.

Why is a track or profile missing? Private, deleted, or region-blocked tracks cannot be scraped. Unresolvable URLs are logged as warnings and skipped so the rest of the run completes.

Does it download audio files? No. The Actor returns metadata, artwork URLs, and waveform-data URLs — not audio.

Can I schedule this to track plays and followers over time? Yes. Use Apify Schedules to run daily and record playbackCount, likesCount, and followersCount for trend analysis.

Something's not working — how do I report it? Open an issue on the Actor's Issues tab with your input and what you expected. Feedback is welcome.