---
title: "SoundCloud Track API"
method: GET
path: "/v1/soundcloud/track"
tags: ["SoundCloud"]
---

# SoundCloud Track API

`GET /v1/soundcloud/track`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/soundcloud/track`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

SoundCloud track — plays/likes/license, tags[], nested artist{}, streamUrl when streamable (1 credit).

Pass a SoundCloud track URL and get clean JSON: title, artist{id,handle,name,url,avatar,followers,verified} (chain id/handle into /soundcloud/artist), plays/likes/reposts/comments/downloads, license, genre/tags[] (always an array), publishedAt, isrc/releaseDate when exposed, streamable/downloadable (SoundCloud permission flags), and when the public api-v2 allows it — streamUrl (progressive MP3), hlsUrl, downloadUrl, plus mediaUrlsExpireAt for signed CDN links. Strict superset of an artist-tracks row (adds artist{} and stream URLs). waveformUrl is the waveform JSON endpoint, not audio. Flat 1 credit. Accepts cache / cacheMaxAge.

Docs: https://captapi.com/apis/soundcloud-track

## Query parameters

- `url` string, required
- `cache` boolean
- `cacheMaxAge` '1d' | '3d' | '7d' | '14d' | '30d'

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `platform` string: Always "soundcloud" on this endpoint.
    - `id` string: Stable platform ID for the item.
    - `url` string: Canonical URL of the item.
    - `title` string: Title of the item.
    - `genre` string: Music genre.
    - `artist` object
      - `id` string: Id of this artist item.
      - `handle` string: Account handle.
      - `name` string: Name of this artist item.
      - `url` string: Canonical URL of the item.
      - `avatar` string: Avatar / profile picture URL. Canonical across profile endpoints.
      - `followers` integer: Follower count.
      - `verified` boolean: Whether the account is verified on this platform.
    - `durationMs` integer: Full track length in milliseconds (SoundCloud full_duration — not the 30s preview clip).
    - `plays` integer: Playback count for the track.
    - `likes` integer: Like count for the track.
    - `reposts` integer: Repost count for the track.
    - `downloads` integer: How many times the track was downloaded on SoundCloud (their counter).
    - `comments` integer: Comment count when SoundCloud exposes one. Omitted when the track has no count (not a read failure). 0 means zero comments.
    - `publishedAt` string: Track created/publish time as ISO-8601.
    - `releaseDate` string: Release date as ISO-8601 when SoundCloud exposes it; omitted otherwise.
    - `license` string: Track license string from SoundCloud (e.g. all-rights-reserved) — reuse-policy signal.
    - `isrc` string: ISRC when SoundCloud's publisher_metadata exposes it; omitted otherwise.
    - `downloadable` boolean: SoundCloud permission flag — the uploader allows downloads. Does not guarantee downloadUrl (public api-v2 often requires OAuth).
    - `streamable` boolean: SoundCloud permission flag — the track may be streamed. When true we usually mint streamUrl / hlsUrl.
    - `streamUrl` string: Signed progressive MP3 CDN URL when we can mint one from api-v2 transcodings. Expires — see mediaUrlsExpireAt.
    - `hlsUrl` string: Signed HLS playlist URL when available. Expires — see mediaUrlsExpireAt.
    - `waveformUrl` string: URL of SoundCloud's waveform JSON (peaks), not an audio file.
    - `artwork` string: Artwork URL.
    - `tags` string[]: Track tags from SoundCloud's tag_list. Always an array — [] when the track has none.

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
