SoundCloud Scraper - Tracks, Plays, Likes & Artists
Pricing
from $6.80 / 1,000 results
SoundCloud Scraper - Tracks, Plays, Likes & Artists
Scrape SoundCloud tracks by keyword, artist or URL. Get plays, likes, reposts, comments, genre, tags, artwork and artist stats as JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
4.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
SoundCloud Scraper - Tracks, Plays, Likes & Artists
Here is one real result, with every field the actor returns (the long description is trimmed here with ...; live records return it in full):
{"imageUrl": "https://i1.sndcdn.com/artworks-0ljHO6lNVPp3dJPy-CTOtGw-large.jpg","title": "Chuyện Đôi Ta - Emcee L Ft Muộii (lofi ver.)","url": "https://soundcloud.com/minh-ph-789763242/chuyen-doi-ta-emcee-l-ft-muoii-lofi-ver","id": 1172136256,"artistName": "aga1n","artistUrl": "https://soundcloud.com/minh-ph-789763242","artistId": 948916771,"playCount": 5114079,"likeCount": 27018,"repostCount": 506,"commentCount": 316,"durationMs": 210776,"fullDurationMs": 210756,"genre": null,"tags": [],"description": "Chorus:\nNhững cơn sóng xô lâu đài vỡ trong bóng đêm...","uploadDate": "2021-12-05T02:55:01Z","releaseDate": null,"lastModified": "2022-01-18T14:56:51Z","downloadable": false,"downloadCount": 0,"license": "all-rights-reserved","labelName": null,"permalink": "chuyen-doi-ta-emcee-l-ft-muoii-lofi-ver","waveformUrl": "https://wave.sndcdn.com/ftk0Nbu7QQpd_m.json","artistFollowers": 472,"artistTrackCount": 5,"artistPlaylistCount": 0,"artistVerified": false,"artistCity": "Hai Phong","artistCountry": "VN","source": "search:lofi","observedAt": "2026-08-10T14:33:15.175Z","error": null}
The most complete SoundCloud scraper available. It returns every field a SoundCloud track exposes, plus full engagement counts (plays, likes, reposts, comments) and a rich artist profile block (followers, track count, verification, city and country), from keyword searches, artist profiles or direct track and playlist URLs.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor collects SoundCloud tracks and writes one normalized record per track to the run's dataset. It accepts three kinds of input: keyword searches, artist or user profiles (newest uploads), and direct track or playlist URLs (playlists are expanded into their tracks). Results from all inputs are merged and capped by maxTracks.
Each record carries the track title, URL, artwork, engagement counts (plays, likes, reposts, comments), duration, licensing and upload dates, plus an artist profile block (followers, track and playlist counts, verification status, city and country) so you can rank tracks and profile artists without a second lookup.
Quickstart
Open the actor, paste this into the input, and press Run. It searches SoundCloud for "lofi" and returns up to 10 tracks.
{"searchQueries": ["lofi"],"maxTracks": 10}
Provide any combination of searchQueries, artists and trackUrls. Results from all sources are merged and capped by maxTracks.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["lofi"] | Keywords to search on SoundCloud (for example lofi, deep house). Each keyword runs its own search. |
artists | string[] | no | (empty) | Artist or user profile URLs (https://soundcloud.com/username) or plain usernames. Collects the newest tracks each artist uploaded. |
trackUrls | string[] | no | (empty) | Direct track URLs or playlist (set) URLs. Playlists are expanded into their tracks. |
maxTracks | integer | no | 10 | Maximum number of tracks to collect across the whole run. Free Apify plans are capped at 25 per run. |
Output reference
One dataset item per track. Types: string, integer, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
title | string | Track title. |
url | string | Public track URL. |
id | integer | SoundCloud track id. |
permalink | string | Track permalink slug. |
imageUrl | string | Track artwork URL, or null. |
artistName | string | Artist / uploader display name. |
artistUrl | string | Artist profile URL. |
artistId | integer | SoundCloud artist id. |
playCount | integer | Number of plays. |
likeCount | integer | Number of likes. |
repostCount | integer | Number of reposts. |
commentCount | integer | Number of comments. |
durationMs | integer | Playable duration in milliseconds. |
fullDurationMs | integer | Full track duration in milliseconds. |
genre | string | Genre, or null. |
tags | string[] | Track tags. Empty array when none. |
description | string | Track description text, or null. |
uploadDate | string | ISO 8601 upload timestamp. |
releaseDate | string | ISO 8601 release date, or null. |
lastModified | string | ISO 8601 last-modified timestamp. |
downloadable | boolean | Whether the track is marked downloadable. |
downloadCount | integer | Number of downloads. |
license | string | License string, for example all-rights-reserved. |
labelName | string | Record label name, or null. |
waveformUrl | string | URL of the track waveform JSON. |
artistFollowers | integer | Follower count of the artist. |
artistTrackCount | integer | Number of tracks the artist has uploaded. |
artistPlaylistCount | integer | Number of playlists the artist has. |
artistVerified | boolean | Whether the artist profile is verified. |
artistCity | string | Artist city, or null. |
artistCountry | string | Artist country code, or null. |
source | string | Which input produced this record, for example search:lofi. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"searchQueries": ["lofi"], "maxTracks": 10}). The long description is trimmed here with ...:
{"title": "Chuyện Đôi Ta - Emcee L Ft Muộii (lofi ver.)","url": "https://soundcloud.com/minh-ph-789763242/chuyen-doi-ta-emcee-l-ft-muoii-lofi-ver","id": 1172136256,"artistName": "aga1n","artistUrl": "https://soundcloud.com/minh-ph-789763242","artistId": 948916771,"playCount": 5114079,"likeCount": 27018,"repostCount": 506,"commentCount": 316,"durationMs": 210776,"genre": null,"tags": [],"uploadDate": "2021-12-05T02:55:01Z","license": "all-rights-reserved","artistFollowers": 472,"artistTrackCount": 5,"artistVerified": false,"artistCity": "Hai Phong","artistCountry": "VN","source": "search:lofi","observedAt": "2026-08-10T14:33:15.175Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~soundcloud-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["lofi"],"maxTracks":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~soundcloud-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"artists":["https://soundcloud.com/octobersveryown"],"maxTracks":100}'
Apify CLI:
apify call scrapers_lat/soundcloud-scraper \--input '{"trackUrls":["https://soundcloud.com/user/track-name"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per track returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 25 tracks per run. Upgrade for higher
maxTracks.
FAQ and troubleshooting
Can I scrape one artist's uploads?
Yes. Put the profile URL or username in artists. The actor collects the newest tracks that artist uploaded.
Does it expand playlists?
Yes. Put a playlist (set) URL in trackUrls and it is expanded into its tracks.
Why is genre or artistCity null?
The uploader did not set it. Missing source values are returned as null, never invented.
How are the sources combined?
Results from searchQueries, artists and trackUrls are merged and capped by maxTracks. The source field tells you which input produced each record.
Is this an official SoundCloud tool? No. This actor is independent and has no affiliation with SoundCloud. It reads only publicly available track and profile data. Use the results in accordance with the source's terms.
Related scrapers
- Discogs Scraper: Music releases, artists and labels from Discogs.
- DeviantArt Scraper: Artwork and creator data from DeviantArt.
- Behance Scraper: Creative projects and creators from Behance.
- Dribbble Scraper: Design shots and designers from Dribbble.
- Douyin Scraper: Videos and creators from Douyin.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with SoundCloud. Accesses only publicly available track and profile data. Use the results in accordance with the source's terms.
