# SoundCloud Scraper — Tracks, Artists & Playlists (`hipersoft/soundcloud-scraper`) Actor

Search SoundCloud and scrape tracks (plays, likes, reposts, genre, duration), artists (followers, track count, location) and playlists. Resolve any SoundCloud URL. Fast clean HTTP. For music analytics, A\&R and marketing.

- **URL**: https://apify.com/hipersoft/soundcloud-scraper.md
- **Developed by:** [Hipersoft](https://apify.com/hipersoft) (community)
- **Categories:** Other
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00127 / item scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SoundCloud Scraper — Tracks, Artists & Playlists

Search **SoundCloud** and pull clean, structured JSON for **tracks, artists (users) and playlists** — including play counts, likes, reposts, followers and genres. You can also drop in any SoundCloud URL and resolve it directly.  Fast and reliable.

![SoundCloud Scraper input — search terms, type and item limit in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/soundcloud-scraper-input.png?v=2)

### Features

- 🎧 **Tracks, users & playlists** — set `searchType` to `all`, `track`, `user` or `playlist`.
- 📊 **Engagement metrics** — tracks come with `playbackCount`, `likesCount`, `repostsCount` and `commentCount`.
- 👤 **Artist intelligence** — user records include `followersCount`, `trackCount`, `city`, `countryCode` and `verified`.
- 🔗 **Resolve any URL** — paste track/user/playlist links into `urls` to scrape them directly, no search needed.
- 🎚️ **Volume control** — `maxItemsPerSearch` (1–2000) with automatic pagination per search term.
- 🧱 **Clean text fields** — descriptions and tags are stripped of HTML and decoded, ready to use.

### Use cases

- Find rising tracks in a genre by sorting on `playbackCount` and `likesCount`.
- Build A\&R shortlists of artists by `followersCount` and location.
- Monitor a track or artist's engagement over time.
- Enrich a music dataset with genres, durations and artwork.

### Input

```json
{
  "searches": ["lofi", "deep house"],
  "searchType": "track",
  "urls": [],
  "maxItemsPerSearch": 40
}
```

| Field | Description |
| --- | --- |
| `searches` | Keywords to search on SoundCloud, one per line. |
| `searchType` | What to return: `all`, `track`, `user` or `playlist`. |
| `urls` | Specific SoundCloud track/user/playlist URLs to resolve directly. |
| `maxItemsPerSearch` | Results per search term (1–2000). |

### What you get

![SoundCloud Scraper output example — artists and tracks with followers, plays and genre as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/soundcloud-scraper-output.png?v=5)

One flat JSON record per item. Example track:

```json
{
  "type": "track",
  "id": 123456789,
  "title": "Late Night Lofi",
  "user": "chillbeats",
  "userId": 987654,
  "durationMs": 184000,
  "genre": "Lo-fi",
  "playbackCount": 254800,
  "likesCount": 9800,
  "repostsCount": 1200,
  "commentCount": 340,
  "downloadable": false,
  "createdAt": "2023-04-12T10:20:30Z",
  "tags": "lofi chill study",
  "description": "A mellow beat for late nights.",
  "artwork": "https://i1.sndcdn.com/artworks-....-t500x500.jpg",
  "url": "https://soundcloud.com/chillbeats/late-night-lofi"
}
```

#### Output schema

Fields returned per artist/user record (track and playlist records carry their own metrics such as `playbackCount`, `likesCount`, `repostsCount`, `commentCount`, `genre` and `durationMs`):

| Field | Type | Description |
|---|---|---|
| `type` | string | Item type: `track`, `user` or `playlist`. |
| `id` | integer | SoundCloud's numeric identifier for the item. |
| `username` | string | Artist's SoundCloud handle. |
| `fullName` | string | Artist's display name. |
| `followersCount` | integer | Number of followers. |
| `followingsCount` | integer | Number of accounts the artist follows. |
| `trackCount` | integer | Number of tracks the artist has uploaded. |
| `playlistCount` | integer | Number of playlists the artist has created. |
| `city` | string | City listed on the profile. |
| `countryCode` | string | Country code listed on the profile. |
| `verified` | boolean | Whether the account is verified. |
| `description` | string | Profile or item description text. |
| `avatar` | string (URL) | Avatar / artwork image URL. |
| `url` | string (URL) | Link to the item on SoundCloud. |

### Related Actors

Building a music dataset? Pair this with our other music and media scrapers:

- [Spotify Scraper](https://apify.com/hipersoft/spotify-scraper) — tracks, artists, albums and playlists.
- [Deezer Scraper](https://apify.com/hipersoft/deezer-scraper) — tracks, artists, albums, playlists and global top charts with ISRCs.
- [Apple Podcasts Scraper](https://apify.com/hipersoft/apple-podcasts-scraper) — podcast shows and episodes with RSS feeds and artwork.

### FAQ

**How many tracks can I get per run?**
Set `maxItemsPerSearch` up to 2,000 per search term, with pagination handled automatically. Add more keywords in `searches` to scale the run further.

**Can I download tracks or audio?**
No. This Actor returns public metadata only — titles, engagement metrics, genres, artwork URLs and descriptions. It does not download audio streams or files.

**What's the output format?**
One flat JSON record per item, with clean, decoded text fields. Export as JSON, CSV or Excel from the dataset.

**Can I scrape a specific track, artist or playlist URL?**
Yes. Paste any SoundCloud track, user or playlist link into `urls` to resolve it directly, no search required.

**Can I connect it to other tools?**
The SoundCloud Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

### Notes

Returns public metadata only — no audio streams or downloads. Not affiliated with, endorsed by, or connected to SoundCloud; all trademarks belong to their respective owners.

# Actor input Schema

## `searches` (type: `array`):

Keywords to search on SoundCloud (e.g. "lofi", "daft punk"), one per line.

## `searchType` (type: `string`):

What to return.

## `urls` (type: `array`):

Specific SoundCloud track/user/playlist URLs to resolve directly. One per line.

## `maxItemsPerSearch` (type: `integer`):

Results per search term.

## `proxyConfiguration` (type: `object`):

Optional. SoundCloud works without a proxy; enable one for large runs.

## Actor input object example

```json
{
  "searches": [
    "lofi"
  ],
  "searchType": "all",
  "urls": [],
  "maxItemsPerSearch": 40,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searches": [
        "lofi"
    ],
    "urls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/soundcloud-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searches": ["lofi"],
    "urls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/soundcloud-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searches": [
    "lofi"
  ],
  "urls": []
}' |
apify call hipersoft/soundcloud-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/soundcloud-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2F7Nlp8lAJpqDkQz6/builds/hSd8tu9taBfXdkJ3C/openapi.json
