Soundcloud Scraper
Pricing
$5.00 / 1,000 result scrapeds
Soundcloud Scraper
Scrape SoundCloud tracks, playlists, and artist profiles without authentication. Extract track metadata (plays, likes, reposts), artist info, tags, and descriptions. Search by keyword or genre. Export to JSON/CSV.
Pricing
$5.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
CryptoSignals Agent
Actor stats
0
Bookmarked
7
Total users
6
Monthly active users
27 minutes ago
Last modified
Categories
Share
Extract track data, artist profiles, and search results from SoundCloud at scale. This Apify Actor uses SoundCloud's public API v2 with automatic client_id rotation — no authentication required.
Why SoundCloud Data?
SoundCloud hosts 300M+ tracks from 40M+ creators. Unlike Spotify, most content is public and uploaded by independent artists, making it the richest source for:
- Music discovery & playlist curation — find trending tracks by genre, BPM, or mood before they hit mainstream platforms
- Artist research & A&R — identify emerging artists by follower growth, play counts, and engagement ratios
- Music market analysis — track genre trends, release patterns, and engagement benchmarks across millions of tracks
- Content creation — find Creative Commons tracks for podcasts, YouTube videos, and streaming
- Academic research — analyze music metadata, waveform patterns, and listener behavior at scale
- Label scouting — discover unsigned talent with high engagement-to-follower ratios
- Competitive intelligence — monitor competitor releases, fan engagement, and genre positioning
Features
1. Search Tracks
Search SoundCloud's catalog by keywords, genres, or artist names. Returns structured data including play counts, likes, duration, artwork URLs, and more.
{"action": "search","query": "lo-fi hip hop","maxItems": 50}
Output fields:
| Field | Type | Description |
|---|---|---|
id | number | SoundCloud track ID |
title | string | Track title |
artist | string | Artist/uploader name |
artistUrl | string | Artist profile URL |
url | string | Track permalink URL |
plays | number | Total play count |
likes | number | Total likes |
reposts | number | Total reposts |
comments | number | Comment count |
duration | number | Duration in milliseconds |
durationFormatted | string | Duration as MM:SS |
genre | string | Track genre |
tags | string | Track tags |
imageUrl | string | High-res artwork URL (500x500) |
waveformUrl | string | Waveform JSON URL |
createdAt | string | Upload date (ISO 8601) |
description | string | Track description (max 500 chars) |
license | string | License type |
downloadable | boolean | Whether downloads are enabled |
streamable | boolean | Whether streaming is enabled |
2. Track Details
Get comprehensive track data including waveform samples and available audio formats. Perfect for music analysis, visualization, and audio research.
{"action": "track","url": "https://soundcloud.com/flume/never-be-like-you-feat-kai"}
Additional output fields for track details:
| Field | Type | Description |
|---|---|---|
waveform.width | number | Waveform width in samples |
waveform.height | number | Waveform max amplitude |
waveform.samples | array | Array of amplitude values |
formats | array | Available audio transcodings |
formats[].preset | string | Audio preset (e.g., mp3_0_1, aac_160k) |
formats[].protocol | string | Streaming protocol (hls, progressive) |
formats[].mimeType | string | MIME type of the audio format |
3. User Profile
Scrape artist/user profiles with follower counts, track listings, and engagement metrics. Ideal for artist discovery and competitive analysis.
{"action": "user","url": "https://soundcloud.com/flume","maxItems": 30}
Output fields:
| Field | Type | Description |
|---|---|---|
id | number | SoundCloud user ID |
username | string | Display username |
fullName | string | Full name |
url | string | Profile URL |
avatarUrl | string | High-res avatar URL |
city | string | City |
country | string | Country code |
description | string | Bio (max 500 chars) |
followers | number | Follower count |
following | number | Following count |
tracks | number | Total track count |
playlists | number | Playlist count |
likes | number | Total likes given |
verified | boolean | Verified status |
createdAt | string | Account creation date |
trackList | array | Array of track objects |
Use Cases & Examples
Playlist Curation Pipeline
Build automated playlist curation by searching for tracks in a genre, filtering by engagement metrics, and sorting by recency:
{"action": "search","query": "ambient electronic 2024","maxItems": 100}
Then filter results where plays > 10000 and likes/plays > 0.02 for high-engagement tracks.
Artist Discovery & A&R
Find emerging artists by searching for a genre and analyzing the artist profiles behind top-performing tracks:
{"action": "search","query": "bedroom pop","maxItems": 200}
Group by artist, count appearances, and fetch profiles for artists with multiple high-performing tracks but under 10K followers.
Music Market Analysis
Track genre trends over time by running periodic searches and comparing play count distributions:
{"action": "search","query": "drill","maxItems": 200}
Aggregate plays, likes, and comments to build engagement benchmarks per genre. Compare across genres to identify growth trends.
Waveform Analysis
Extract waveform data for audio fingerprinting, visualization, or energy analysis:
{"action": "track","url": "https://soundcloud.com/artist/track-name"}
The waveform.samples array contains amplitude values that represent the audio energy over time — useful for identifying drops, builds, and quiet sections.
Content Licensing Research
Find tracks available under Creative Commons or with downloads enabled:
{"action": "search","query": "creative commons background music","maxItems": 50}
Filter results where downloadable: true or license contains "cc-" for freely usable tracks.
Competitive Monitoring
Monitor a competitor label or artist's releases and engagement:
{"action": "user","url": "https://soundcloud.com/label-name","maxItems": 50}
Schedule periodic runs to track follower growth, new releases, and engagement trends over time.
How It Works
- Auto-rotating client_id — The actor extracts a fresh
client_idfrom SoundCloud's JavaScript bundles on every run. No hardcoded keys that expire. - Public API v2 — Uses SoundCloud's public API (
api-v2.soundcloud.com) for fast, structured JSON responses. No browser rendering needed. - Pagination — Automatically handles pagination for search results up to your
maxItemslimit. - High-res images — Automatically upgrades artwork and avatar URLs to 500x500 resolution.
Input Schema
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | search | Action to perform: search, track, or user |
query | string | For search | — | Search query (keywords, genre, artist name) |
url | string | For track/user | — | Full SoundCloud URL |
maxItems | integer | No | 20 | Maximum results (1–200) |
Integrations
Connect SoundCloud Scraper to your workflow:
- Google Sheets — Export track data directly to spreadsheets for analysis
- Zapier / Make — Trigger workflows when new tracks match your criteria
- Slack — Get notifications for trending tracks in your genre
- Airtable — Build a searchable music database
- Python / Node.js — Use the Apify API client to integrate into your code
API Usage
Call the actor programmatically via the Apify API:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("YOUR_ACTOR_ID").call(run_input={"action": "search","query": "synthwave","maxItems": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['title']} by {item['artist']} — {item['plays']:,} plays")
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_ACTOR_ID').call({action: 'search',query: 'synthwave',maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => {console.log(`${item.title} by ${item.artist} — ${item.plays.toLocaleString()} plays`);});
Rate Limits & Best Practices
- SoundCloud's public API has rate limits. The actor respects these with automatic pagination delays.
- For large-scale scraping (1000+ items), split into multiple runs with different queries.
- Use
maxItemsto control costs — each result counts toward Actor.charge() billing. - Schedule runs during off-peak hours for more reliable results.
Pricing
This actor uses pay-per-result pricing via Actor.charge():
| Event | Description |
|---|---|
search-results | Charged per search result returned |
track-detail | Charged per track detail fetched |
user-profile | Charged per user profile scraped |
Legal & Ethical Use
This actor accesses only publicly available data through SoundCloud's public API. Users are responsible for:
- Complying with SoundCloud's Terms of Use
- Respecting copyright and intellectual property rights
- Using data in accordance with applicable data protection laws (GDPR, CCPA)
- Not using scraped data for spam, harassment, or unauthorized commercial purposes
🔒 Avoiding SoundCloud Rate Limits
SoundCloud's API enforces strict rate limits and blocks datacenter IPs. For high-volume track and user data extraction, residential proxies prevent throttling.
ThorData Residential Proxies provide 200M+ rotating residential IPs across 195 countries — ensuring smooth, uninterrupted SoundCloud scraping at any scale.
Changelog
v0.0 (Initial Release)
- Search tracks by keywords with pagination
- Track detail extraction with waveform data
- User profile scraping with track listings
- Auto-rotating client_id extraction
- High-res artwork URL upgrade