SoundCloud Comments Scraper
Pricing
Pay per event
SoundCloud Comments Scraper
Export timestamped public SoundCloud comments with commenter profiles, track positions, replies, and engagement fields for audience research and monitoring.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Export timestamped comments from public SoundCloud tracks into clean JSON, CSV, Excel, or API-ready datasets. Collect the comment text, commenter profile, exact playback position, reply relationship, engagement counters, track details, and scrape timestamp without requiring a SoundCloud login.
Use this Actor for release monitoring, fan research, social listening, audience analysis, music research, and finding the moments in a track that create the strongest reactions.
What does SoundCloud Comments Scraper do?
The Actor accepts one or more public track URLs, resolves each track through SoundCloud's public web API, paginates its comments, and saves one structured dataset row per comment. It discovers the current public web-client identifier automatically, so users do not need to supply API keys or cookies.
It can collect up to 5,000 comments per track, include replies, and sort results newest-first or oldest-first.
Who is it for?
Artists, managers, and labels
- 🎵 Export comments after a release, group reactions by track timestamp, and identify moments worth promoting.
- 🏷️ Schedule catalog-wide monitoring, deduplicate on
commentId, and route new fan questions to the release team.
Audience and media analysts
- 📊 Social-listening teams can load typed comments into a dashboard and compare sentiment across releases.
- 🔬 Researchers can study timestamped audience behavior while preserving track and commenter context.
- 📰 Music journalists can locate notable responses and trace each quote to its public source.
Developers and AI teams
- 🤖 Feed a consistent dataset into sentiment, topic-modeling, semantic-search, or alerting pipelines through the API or MCP.
Why use this SoundCloud comment extractor?
Manual copying loses timestamps and profile links and does not scale. This Actor produces a repeatable schema, follows pagination, supports multiple tracks in one run, and integrates with Apify schedules, webhooks, datasets, API clients, and MCP.
Data you can extract
| Field | Description |
|---|---|
trackId, trackTitle, trackUrl | Stable track identity and source |
artist | Track uploader name |
commentId, body | Comment identity and text |
commenterId, username | Public commenter identity |
profileUrl, avatarUrl | Public profile links |
createdAt | Comment creation timestamp |
positionMs, positionFormatted | Playback moment associated with the comment |
likesCount, replyCount | Engagement when exposed |
parentCommentId, isReply | Reply relationship when exposed |
scrapedAt | Actor collection timestamp |
How to scrape SoundCloud comments
- Open the Actor input page.
- Paste one or more public SoundCloud track URLs.
- Choose the maximum comments per track.
- Select newest or oldest ordering.
- Decide whether replies should be included.
- Click Start and export the resulting dataset.
Input
{"trackUrls": [{ "url": "https://soundcloud.com/odesza/a-moment-apart" }],"maxCommentsPerTrack": 100,"sort": "newest","includeReplies": true,"useProxy": false}
trackUrls is required. maxCommentsPerTrack accepts 1–5,000. Proxy rotation is optional and normally only useful for larger recurring portfolios.
Output example
{"trackId": 341471474,"trackTitle": "A Moment Apart","trackUrl": "https://soundcloud.com/odesza/a-moment-apart","artist": "ODESZA","commentId": 2562917397,"body": "Amazing moment","username": "listener","createdAt": "2026-07-04T06:53:57Z","positionMs": 2901,"positionFormatted": "0:02","isReply": false,"scrapedAt": "2026-07-12T00:00:00.000Z"}
How much does it cost to scrape SoundCloud comments?
The Actor uses pay-per-event pricing: a small run-start charge plus a charge for each saved comment. The Console estimates the run price before execution. Tiered volume discounts make larger catalog exports cheaper per comment. You only pay for records successfully added to the dataset.
Monitoring new comments
Create an Apify schedule and run the Actor hourly, daily, or weekly with newest-first sorting. Store comment IDs in your destination and upsert on commentId to keep only newly observed feedback. A webhook can trigger Slack, a database pipeline, or an analysis job after every successful run.
Finding the most-discussed track moments
Group output by positionFormatted or bucket positionMs into five- or ten-second windows. Count comments per bucket to identify drops, lyrics, transitions, or hooks that attract attention. Keep the original comment text for qualitative interpretation.
Tips for reliable runs
- Start with 100 comments while validating a workflow.
- Use canonical public track URLs, not private secret links.
- Enable proxy rotation for large multi-track portfolios.
- Keep newest-first ordering for recurring monitoring.
- Use oldest-first ordering for historical research exports.
- Treat missing optional engagement fields as unavailable from the public source.
Integrations
- Actor → Google Sheets or Airtable: export each run for editorial review, then deduplicate rows on
commentId. - Actor → BigQuery or Snowflake: schedule daily runs, append comments by
trackId, and build release- or artist-level trend dashboards. - Actor → Slack: attach a run-succeeded webhook that filters new comments and posts high-engagement feedback to a release channel.
- Actor → Make, Zapier, or n8n: trigger a workflow after each run, classify comment sentiment, and route questions or complaints to the right owner.
- Actor → vector database: embed
bodytogether with track and timestamp metadata for semantic search across a catalog. - Actor → custom service: call the Apify API, consume the dataset, and upsert records using
commentIdas the stable key.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/soundcloud-comments-scraper').call({trackUrls: [{ url: 'https://soundcloud.com/odesza/a-moment-apart' }],maxCommentsPerTrack: 100});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python API
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/soundcloud-comments-scraper').call(run_input={'trackUrls': [{'url': 'https://soundcloud.com/odesza/a-moment-apart'}],'maxCommentsPerTrack': 100,})items = client.dataset(run['defaultDatasetId']).list_items().items
cURL API
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~soundcloud-comments-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"trackUrls":[{"url":"https://soundcloud.com/odesza/a-moment-apart"}],"maxCommentsPerTrack":100}'
MCP and AI agents
Connect through https://mcp.apify.com?tools=automation-lab/soundcloud-comments-scraper. Add the server in Claude Code:
$claude mcp add apify --transport http 'https://mcp.apify.com?tools=automation-lab/soundcloud-comments-scraper'
For Claude Desktop, add this server configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/soundcloud-comments-scraper"}}}
For Cursor, open Settings → Tools & MCP → New MCP Server and add the same URL as a streamable HTTP server named apify. Alternatively, place this in .cursor/mcp.json:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/soundcloud-comments-scraper"}}}
For VS Code, open the Command Palette, choose MCP: Add Server, select HTTP, paste the URL, and name it apify. The equivalent .vscode/mcp.json is:
{"servers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/soundcloud-comments-scraper"}}}
Start the server from the MCP view, complete Apify authentication when prompted, and then invoke the Actor from agent chat.
Example prompts:
- “Export the newest 200 comments from this SoundCloud track and summarize the most discussed timestamps.”
- “Compare audience feedback across these three SoundCloud releases and group themes by track.”
- “Find comments posted since my last export and highlight repeated questions from listeners.”
Agents can run the Actor and inspect its structured dataset instead of browsing comments manually.
Scheduling and webhooks
Save the input as an Apify task, attach a schedule, and configure a run-succeeded webhook. For idempotent processing, use commentId as the primary key and retain trackId as the partition key.
Error handling
Invalid, private, removed, or non-track URLs are logged and skipped so another valid track can still finish. A run fails early only when no track URLs are supplied or SoundCloud's public client identifier cannot be discovered.
Privacy and legality
The Actor accesses public track and comment data without login. Use the output lawfully and respect applicable privacy, copyright, contractual, and data-retention requirements. Do not use public profile data for harassment, spam, discrimination, or unauthorized sensitive profiling.
FAQ
Does this require a SoundCloud account or API key?
No. The Actor automatically discovers the same rotating public client identifier used by SoundCloud's web application.
Can it scrape private tracks?
No. The supported scope is publicly accessible SoundCloud tracks.
Why did a track return no records?
The track may have no comments, comments may be disabled, or the URL may be invalid, private, or removed. Verify that comments are visible publicly in a browser.
Can I collect more than 5,000 comments per track?
The current run limit is 5,000 per track to keep executions bounded and predictable. Split long-term monitoring into scheduled runs.
Are replies included?
Replies are included when SoundCloud exposes them and includeReplies is enabled. Reply records contain isReply and, when available, parentCommentId.
Related actors
Use SoundCloud Scraper when you need track metadata rather than comment-level records. Combine both datasets on track ID for catalog metadata plus audience feedback.
Support
If a public track consistently fails, open an issue with the track URL, run ID, expected comment count, and the relevant log excerpt. Do not include private credentials or personal tokens.
Build responsible music intelligence
Timestamped comments connect language to exact listening moments. Export them in a stable, automation-ready format, preserve source links, and combine quantitative peaks with human review for more useful release decisions.