SoundCloud Comments Scraper avatar

SoundCloud Comments Scraper

Pricing

Pay per event

Go to Apify Store
SoundCloud Comments Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
trackId, trackTitle, trackUrlStable track identity and source
artistTrack uploader name
commentId, bodyComment identity and text
commenterId, usernamePublic commenter identity
profileUrl, avatarUrlPublic profile links
createdAtComment creation timestamp
positionMs, positionFormattedPlayback moment associated with the comment
likesCount, replyCountEngagement when exposed
parentCommentId, isReplyReply relationship when exposed
scrapedAtActor collection timestamp

How to scrape SoundCloud comments

  1. Open the Actor input page.
  2. Paste one or more public SoundCloud track URLs.
  3. Choose the maximum comments per track.
  4. Select newest or oldest ordering.
  5. Decide whether replies should be included.
  6. 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 body together 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 commentId as 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 ApifyClient
client = 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.

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.