# SoundCloud Scraper (`automation-lab/soundcloud-scraper`) Actor

Extract SoundCloud tracks, playlists, and artist profiles. Get play counts, likes, reposts, genre, tags, ISRC, and full creator details. No API key needed.

- **URL**: https://apify.com/automation-lab/soundcloud-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## SoundCloud Scraper

Extract tracks, playlists, user profiles, and search results from SoundCloud — no API key or login required. Get full metadata: play counts, likes, reposts, comments, genre, tags, ISRC, and creator profiles. Export to JSON, CSV, Excel, or feed into your pipelines.

Try it free on [Apify Store](https://apify.com/automation-lab/soundcloud-scraper). Get up to **100 tracks free** on the Apify Free plan ($5 credits).

### What does SoundCloud Scraper do?

SoundCloud Scraper uses SoundCloud's public API to extract full track, playlist, and user data without a browser or paid API subscription. Just enter a search query or a SoundCloud URL and you get structured data you can use immediately.

**Supported scrape modes:**
- 🔍 **Search tracks** — find tracks by keyword, genre, or artist name
- 🎵 **Search playlists** — find curated playlists matching your query
- 👤 **Search users** — find artists and creators
- 🎧 **Track by URL** — scrape full metadata for a specific track
- 📋 **Playlist by URL** — extract playlist metadata
- 👤 **User profile + tracks** — scrape a creator's profile and all their public tracks

Unlike web scrapers that break constantly, this actor uses **SoundCloud's official internal API** — the same one their web player uses — making it reliable and fast.

### Who is it for?

**Music researchers and analysts** tracking trends across genres, monitoring which emerging artists gain traction, or building datasets for music recommendation models.

**Music marketing professionals** who need to monitor how tracks are performing — play counts, likes, comment velocity — to report on campaigns or identify influential creators to collaborate with.

**Podcasters and content creators** who want to find popular tracks in specific genres for licensed background music, or track how their own music is performing over time.

**Data scientists and developers** building music discovery apps, playlist generators, or audio classification datasets who need labeled track metadata at scale without paying for the official SoundCloud API.

**Record labels and A&R teams** identifying emerging talent by monitoring follower growth, track engagement, and upload frequency across thousands of independent artists.

### Why use SoundCloud Scraper?

- ✅ **No API key required** — SoundCloud's public v2 API works without authentication
- ✅ **No login or cookies needed** — fully public data extraction
- ✅ **Pure HTTP — fast and cheap** — no browser overhead, runs on 256 MB
- ✅ **Full metadata** — play counts, likes, reposts, ISRC, waveform URLs, user bios
- ✅ **Pagination support** — extract hundreds or thousands of tracks per query
- ✅ **6 scrape modes** — search or target specific URLs
- ✅ **Export anywhere** — JSON, CSV, Excel, Google Sheets, or via API

### What data can you extract?

#### 🎧 Track data
| Field | Description |
|-------|-------------|
| `title` | Track title |
| `url` | Full SoundCloud URL |
| `artworkUrl` | Cover art image URL |
| `description` | Track description / tracklist |
| `genre` | Genre classification |
| `tagList` | Array of tags |
| `duration` | Duration in milliseconds |
| `playbackCount` | Total plays |
| `likesCount` | Total likes/hearts |
| `repostsCount` | Total reposts |
| `commentCount` | Total comments |
| `downloadCount` | Total downloads |
| `downloadable` | Whether download is enabled |
| `streamable` | Whether streaming is available |
| `license` | License type (e.g., all-rights-reserved, cc-by) |
| `releaseDate` | Original release date |
| `createdAt` | Upload date |
| `isrc` | ISRC music identifier code |
| `waveformUrl` | URL to waveform JSON data |
| `userName` | Creator username |
| `userUrl` | Creator profile URL |
| `userFollowersCount` | Creator's follower count |
| `userVerified` | Whether creator is verified |

#### 📋 Playlist data
| Field | Description |
|-------|-------------|
| `title` | Playlist name |
| `url` | Full SoundCloud URL |
| `artworkUrl` | Cover art image URL |
| `description` | Playlist description |
| `genre` | Genre classification |
| `duration` | Total duration in ms |
| `trackCount` | Number of tracks |
| `likesCount` | Total likes |
| `isAlbum` | Whether it's a released album vs playlist |
| `publishedAt` | Publication date |
| `userName` | Creator username |

#### 👤 User profile data
| Field | Description |
|-------|-------------|
| `username` | SoundCloud username |
| `fullName` | Display name |
| `url` | Profile URL |
| `avatarUrl` | Profile picture URL |
| `description` | Bio text |
| `city` | Location city |
| `countryCode` | Country code |
| `followersCount` | Number of followers |
| `followingsCount` | Accounts they follow |
| `trackCount` | Number of uploaded tracks |
| `playlistCount` | Number of playlists |
| `likesCount` | Total likes given |
| `verified` | Verification status |
| `isPro` | Pro subscription holder |

### How much does it cost to scrape SoundCloud?

This actor uses **Pay-Per-Event (PPE) pricing**. You only pay for results you get.

| Volume | Cost | What you get |
|--------|------|-------------|
| 10 tracks | $0.025 | Quick test run |
| 100 tracks | $0.205 | Solid dataset |
| 500 tracks | $1.005 | Genre analysis |
| 1,000 tracks | $2.005 | Large research dataset |

Pricing breakdown: **$0.005 run start fee** + **$0.002 per track/item** scraped.

**Free plan estimate:** With Apify's $5 free credits, you can scrape approximately **2,000 tracks** before any charges apply.

Compare to SoundCloud's official API: requires an approved developer application and has strict rate limits. This scraper has no rate limiting issues for typical research volumes.

### How to scrape SoundCloud data

1. Go to [SoundCloud Scraper on Apify Store](https://apify.com/automation-lab/soundcloud-scraper)
2. Click **Try for free**
3. Select a scrape mode from the dropdown (e.g., "Search Tracks")
4. Enter your search query (e.g., "lofi hip hop") or paste a SoundCloud URL
5. Set **Max results per query** (start with 20 for testing)
6. Click **Start** and wait for results (usually under 30 seconds)
7. Download your data as JSON, CSV, or Excel from the **Dataset** tab

**Example inputs for different use cases:**

Search for tracks by genre:
```json
{
    "mode": "searchTracks",
    "searchQueries": ["ambient techno", "dark jazz"],
    "maxResults": 100
}
````

Scrape a specific artist's profile and all their tracks:

```json
{
    "mode": "userUrl",
    "startUrls": ["https://soundcloud.com/moderat"],
    "maxResults": 200
}
```

Get playlist metadata for a curated set:

```json
{
    "mode": "playlistUrl",
    "startUrls": ["https://soundcloud.com/user/sets/my-playlist"],
    "maxResults": 50
}
```

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | String | `searchTracks` | What to scrape: `searchTracks`, `searchPlaylists`, `searchUsers`, `trackUrl`, `playlistUrl`, `userUrl` |
| `searchQueries` | Array | `[]` | Search terms for search modes. One query per item. |
| `startUrls` | Array | `[]` | SoundCloud URLs for URL-based modes. |
| `maxResults` | Integer | `100` | Max items to extract per query/URL. Use `0` for unlimited. |
| `includeUserDetails` | Boolean | `true` | Include creator profile data in each track result. |

### Output examples

**Track output:**

```json
{
    "type": "track",
    "id": 417474360,
    "title": "Chill Study Beats - Lofi Hip Hop Mix",
    "url": "https://soundcloud.com/nigeldelviero/chill-study-beats-lofi-hip-hop-mix",
    "artworkUrl": "https://i1.sndcdn.com/artworks-000321524016-jw118f-large.jpg",
    "genre": "Hip-hop & Rap",
    "tagList": ["Lo-Fi", "Relax", "Chill"],
    "duration": 7200255,
    "playbackCount": 4732814,
    "likesCount": 93032,
    "repostsCount": 2211,
    "commentCount": 4802,
    "downloadable": false,
    "streamable": true,
    "license": "all-rights-reserved",
    "createdAt": "2018-03-22T08:35:48Z",
    "userName": "nigeldelviero",
    "userFollowersCount": 4056,
    "userVerified": false,
    "isrc": null,
    "scrapedAt": "2026-04-03T00:00:00.000Z"
}
```

**User output:**

```json
{
    "type": "user",
    "id": 203410014,
    "username": "deadmau5",
    "fullName": "deadmau5",
    "url": "https://soundcloud.com/deadmau5",
    "followersCount": 352371,
    "trackCount": 45,
    "verified": true,
    "isPro": true
}
```

### Tips for best results

- 🔍 **Use specific genre names** — SoundCloud indexes genre tags, so "lo-fi hip hop" returns more relevant results than "lofi"
- 📊 **Start with small maxResults** (20-50) to preview data before large extractions
- 🔁 **Schedule runs** for monitoring — use Apify's scheduling feature to track track metrics weekly
- 🎯 **Combine modes** — search for users first, then use their URLs in `userUrl` mode for comprehensive data
- 💾 **Export to Google Sheets** — use Apify's Google Sheets integration for real-time data sharing
- ⚡ **Pagination is automatic** — just set `maxResults` higher and the scraper fetches multiple pages

### Integrations

**SoundCloud Scraper → Google Sheets:** Track how a set of artists' follower counts change week over week. Schedule a weekly run in `userUrl` mode, output to Google Sheets, and watch the trends.

**SoundCloud Scraper → Slack alerts:** Monitor when a target artist uploads a new track. Set up a daily `userUrl` run, compare track counts, and send Slack notifications via Apify webhooks when the count increases.

**SoundCloud Scraper → Make / Zapier:** Automatically add newly discovered tracks (from search runs) to a Spotify playlist or Notion database for music curation workflows.

**SoundCloud Scraper → Data warehouse:** Pull 1,000+ tracks per genre weekly into BigQuery or Snowflake for music trend analysis dashboards.

**Scheduled monitoring:** Run `searchTracks` mode daily with specific genre queries to build a time-series dataset of SoundCloud's trending content.

### API usage

**Node.js:**

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('automation-lab/soundcloud-scraper').call({
    mode: 'searchTracks',
    searchQueries: ['lofi hip hop', 'ambient techno'],
    maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("automation-lab/soundcloud-scraper").call(run_input={
    "mode": "searchTracks",
    "searchQueries": ["lofi hip hop", "ambient techno"],
    "maxResults": 100,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["playbackCount"])
```

**cURL:**

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~soundcloud-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "searchTracks",
    "searchQueries": ["lofi hip hop"],
    "maxResults": 100
  }'
```

### Use with AI agents via MCP

SoundCloud Scraper is available as a tool for AI assistants that support the [Model Context Protocol (MCP)](https://docs.apify.com/platform/integrations/mcp).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

#### Setup for Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/soundcloud-scraper"
```

#### Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com?tools=automation-lab/soundcloud-scraper"
        }
    }
}
```

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

#### Example prompts

Once connected, try asking your AI assistant:

- "Use automation-lab/soundcloud-scraper to find the top 50 lofi hip hop tracks on SoundCloud and show me which artists have the most plays"
- "Scrape the SoundCloud profile for soundcloud.com/moderat and list all their tracks with play counts"
- "Search SoundCloud for ambient techno playlists and find the 10 most-liked ones"

Learn more in the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

### Legality of scraping SoundCloud

This actor only accesses **publicly available data** via SoundCloud's public API — the same data anyone can see when visiting soundcloud.com. No private data, no account credentials, no authentication is required or used.

Web scraping public data is generally considered legal in most jurisdictions. The 2022 *hiQ Labs v. LinkedIn* ruling confirmed that scraping publicly available data does not violate the Computer Fraud and Abuse Act (CFAA).

**You are responsible for how you use the data.** We recommend:

- Only scraping data you are legally entitled to use
- Respecting SoundCloud's Terms of Service for your specific use case
- Complying with GDPR and other applicable privacy regulations when processing personal data
- Not using the data for spam, harassment, or other harmful purposes

For legal advice about your specific use case, consult a qualified attorney.

### FAQ

**How many tracks can I scrape per run?**
There is no hard limit. Set `maxResults: 0` for unlimited results. Typical search queries return 200-1,000 tracks before running out of results. User profile mode extracts all public tracks for a given artist.

**How much does it cost?**
$0.005 per run start + $0.002 per track/playlist/user scraped. 100 tracks = $0.205 total. The free plan ($5 credits) covers approximately 2,000 tracks.

**Does it require a SoundCloud account or API key?**
No. This actor uses SoundCloud's public API that powers their website, no account or API key needed.

**Why are some tracks missing play counts or download counts?**
SoundCloud sometimes returns `null` for private or restricted metrics. The `playbackCount` field may be null for very new tracks or tracks that have been set to private after upload.

**Why does the userUrl mode return 0 tracks for some artists?**
Some artists have all their tracks set to private or streaming-only without public listing. The API only returns publicly listed tracks.

**Why am I getting fewer results than maxResults?**
The SoundCloud search index may have fewer results than your requested limit for very specific queries. Try broader search terms or use `searchUsers` mode to find artists, then use `userUrl` mode for their tracks.

**The actor stopped mid-run — what happened?**
SoundCloud occasionally returns rate limit errors (429) for very high-volume requests. Try reducing `maxResults` per query or splitting your search queries across multiple runs.

### Related scrapers

- [Spotify Playlist Scraper](https://apify.com/automation-lab/spotify-playlist-scraper) — Extract Spotify playlist tracks and metadata
- [YouTube Music Scraper](https://apify.com/automation-lab/youtube-scraper) — Scrape YouTube music videos and channel data
- [Bandcamp Scraper](https://apify.com/automation-lab/bandcamp-scraper) — Extract independent music from Bandcamp

***

Built by [Automation Lab](https://apify.com/automation-lab) — building reliable data extraction tools for music, media, and research.

# Actor input Schema

## `mode` (type: `string`):

Select what to scrape: search for tracks/playlists/users, scrape a specific track or playlist URL, or fetch a user's tracks.

## `searchQueries` (type: `array`):

Enter search terms to find tracks, playlists, or users (depending on mode). One query per line.

## `startUrls` (type: `array`):

Enter SoundCloud track, playlist, or user profile URLs to scrape directly. Used with Track URLs, Playlist URLs, or User Profile modes.

## `maxResults` (type: `integer`):

Maximum number of items to extract per search query or URL. Use 0 for unlimited.

## `includeUserDetails` (type: `boolean`):

Include full creator profile details (followers, track count, bio) in each track result. Slightly slower but more data.

## Actor input object example

```json
{
  "mode": "searchTracks",
  "searchQueries": [
    "lofi hip hop"
  ],
  "startUrls": [],
  "maxResults": 20,
  "includeUserDetails": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "mode": "searchTracks",
    "searchQueries": [
        "lofi hip hop"
    ],
    "startUrls": [],
    "maxResults": 20,
    "includeUserDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/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 = {
    "mode": "searchTracks",
    "searchQueries": ["lofi hip hop"],
    "startUrls": [],
    "maxResults": 20,
    "includeUserDetails": True,
}

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

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

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

```

## CLI example

```bash
echo '{
  "mode": "searchTracks",
  "searchQueries": [
    "lofi hip hop"
  ],
  "startUrls": [],
  "maxResults": 20,
  "includeUserDetails": true
}' |
apify call automation-lab/soundcloud-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/soundcloud-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SoundCloud Scraper",
        "description": "Extract SoundCloud tracks, playlists, and artist profiles. Get play counts, likes, reposts, genre, tags, ISRC, and full creator details. No API key needed.",
        "version": "0.1",
        "x-build-id": "kvRVXhdgrEVMgENpq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~soundcloud-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-soundcloud-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~soundcloud-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-soundcloud-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~soundcloud-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-soundcloud-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Scrape mode",
                        "enum": [
                            "searchTracks",
                            "searchPlaylists",
                            "searchUsers",
                            "trackUrl",
                            "playlistUrl",
                            "userUrl"
                        ],
                        "type": "string",
                        "description": "Select what to scrape: search for tracks/playlists/users, scrape a specific track or playlist URL, or fetch a user's tracks.",
                        "default": "searchTracks"
                    },
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Enter search terms to find tracks, playlists, or users (depending on mode). One query per line.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "SoundCloud URLs",
                        "type": "array",
                        "description": "Enter SoundCloud track, playlist, or user profile URLs to scrape directly. Used with Track URLs, Playlist URLs, or User Profile modes.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results per query/URL",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of items to extract per search query or URL. Use 0 for unlimited.",
                        "default": 100
                    },
                    "includeUserDetails": {
                        "title": "Include user details",
                        "type": "boolean",
                        "description": "Include full creator profile details (followers, track count, bio) in each track result. Slightly slower but more data.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
