SoundCloud Track API
SoundCloud track — plays/likes/license, tags[], nested artist{}, streamUrl when streamable (1 credit).
GET request to /v1/soundcloud/track that responds with clean JSON and costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the SoundCloud Track API?
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.
What you get
- Track fields as clean structured JSON
- IDs, URLs, and titles where the platform exposes them
- Engagement or popularity signals when available
- Stable IDs for joining with other endpoints
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/soundcloud/track?url=https%3A%2F%2Fsoundcloud.com%2Fflume%2Fis-it-real-feat-ravyn-lenae" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"platform": "soundcloud",
"id": "2088451047",
"url": "https://soundcloud.com/flume/is-it-real-feat-ravyn-lenae",
"title": "Is It Real (feat. Ravyn Lenae)",
"genre": "Electronic",
"artist": {
"id": "2976616",
"handle": "flume",
"name": "Flume",
"url": "https://soundcloud.com/flume",
"avatar": "https://i1.sndcdn.com/avatars-sAZPcKyZpXJ0J0u5-JHfNSg-large.jpg",
"followers": 2227831,
"verified": true
},
"durationMs": 169091,
"plays": 44210,
"likes": 2280,
"reposts": 63,
"downloads": 0,
"comments": 29,
"publishedAt": "2025-05-01T19:13:22Z",
"releaseDate": "2025-05-02T00:00:00Z",
"license": "all-rights-reserved",
"isrc": "US38Y2516905",
"downloadable": false,
"streamable": true,
"streamUrl": "https://cf-preview-media.sndcdn.com/preview/0/30/XtegK92YX8gU.128.mp3?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiKjovL2NmLXByZXZpZXctbWVkaWEuc25kY2RuLmNvbS9wcmV2aWV3LzAvMzAvWHRlZ0s5MllYOGdVLjEyOC5tcDMqIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzg2ODczNDg3fX19XX0_&Signature=Wc2sqfYkWQKvk8ctkZJgq-jw2a11mGQy6uQkU4UNjTlPNmFnkJCNrkCXaVnuptZcJZIy2tIbzVxEiMy7aDJlGNSK6ND8aF6Bijs1o43SSK~pvKZiJha5g-vvO0Xz3~XpNPVWD75KhGzXZn1~kF6DYFHjVFQKFdNcMK~7GSL-QxBsSfBdBPc8jgJ0XXiXiZLXKrMdoso5GwqObqMUI-7I0ifV0Gtsrx8A19MA9D6lg88xXzA5WgaJVD1rtq5L5VVkfDZ9k6p-tAs8iyTtOQjkOseSjTDkqHRQJdZjFHlCChJUVVtQejrjMcKyCsWqqpIJV-Pi12zumc2MlcYc8lJmHw__&Key-Pair-Id=APKAI6TU7MMXM5DG6EPQ",
"hlsUrl": "https://cf-hls-media.sndcdn.com/playlist/0/30/XtegK92YX8gU.128.mp3/playlist.m3u8?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiKjovL2NmLWhscy1tZWRpYS5zbmRjZG4uY29tL3BsYXlsaXN0LzAvMzAvWHRlZ0s5MllYOGdVLjEyOC5tcDMvcGxheWxpc3QubTN1OCoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3ODY4NzM0ODd9fX1dfQ__&Signature=VmTi2itOt1q7gN0nu1-HBXW2aV2121NFo0lCQl3zXt9-7mY2d4SwS6nQzZKwp3dhBcM7k1pC0FHw-eSX7knmOjmnOrS4PvLXTrqCR3qnEGkHoa-kGIX-rGmkmq-aKcMCIFT7ym0o~t2c1D89Jms-Xmd5SkQgCOjzerYlbVwssWPPSd8siyErWJpaIw7U1BZgta57MA3a3ElAULF~8vDjeGt-VslZiWcPmu~Kuw~yPQsEJvdFpqmXGaVxSrS54A0KVYhmcp0gkc6xS2OvJavOp57b8rhijAgb3KvWk7s~PR1m~zLt9o1kHgfa-p2P7ePq0uxp4Rwk2y1v4xQJDPHX6Q__&Key-Pair-Id=APKAI6TU7MMXM5DG6EPQ",
"waveformUrl": "https://wave.sndcdn.com/XtegK92YX8gU_m.json",
"artwork": "https://i1.sndcdn.com/artworks-4pqckrEbaBNo-0-large.jpg",
"tags": [
"Pop"
]
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success and a data object with the following fields:
Top-level fields
platformAlways "soundcloud" on this endpoint.idStable platform ID for the item.urlCanonical URL of the item.titleTitle of the item.genreMusic genre.durationMsFull track length in milliseconds (SoundCloud full_duration — not the 30s preview clip).playsPlayback count for the track.likesLike count for the track.repostsRepost count for the track.downloadsHow many times the track was downloaded on SoundCloud (their counter).commentsComment count when SoundCloud exposes one. Omitted when the track has no count (not a read failure). 0 means zero comments.publishedAtTrack created/publish time as ISO-8601.releaseDateRelease date as ISO-8601 when SoundCloud exposes it; omitted otherwise.licenseTrack license string from SoundCloud (e.g. all-rights-reserved) — reuse-policy signal.isrcISRC when SoundCloud's publisher_metadata exposes it; omitted otherwise.downloadableSoundCloud permission flag — the uploader allows downloads. Does not guarantee downloadUrl (public api-v2 often requires OAuth).streamableSoundCloud permission flag — the track may be streamed. When true we usually mint streamUrl / hlsUrl.streamUrlSigned progressive MP3 CDN URL when we can mint one from api-v2 transcodings. Expires — see mediaUrlsExpireAt.hlsUrlSigned HLS playlist URL when available. Expires — see mediaUrlsExpireAt.waveformUrlURL of SoundCloud's waveform JSON (peaks), not an audio file.artworkArtwork URL.tagsTrack tags from SoundCloud's tag_list. Always an array — [] when the track has none.
Artist
The artist object contains:
idId of this artist item.handleAccount handle.nameName of this artist item.urlCanonical URL of the item.avatarAvatar / profile picture URL. Canonical across profile endpoints.followersFollower count.verifiedWhether the account is verified on this platform.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | SoundCloud track URL. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| cache | boolean | No | Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control. |
| cacheMaxAge | string | No | Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh.
How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/soundcloud/trackand parse the JSON response.
Use cases
Engagement + license
Read plays/likes/reposts/comments/downloads and license for reuse research at 1 credit.
Playback URLs
Use streamUrl / hlsUrl (with mediaUrlsExpireAt) when streamable; downloadable is a permission flag.
Artist join
Chain artist.id or artist.handle into /soundcloud/artist without a second resolve scrape.
Frequently asked questions
What does the SoundCloud Track API do?+
The SoundCloud Track API lets you fetch full metadata and key stats from a public SoundCloud sound or track using one GET request to /v1/soundcloud/track. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the SoundCloud Track API cost?+
Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a SoundCloud API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
What do streamable / downloadable mean if streamUrl is missing?+
They are SoundCloud permission flags on the track. When the public api-v2 lets us mint a progressive MP3 we return streamUrl (and often hlsUrl) with mediaUrlsExpireAt. downloadUrl is only present when SoundCloud exposes a public download without OAuth — downloadable:true alone does not guarantee a URL.
How do I join to soundcloud/artist?+
Use artist.id or artist.handle (permalink slug). artist.name is the display name and can differ from the URL slug.
Why is comments missing on some tracks?+
Omitted when SoundCloud does not expose a comment count on that track — per-track, not a list-hydration budget. 0 means zero comments. Null is never used for this absence.
Is the SoundCloud Track API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More SoundCloud APIs
Ready to use the SoundCloud Track API?
Sign up, grab your key, and make your first call in 60 seconds.