SoundCloud Scraper — Music Data & Artist Emails
Pricing
from $0.90 / 1,000 soundcloud result saveds
SoundCloud Scraper — Music Data & Artist Emails
Scrape SoundCloud tracks, playlists, albums and the trending chart with no login. Filters, new-release monitoring, rights data and public emails. Only rows found are charged: $0.0016 per row on Free, from $0.0009 on higher plans, plus running cost.
Pricing
from $0.90 / 1,000 soundcloud result saveds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Features
Share
What is SoundCloud Scraper — Music Data & Artist Emails?
SoundCloud Scraper gets public SoundCloud tracks, playlists, albums, the trending chart, artists and search results with no login and no cookies, and you are charged only for the rows it finds and saves. Pay per saved row, from $0.0009 on Gold and higher Apify plans and $0.0016 on the Free plan, plus Apify running cost. Search by keyword, filter tracks by genre, date, length, license and plays, get only new releases on a schedule, or paste SoundCloud links. Every saved row is one track, playlist or artist with plays, likes, reposts, comments, tags, genre, ISRC, label, release and rights data, dates and the contact emails that artists publish in their descriptions.
Use it to find new releases, follow a scene on a schedule and get only what is new, build a research dataset with release and rights data, shortlist tracks and playlists for a campaign, track what is trending, or hand structured music data to an AI agent.
What you can do
Mode (mode) | What it returns | Input it needs |
|---|---|---|
Search tracks (searchTracks) | Tracks matching a keyword, with optional filters | searchQueries |
Search playlists (searchPlaylists) | Playlist rows (one row per playlist) | searchQueries |
Search albums (searchAlbums) | Album rows (returned as playlist rows) | searchQueries |
Trending chart (trending) | SoundCloud's top 100 trending tracks with chartRank and chartScore | nothing |
Scrape URLs (scrapeUrls) | One row for each track, artist or playlist link; playlists can add their track rows | startUrls |
Artist catalog (artistTracks) | Every public track of an artist profile | startUrls |
Search artists (searchArtists) | Artist rows for a keyword | searchQueries |
Use SoundCloud Artists Scraper when you need artist lead lists with follower ranges, city and country filters, social links and followers of an artist. This Actor focuses on tracks, playlists, albums and the chart.
Why use it
- Filters before you pay. Genre or tag, added or updated within (hour, day, week, month, year), track length and license narrow the search on SoundCloud's side, so you only save the rows you want.
- Only what is new. Turn on Only New Rows Since Last Run for a scheduled job. The Actor keeps a saved list in your own account and returns, and charges for, only rows that are new since the last run.
- Release and rights data. Released tracks carry ISRC, UPC, label, album and release title, writer or composer, publisher and the P and C lines whenever the uploader or distributor supplies them.
- More than 300 rows from one search. SoundCloud stops a search at about 300 rows. When you ask for more, the Actor repeats the track search inside narrower date windows and combines the results. Each track is saved once.
- Honest results. Every run ends with a clear outcome (
COMPLETE,PARTIAL,VALID_EMPTY,INVALID_INPUTorUPSTREAM_FAILED) inOUTPUTandRUN_SUMMARY, and a run says so when SoundCloud holds more matches than it returns. - Fast and light. The Actor reads each artist's public bio from the data that already comes with the track, so it makes no extra request per artist and runs on 256 MB.
- Keeps working. SoundCloud's public data is the first route. If SoundCloud blocks it, the Actor switches to the Apify proxy and then to a managed backup route, within a spending limit set for every job.
Builder's note
I found that SoundCloud's track search already carries each uploader's full public bio, so asking for the artist a second time returned identical text and only slowed runs down. Reading the bio from the track itself keeps emails complete and removes one request per artist. I also found that a single oddly written address in a bio used to discard the whole track, so addresses that are not valid are now dropped and the track is kept.
Input
| Field | Type | Purpose | Default |
|---|---|---|---|
mode | string | Chooses what to collect (table above). | searchTracks |
searchQueries | array of strings | Up to 20 keywords or phrases for the search modes. | ["lofi hip hop"] |
startUrls | array of objects | Up to 50 public SoundCloud track, artist or playlist links. | A public track link |
maxResults | integer | Global cap on saved rows and paid result events (1–1,000). | 25 |
genreOrTag | string | Search tracks only: keep tracks with this genre or tag. | empty |
uploadedWithin | string | Search tracks only: keep tracks added or updated within a period: any, last_hour, last_day, last_week, last_month, last_year. | any |
duration | string | Search tracks only: any, short (under 2 min), medium (2–10 min), long (10–30 min), epic (over 30 min). | any |
license | string | Search tracks only: any, to_share, to_use_commercially, to_modify_commercially. | any |
minPlays, minLikes, minFollowers | integer | Search tracks, Artist catalog and Trending chart: keep tracks with at least this many plays, likes, or artist followers. Skipped rows are never charged. | 0 |
uploadedAfter | string | Search tracks, Artist catalog and Trending chart: keep tracks first uploaded on or after this date, written YYYY-MM-DD. | empty |
onlyNewRows | boolean | Return and charge only rows that are new since the last run with the same saved list. | false |
monitorName | string | Name of your saved list, 3 to 63 letters, digits or hyphens. Use one name per job. | soundcloud-monitor |
resetMonitor | boolean | Forget the saved list before this run, so every matching row counts as new. | false |
widenSearch | boolean | Repeat track searches inside date windows to pass SoundCloud's 300-row limit. | true |
trendingGenre | string | Trending chart only: keep chart tracks whose genre or tags contain this word; rows keep their real chart position. | empty |
includeContactEmails | boolean | Extract emails artists wrote in public descriptions. | true |
expandPlaylists | boolean | For playlist links, also save the playlist's track rows. | true |
Example: new commercial-use lofi tracks from the last month
{"mode": "searchTracks","searchQueries": ["lofi hip hop"],"genreOrTag": "lofi","uploadedWithin": "last_month","license": "to_use_commercially","maxResults": 50}
Example: a daily feed of new lofi releases
{"mode": "searchTracks","searchQueries": ["lofi hip hop"],"uploadedWithin": "last_week","minPlays": 500,"onlyNewRows": true,"monitorName": "lofi-new-releases","maxResults": 100}
Schedule this input once a day. The first run saves the matching tracks, and every later run returns only tracks that appeared since.
Example: the trending chart
{"mode": "trending","maxResults": 100}
Example: playlists for a scene
{"mode": "searchPlaylists","searchQueries": ["chillhop"],"maxResults": 30}
Output
Each row is one entity with the same fields, so exports and joins stay predictable. Fields that belong to another row type stay null.
| Field | Meaning |
|---|---|
entityType | track, artist or playlist (albums are playlist rows) |
id, url, title | Stable SoundCloud ID, public link and title or username |
description, contactEmails | Public description and the emails found in it and in the artist bio |
artistId, artistName, artistUrl | Uploader or owner |
genre, tags, durationMs | Genre, tags and length |
playbackCount, likesCount, repostsCount, commentCount, downloadCount | Public engagement counts |
trackCount, playlistCount, followersCount, followingCount, verified | Counts for artist and playlist rows, verification flag |
isrc, upc, labelName, license, releaseDate | Release metadata when the uploader provides it |
albumTitle, releaseTitle, writerComposer, publisherName, publisherArtist, pLine, cLine | Rights and release details from the distributor when supplied (track rows) |
createdAt, lastModifiedAt, isExplicit, streamable, downloadable | Dates and flags |
city, countryCode | Public location of the artist |
chartRank, chartScore | Position and score on the trending chart; null outside the Trending chart mode |
sourceUrl, dataSource, scrapedAt, warnings | Which query or link produced the row, which route supplied it, when, and row notes |
Sample row (trending chart)
{"entityType": "track","id": "2274228401","url": "https://soundcloud.com/user-673759314/nafe-smallz-know-me-better","title": "Nafe Smallz - Know me better (Louca's Groove Edit) [FREE DL]","artistName": "Louca's Groove","contactEmails": [],"durationMs": 331912,"playbackCount": 738969,"likesCount": 13924,"repostsCount": 578,"commentCount": 293,"license": "all-rights-reserved","createdAt": "2026-02-27T00:11:57.000Z","chartRank": 2,"chartScore": 0.7760607949933189,"sourceUrl": "trending","dataSource": "soundcloud"}
Pricing
This Actor uses pay per event pricing plus Apify platform usage. You pay for each complete row saved to the dataset (the soundcloud-result event) and a small Actor start event. The Pricing tab shows the current event prices for your plan, and higher Apify plans pay less per row.
- 100 saved tracks means 100 result events, one start event and platform usage. At the live prices that is $0.16 on the Free plan and $0.09 on Gold and higher plans, plus the start event and running cost.
- A playlist link with
expandPlaylistson saves the playlist row and every track row, so a 60-track playlist is 61 result events. maxResultsis a hard cap, and so is the maximum charge you set on the run: the Actor stops as soon as either is reached and keeps the rows it has.- With Only New Rows Since Last Run, rows you already have are skipped and not charged, so a scheduled job pays only for what is new.
- Rows skipped by Minimum Plays, Minimum Likes, Minimum Artist Followers or Uploaded After are not charged either.
- Runs that find nothing, or that are rejected because of invalid input, save no rows and so have no result charges.
Use with AI agents (MCP)
This Actor works through the Apify MCP server as a structured SoundCloud data tool. Its identity is khadinakbar/soundcloud-scraper.
Find the 50 newest lofi tracks on SoundCloud from the last week that allow commercial use, and list the title, artist, plays and likes.
Get the SoundCloud trending chart and tell me which genres appear most in the top 20.
Agents can read dataset rows directly instead of parsing SoundCloud pages. Keep maxResults small for exploratory calls, check OUTPUT.outcome first, and read RUN_SUMMARY.warnings for notes such as a search that reached SoundCloud's row limit.
API example
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/soundcloud-scraper').call({mode: 'searchTracks',searchQueries: ['lofi hip hop'],uploadedWithin: 'last_week',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, items[0]?.title);
Python:
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/soundcloud-scraper").call(run_input={"mode": "trending","maxResults": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(len(items), items[0]["chartRank"])
Best results
- Start with a small
maxResultssuch as 10 to check the rows, then raise it. - Combine
uploadedWithinwith a keyword to follow new and recently updated releases, and usegenreOrTagto keep the search on one scene. - For a recurring job, turn on
onlyNewRowsand give the job its ownmonitorName; useresetMonitoronce if you want the whole list again. - Use
scrapeUrlswhen you already have links,artistTracksto export one artist's full catalog, andtrendingfor a daily snapshot of the chart. - Emails appear only when an artist wrote one in a track or profile description, so expect a minority of rows to carry one.
- For a search with a very large number of matches, add filters or a more specific keyword instead of asking for the maximum.
Continue the workflow
- Use SoundCloud Artists Scraper — Emails & Socials when your next step is an artist lead list with follower range, city, country, social links and followers of an artist.
- Use Spotify Scraper — All-in-One when you want to compare the same artists and releases on Spotify.
FAQ
Why does a big search return fewer rows than SoundCloud reports?
SoundCloud returns about 300 rows for any one search. With widenSearch on, the Actor repeats track searches inside narrower date windows and combines the results. If SoundCloud still holds more matches than were returned, the run ends PARTIAL and RUN_SUMMARY.warnings explains it. Add a filter such as uploadedWithin or a more specific keyword to reach the rest.
Can I get a playlist's tracks from a playlist search?
Playlist and album search return the playlists themselves, one row each. Paste a playlist link into scrapeUrls with expandPlaylists on to get its tracks.
What does the trending chart contain?
SoundCloud's current top 100 trending tracks. chartRank is the position and chartScore is SoundCloud's own score. With trendingGenre you keep only matching tracks, and each one keeps its real position on the full chart.
How does Only New Rows Since Last Run work?
The Actor saves the identifiers of the rows it delivers in a saved list in your own Apify account, under the name you choose. On the next run it skips rows on that list, saves and charges only new ones, and adds them to the list. A run with nothing new ends with a clear message that no new rows were found. Use a different monitorName for each separate job.
Do I need a SoundCloud account or API key?
No. The Actor works only with public data and needs no login, cookies or key.
Does it download audio?
No. It collects public metadata only. The downloadable field reports SoundCloud's public download flag.
Responsible use
This Actor works with public SoundCloud data only. Respect SoundCloud's terms, privacy rules and the laws that apply to outreach when you use contact emails that artists publish in their descriptions. Keep RUN_SUMMARY for audits and cost review.