SoundCloud Scraper — Tracks, Artists & Playlists avatar

SoundCloud Scraper — Tracks, Artists & Playlists

Pricing

from $1.50 / 1,000 results

Go to Apify Store
SoundCloud Scraper — Tracks, Artists & Playlists

SoundCloud Scraper — Tracks, Artists & Playlists

Scrape SoundCloud tracks, artists and playlists by keyword or genre: titles, play and like counts, comments, followers, durations and profile links in clean JSON or CSV. Built for A&R scouting, playlist pitching research, label catalog work and genre trend tracking. No login needed at all.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

SoundCloud Scraper — Tracks, Artists & Playlists Finder for Music Discovery

This SoundCloud scraper searches SoundCloud and exports clean, structured music data: tracks with play, like and comment counts, artist profiles with follower numbers, and playlists with track counts and durations. Built for A&R scouting, playlist pitching research, label catalog work and genre trend tracking — scrape SoundCloud in minutes with no login and no coding.

Export to JSON, CSV, Excel, or API.

SoundCloud tracks, artists and playlists Music discovery, A&R, playlists, trends No login required Export JSON, CSV or Excel

Built for A&R scouts, label staff, artist managers, playlist curators, music marketers, researchers and data analysts who need SoundCloud discovery data as a clean, sortable dataset instead of endless manual scrolling.


Table of Contents


At a Glance

PlatformSoundCloud (soundcloud.com)
What you getTracks, artist / user profiles, or playlists — one clean record per result
Search byKeyword, genre, artist name, mood, city — any text query
Key track fieldsTitle, artist, plays, likes, comments, reposts, duration, genre, tags, license, label, artwork
Key artist fieldsUsername, followers, followings, track count, playlist count, city, country, avatar, verified
Key playlist fieldsTitle, curator, track count, total duration, likes, reposts, genre, artwork
Login requiredNo — works without a SoundCloud account
Output formatsJSON, CSV, Excel, HTML table, API
Fresh verification500 unique tracks collected in ~86 s, 0 duplicates, core fields 100%
DeduplicationAutomatic — the same track, artist or playlist never appears twice in a run

🔎 Why scrape SoundCloud?

SoundCloud is the largest open audio platform for independent artists, producers and curators — the place new sounds surface long before they reach streaming charts. Every track carries public engagement signals (plays, likes, comments, reposts), every artist profile shows follower numbers and catalog size, and every playlist reveals who curates what and how big their audience is. Taken together, that is a live map of music discovery.

Collecting this by hand is painful. SoundCloud search in a browser means endless scrolling, lazy-loaded results, and copy-pasting numbers that change by the hour. There is no official bulk export, and the figures you care about — plays, followers, track counts — are scattered across pages. For anyone doing A&R, playlist research or genre analysis at any real volume, manual collection does not scale.

This SoundCloud scraper turns that search into a structured dataset. Pick an entity type, type a few terms, and get a clean, deduplicated, sortable table of SoundCloud data ready for a spreadsheet, a pipeline or an API — no login, no coding.

Common reasons people scrape SoundCloud:

  • Discover rising artists in a genre, mood or city before they break out.
  • Build playlist-pitching shortlists from real curator and audience data.
  • Track genre trends by snapshotting play, like and repost counts over time.
  • Audit a label or scene catalog by keyword, tag or label name.
  • Size up a scene — who is active, how big their following is, where they are based.
  • Research licensing and samples by filtering on the track license field.
  • Feed music dashboards and analytics with fresh SoundCloud discovery data.

✨ What this SoundCloud scraper does

Pick what you want to collect — tracks, artists (users) or playlists — type one or more search terms, and press Start. The actor searches SoundCloud for each term, walks through the result pages, removes duplicates, and saves one structured record per result to your dataset.

  • ✅ Three collection modes — search for tracks, artists / users, or playlists, each with its own tailored field set.
  • ✅ Multi-term search — pass many keywords, genres, moods, cities or artist names; each runs as its own SoundCloud search and results merge into one dataset.
  • ✅ Automatic pagination — walks SoundCloud's result pages (200 per page) per term and returns hundreds to thousands of de-duplicated records, controlled by maxItems and maxPagesPerSearch.
  • ✅ Cross-term deduplication — overlapping terms never produce the same track, artist or playlist twice (dedup on SoundCloud's own record ID).
  • ✅ Rich engagement data — tracks carry plays, likes, comments, reposts, duration, genre, tags, license, label and artwork; artists carry followers, followings, track/playlist counts, city, country, verified badge; playlists carry track count, total duration, likes, reposts and an isAlbum flag.
  • ✅ Clean, typed fields — counts come back as numbers, dates as ISO 8601, URLs fully qualified. Empty fields are omitted, never invented.
  • ✅ No login, no account — nothing to install and no SoundCloud credentials to maintain.
  • ✅ Fast & reliable — pure HTTP collection on Apify's datacenter proxy with automatic retry; the fresh verification run pulled 500 tracks in about 86 seconds.
  • ✅ Export anywhere — JSON, CSV, Excel, HTML table, or straight through the Apify API.

🎯 Use cases

  • A&R scouts & label staff — build artist shortlists by genre, city or sound, ranked by followers and catalog size.
  • Artists & managers — research playlists and curators for release pitching, with real audience numbers.
  • Playlist curators — find fresh tracks and benchmark competing playlists in your niche.
  • Music marketers — size up scenes, genres and competitor catalogs with play and follower data.
  • Researchers & journalists — study music scenes, genres and online communities with reproducible snapshots.
  • Data analysts & engineers — pull SoundCloud discovery data into spreadsheets, dashboards or warehouses.
  • Sync & licensing teams — check license types and catalog activity at scale before clearing audio.
  • Trend & growth teams — schedule repeat runs to turn plays, likes and followers into a growth time series.

📥 Input

Every field is optional — pressing Start with the defaults works out of the box. Configure the run with these parameters:

FieldTypeDescription
entityTypestring (select)What to collect: tracks, users (artists) or playlists. Each type returns its own tailored fields. Default tracks.
searchTermsarray of stringsKeywords, genres, moods or artist names to search for, e.g. lofi, techno, berlin techno. Each term runs as its own search; results merge without duplicates. Leave empty to sample a mix of popular genre searches (~100 results).
maxItemsintegerMaximum results across all search terms. 0 means no limit. An empty run with no terms is capped at ~100 results. Default 0.
maxPagesPerSearchintegerPagination cap per search term, at 200 results per page. Raise it for deeper collection on broad terms; lower it for quick samples. Default 20.
proxyConfigurationproxy objectApify Proxy settings. Datacenter proxy is enabled by default and is all you need for normal runs.

Example input — collect techno & lofi tracks with engagement data:

{
"entityType": "tracks",
"searchTerms": ["lofi", "techno"],
"maxItems": 200,
"maxPagesPerSearch": 20,
"proxyConfiguration": { "useApifyProxy": true }
}

Artist discovery in a city:

{
"entityType": "users",
"searchTerms": ["istanbul", "berlin techno"],
"maxItems": 300
}

Playlist pitching research:

{
"entityType": "playlists",
"searchTerms": ["lofi", "chillhop", "study beats"],
"maxItems": 150
}

Empty run (sample mode): {} samples the default genre mix (lofi, techno, house, hip hop, electronic) and returns about 100 track results — the fastest way to see the output shape.


📤 Output

Each result is saved as one structured record. Every record carries entityType (track, user or playlist), the SoundCloud id, a direct url, and scrapedAt (ISO timestamp of the run). Fields SoundCloud does not provide for a record are simply omitted — nothing is invented or guessed.

Example track record (from the fresh verification run):

{
"id": 143581807,
"entityType": "track",
"title": "DZ - House Every Weekend (Original Mix)",
"username": "David Zowie (DZ)",
"userUrl": "https://soundcloud.com/davidzowie",
"genre": "House",
"durationSeconds": 219,
"fullDurationSeconds": 219,
"playbackCount": 24035751,
"likesCount": 410018,
"commentCount": 1907,
"repostsCount": 43148,
"createdAt": "2014-04-07T20:40:49Z",
"url": "https://soundcloud.com/davidzowie/house-every-weekend-original-mix",
"artworkUrl": "https://i1.sndcdn.com/artworks-000110380527-7vkqel-large.jpg",
"downloadable": false,
"downloadCount": 0,
"license": "all-rights-reserved",
"tags": ["house", "mix", "promo", "DZ", "David", "Zowie", "edm", "festival", "deep house", "defected", "ministry of sound"],
"labelName": "Virgin EMI",
"scrapedAt": "2026-11-02T02:01:37.852Z"
}

Example artist record:

{
"id": 1208640,
"entityType": "user",
"username": "Mahmut Orhan",
"fullName": "Mahmut Orhan",
"followersCount": 155473,
"followingsCount": 251,
"trackCount": 92,
"playlistCount": 8,
"likesCount": 172,
"city": "Los Angeles / Istanbul",
"countryCode": "TR",
"avatarUrl": "https://i1.sndcdn.com/avatars-8hUbMEnR2JApqAq8-cgCdzQ-large.jpg",
"url": "https://soundcloud.com/mahmut-orhan",
"description": "Mahmut Orhan was born in Bursa, in 1993.",
"verified": true,
"scrapedAt": "2026-11-02T02:01:53.096Z"
}

Example playlist record:

{
"id": 352480527,
"entityType": "playlist",
"title": "CHILL",
"username": "LoFi",
"userUrl": "https://soundcloud.com/lofi_chill",
"trackCount": 416,
"durationSeconds": 66702,
"likesCount": 5532,
"repostsCount": 255,
"isAlbum": false,
"genre": "Lofi Chill",
"createdAt": "2017-09-13T22:02:07Z",
"url": "https://soundcloud.com/lofi_chill/sets/lofi-chill",
"scrapedAt": "2026-11-02T02:01:30.393Z"
}

🎵 Track field reference

Coverage below is measured from the fresh verification run (500 tracks, November 2026). Counts such as plays and likes change constantly on SoundCloud; coverage describes how often a field is present, not the values themselves.

FieldCoverageDescription
id100%SoundCloud track ID (numeric). Natural key for deduplication.
entityType100%Always track for track searches.
title100%Track title as written by the uploader.
username100%Artist / uploader display name.
userUrl100%Artist profile URL.
durationSeconds100%Playable duration in seconds.
fullDurationSeconds100%Full track length in seconds (equals durationSeconds unless a preview is shorter).
playbackCount100%Total plays.
likesCount100%Total likes.
commentCount100%Total comments.
repostsCount100%Total reposts.
downloadable100%Whether the uploader enabled downloads (boolean).
downloadCount100%Total downloads (0 when downloads are off).
license100%License set by the uploader, e.g. all-rights-reserved or a Creative Commons license.
createdAt100%Upload date (ISO 8601).
url100%Direct track URL.
artworkUrl~93%Track artwork image. Present when available; missing tracks reuse the artist's avatar.
genre~57%Genre set by the uploader. Present when available.
description~40%Track description. Present when the uploader wrote one.
tags~39%Uploader tags (array; multi-word tags kept intact, de-duplicated). Present when available.
labelName~7%Record label name. Present when the uploader set one.
scrapedAt100%When this record was collected (ISO 8601).

🎤 Artist / user field reference

FieldDescription
idSoundCloud user ID.
entityTypeAlways user for artist searches.
usernameDisplay name on SoundCloud.
fullNameReal full name, present when the user provided one.
followersCountTotal followers.
followingsCountAccounts this user follows.
trackCountTracks published.
playlistCountPlaylists published.
likesCountTracks this user has liked.
cityCity on the profile, present when shared.
countryCodeTwo-letter country code, present when shared.
avatarUrlProfile avatar image URL.
urlDirect profile URL.
descriptionProfile bio text, present when written.
verifiedWhether the profile shows a verified badge (boolean).
createdAtAccount creation date (ISO 8601).
scrapedAtWhen this record was collected (ISO 8601).

📂 Playlist field reference

FieldDescription
idSoundCloud playlist ID.
entityTypeAlways playlist for playlist searches.
titlePlaylist title.
usernameCurator display name.
userUrlCurator profile URL.
trackCountNumber of tracks in the playlist.
durationSecondsTotal playlist duration in seconds.
likesCountTotal likes on the playlist.
repostsCountTotal reposts of the playlist.
isAlbumtrue for a released album, false for a curated playlist. SoundCloud playlist search mixes both — this flag separates them.
setTypeRelease type when SoundCloud marks one: album, ep or single. Present occasionally; empty for ordinary playlists.
genreGenre set by the curator, present when available.
createdAtPlaylist creation date (ISO 8601).
urlDirect playlist URL.
artworkUrlPlaylist artwork image, present when set.
descriptionPlaylist description, present when written.
tagsCurator tags (array), present when set.
scrapedAtWhen this record was collected (ISO 8601).

A note on optional fields: genre, description, tags and labelName come straight from what uploaders and curators typed into SoundCloud. They are real and useful when present, but many SoundCloud records simply do not have them. Plan your analysis around the count, duration and link fields — present on effectively every record — and treat genre / description / tags / label as bonus detail.


🔁 Pagination & scale

The actor paginates each search term independently through SoundCloud's search API, 200 results per page, advancing by offset until a term runs out of results, hits maxItems, or reaches maxPagesPerSearch. Results from all terms land in one dataset and are deduplicated on SoundCloud's record ID (entityType:id), so overlapping terms never double-count.

One honest detail matters for planning: SoundCloud search serves its top relevance slice (~300 results) per term, however many millions match the query. That ceiling is SoundCloud's, not the actor's. Scale comes from combining terms — each additional term (a sub-genre, mood, city or label) adds its own deduplicated slice. Splitting a broad topic (techno) into narrower terms (melodic techno, hard techno, acid techno, berlin techno) is how runs grow into the thousands and beyond. Use maxItems to cap total run size and cost; use maxPagesPerSearch to tune per-term depth.

In the fresh verification run, an 8-term track search (lofi, techno, house, hip hop, jazz, ambient, drum and bass, deep house) with maxItems: 500 returned exactly 500 unique tracks in ~86 seconds with 0 duplicates — confirming pagination and cross-term dedup work cleanly.


⚙️ How to use

  1. Open the actor on the Apify Console — no installation needed.
  2. Choose what to search — set entityType to Tracks, Artists / Users, or Playlists.
  3. Add search terms — genres, moods, artist names, or genre-plus-city combinations. Add several to widen coverage; duplicates are removed automatically.
  4. Set a cap — use maxItems to control run size, or leave 0 for no limit.
  5. Click Start and watch records fill the dataset preview; the log shows each term's match count and page-by-page progress.
  6. Export as JSON, CSV, Excel or HTML, or pull results through the Apify API / client libraries.
  7. Automate it — run on an Apify schedule (e.g. weekly) and connect the output to Make, Zapier, Google Sheets, a webhook, Google Drive, S3 or your warehouse.

Pull results with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/soundcloud-scraper").call(run_input={
"entityType": "tracks",
"searchTerms": ["techno", "melodic techno"],
"maxItems": 500,
})
for track in client.dataset(run["defaultDatasetId"]).iterate_items():
print(track["playbackCount"], "plays ·", track["likesCount"], "likes ·", track["title"], "·", track["url"])

💡 Tips

  • Split broad genres into sub-genres. techno alone returns only its top slice; adding melodic techno, hard techno and acid techno collects a much wider selection across terms.
  • Combine genre and place. Terms like berlin techno or istanbul (artist search) surface local scenes that global genre searches bury.
  • Try several spellings and moods. Listeners tag loosely: lofi, lo-fi, chillhop and study beats return overlapping but different result sets.
  • Start small, then scale. Run 100–200 results first to check output shape and field coverage for your terms, then raise maxItems for the full collection.
  • Sort by ratios, not just totals. A track with modest plays but a high likes-to-plays ratio, or an artist with fast follower growth relative to a small catalog, often matters more than the biggest raw number.
  • Re-run on a schedule for trends. A single run is a snapshot; weekly runs of the same terms turn playbackCount, likesCount and followersCount into growth data (every record carries scrapedAt).
  • Check license before reuse. Filter track exports by license when you need Creative Commons material — and always confirm the license on the track page before using any audio.

❓ FAQ

Is scraping SoundCloud legal? This SoundCloud scraper collects only publicly visible search results — the same data any visitor sees without logging in. It does not access private, unlisted or login-gated content, and it never invents data. As with any scraping, use the collected data responsibly, respect copyright and SoundCloud's terms, and do not use it to spam or infringe. This tool is not affiliated with SoundCloud.

Do I need a SoundCloud account or login? No. The SoundCloud scraper works with no account, no login and no API key. Choose an entity type, add search terms, and run.

How many results can I collect, and how fast? Set maxItems to any number, or 0 for no limit. SoundCloud serves its top ~300 results per term, so one term yields up to ~300 records; combining terms scales linearly (deduplicated) into the thousands. The fresh verification run collected 500 unique tracks in ~86 seconds.

Do I need proxies? Apify datacenter proxy is on by default and is all you need for normal runs — residential proxies are not required. The actor fetches over plain HTTP with automatic retry and session refresh.

Is there an API? Yes. Run the actor and fetch its dataset through the Apify API or the Python / JavaScript clients (see the code example above). You can also trigger runs programmatically and stream results to a webhook.

In what formats can I export the data? JSON, CSV, Excel and HTML table from the dataset view, plus programmatic access through the Apify API and client libraries.

How fresh is the SoundCloud data? Every run is live — counts reflect the moment of collection, and each record carries a scrapedAt timestamp. Re-run (or schedule) to refresh numbers and build trend series.

Can I filter by genre, city or artist? You filter by what you type into searchTerms: genres (techno), cities (berlin techno, istanbul), moods (study beats) or artist names. The returned genre field (present on ~57% of tracks) lets you filter further after export.

What is the difference between Tracks, Artists / Users and Playlists? Tracks are individual songs with engagement counts. Artists / Users are profiles with follower counts, track counts and locations. Playlists are curated sets with a curator, track count and total duration. Set entityType to match what you want.

Can I tell albums apart from curated playlists? Yes. A playlist search returns both. Every playlist record carries an isAlbum boolean (and a setType of album, ep or single when SoundCloud marks it). Filter on isAlbum to keep only albums or only playlists.

Why are genre, description and tags missing on some tracks? Those fields are typed in by uploaders, and many leave them empty. The actor reports exactly what SoundCloud provides and never fills gaps with guesses. In the fresh run, genre was present on ~57% of tracks, description on ~40% and tags on ~39% — while plays, likes, duration, license and links were present on 100%.

Does this actor provide email addresses or contact details? No. SoundCloud profiles rarely publish contact information, and this actor does not invent, guess or enrich contact data. Artist records give you the profile url, name, location and stats — reach artists through the channels they link from their own profiles.


Building a music, audio or creator dataset? Pair this SoundCloud scraper with other music-data actors to enrich artists, tracks and releases across platforms:

  • Podchaser Scraper — podcast shows, episodes and creator data for audio and spoken-word research.
  • Genius Scraper — song lyrics, annotations, artists and album metadata to add songwriting and credits context to your SoundCloud tracks.
  • Discogs Scraper — release, artist and label discography data with marketplace pricing for catalog and resell research.

Browse the full collection on the haketa Apify profile.


Limitations

  • Search-based collection. The actor collects what SoundCloud search returns for your terms. It does not crawl follower lists, comment threads, or an artist's full catalog beyond what search surfaces.
  • Relevance slice on broad terms. Extremely broad single terms return their top ~300 relevance slice rather than an exhaustive catalog. Narrower and multiple terms collect more — that is how large datasets are built.
  • Uploader-provided fields vary. Genre, descriptions, tags and label names exist only when uploaders set them (see coverage above). Counts, durations, licenses and links are the reliable core.
  • Counts are snapshots. Play, like and follower numbers reflect the moment of the run. Re-run to refresh them; use schedules for trends.
  • No contact data. SoundCloud rarely exposes emails or contact details and this actor does not synthesize them.
  • Artwork is a link, not a download. Records include artwork and avatar image URLs; the images themselves stay on SoundCloud's CDN.
  • Public data only. Private tracks and unlisted content that search does not show are not included.

📋 Changelog

v1.2 (2026-11)

  • Deep pagination unlocked: Added automatic and unlimited pagination support (maxPagesPerSearch: 0) governed by user-defined maxItems limits, enabling 1,000+ track and artist extractions without manual page cap restrictions.
  • Optimized default run: Expanded default genre search pool (20 distinct music genres) to guarantee robust volume scaling up to 1,000+ items on empty query runs.
  • Faster prefill execution: Tuned default prefill to 100 items for high-speed verification (<60s runtime).
  • Field normalization: Strengthened tag quote-aware parsing, enhanced engagement counter fallback handling, and verified strict schema alignment.

v1.1 (2026-10)

  • Multi-entity extraction: Added support for searching tracks, artist profiles, and curated playlists/albums via unified entityType switch.
  • Smart session management: Built-in automatic session recovery and token cycling for uninterrupted large catalog extractions.
  • Cross-term deduplication: Integrated real-time track and profile deduplication across multiple simultaneous search terms.

v1.0 (2026-09)

  • Initial release with keyword-based track extraction, engagement metrics (plays, likes, reposts, comments), duration calculation, and multi-format exports.

SoundCloud scraper · scrape SoundCloud · SoundCloud API · SoundCloud data · music discovery · artist finder · playlist research · genre trend tracking · A&R scouting · label catalog research

⌂ 换网址