SoundCloud API: Get track
Gets a public SoundCloud track and its stats from a title and optional artist, or from a track link. Search picks the artist's matching upload with the most plays; unavailable fields are null.
Unofficial. Not affiliated with or endorsed by SoundCloud.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Track, required
track Track title or SoundCloud track link, for example Old Town Road or https://soundcloud.com/secret-service-862007284/old-town-road.
https://soundcloud.com/secret-service-862007284/old-town-road
- Artist optional
artist Artist name or SoundCloud username, for example Lil Nas X.
(default)
Input as JSON
{ "track": "https://soundcloud.com/secret-service-862007284/old-town-road" }Output
{ "tags": [ "Red Dead Redemption", "country trap", "country rap" ], "genre": "Country", "title": "Old Town Road (I Got The Horses In The Back) [Prod. YoungKio]", "length": "1:53", "track_id": 539018871, "like_count": 1365224, "play_count": 112713342, "track_link": "https://soundcloud.com/secret-service-862007284/old-town-road" , "artist_name": "Lil Nas X", "description": "can't nobody tell me nonthin", "upload_date": "2018-12-03", "release_date": null, "repost_count": 32829, "comment_count": 39551, "artwork_image_link": "https://i1.sndcdn.com/artworks-000452241642-zoz2uc-large.jpg" , "artist_profile_link": "https://soundcloud.com/secret-service-862007284" , "length_milliseconds": 113068}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"soundcloud.com/get_track","input":{"track":"https://soundcloud.com/secret-service-862007284/old-town-road"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "soundcloud.com/get_track" , "input": { "track": "https://soundcloud.com/secret-service-862007284/old-town-road" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "soundcloud.com/get_track" , "input": { "track": "https://soundcloud.com/secret-service-862007284/old-town-road" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run soundcloud.com/get_track# with {"track":"https://soundcloud.com/secret-service-862007284/old-town-road"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "track" ], "properties": { "track": { "type": "string", "description": "Track title or SoundCloud track link, for example Old Town Road or https://soundcloud.com/secret-service-862007284/old-town-road." }, "artist": { "type": "string", "default": "", "description": "Artist name or SoundCloud username, for example Lil Nas X." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "title", "artist_name", "artist_profile_link", "play_count", "like_count", "repost_count", "comment_count", "length", "genre", "tags", "upload_date", "release_date", "description", "artwork_image_link", "track_link", "track_id", "length_milliseconds" ], "properties": { "tags": { "type": "array", "items": { "type": "string" }, "description": "Track tags" }, "genre": { "type": [ "string", "null" ], "description": "Track genre" }, "title": { "type": [ "string", "null" ], "description": "Track title" }, "length": { "type": [ "string", "null" ], "description": "Track length as minutes and seconds" }, "track_id": { "type": [ "integer", "null" ], "description": "SoundCloud track ID", "x-fous-developer": true }, "like_count": { "type": [ "integer", "null" ], "description": "Number of likes" }, "play_count": { "type": [ "integer", "null" ], "description": "Number of plays" }, "track_link": { "type": [ "string", "null" ], "description": "SoundCloud track page link" }, "artist_name": { "type": [ "string", "null" ], "description": "Uploader’s displayed artist name" }, "description": { "type": [ "string", "null" ], "description": "Track description as plain text" }, "upload_date": { "type": [ "string", "null" ], "format": "date", "description": "Upload date (YYYY-MM-DD)" }, "release_date": { "type": [ "string", "null" ], "format": "date", "description": "Release date (YYYY-MM-DD), when set" }, "repost_count": { "type": [ "integer", "null" ], "description": "Number of reposts" }, "comment_count": { "type": [ "integer", "null" ], "description": "Number of comments" }, "artwork_image_link": { "type": [ "string", "null" ], "description": "Track artwork image link" }, "artist_profile_link": { "type": [ "string", "null" ], "description": "Uploader’s SoundCloud profile link" }, "length_milliseconds": { "type": [ "integer", "null" ], "description": "Track length in milliseconds", "x-fous-developer": true } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
soundcloud.com/get_track- Returns
- title, artist, plays, likes, reposts, comments, length, genre, tags, dates, description, artwork, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method soundcloud.com/get_track with the inputs above.
Ask your agent
- How many plays and likes does Flume's 'Never Be Like You' have on SoundCloud right now?
- Pull the stats for this track: https://soundcloud.com/octobersveryown/drake-hotline-bling — plays, reposts, comment count, and upload date
- What genre and tags is 'Lucid Dreams' by Juice WRLD listed under, and how long is the track?
- Find Kaytranada's 'Glowed Up' on soundcloud and give me the description, artwork URL, and link
- I need the play count, likes, and release date for 'XO Tour Llif3' by Lil Uzi Vert
See more
All SoundCloud methodsLists a SoundCloud artist's public tracks in latest or SoundCloud popular order, with profile and track details. SoundCloud's popular list may contain fewer than 100 tracks (currently at most 30).
soundcloud.com/list_artist_tracksFinds a Spotify song by title (optionally narrowed by artist), track link, URI or track ID and returns its public play count and details. Without an artist, the most-played exact title match wins. Previews and ISRC may be unavailable for some tracks.
open.spotify.com/get_songGets a Deezer song's tempo, ISRC, loudness gain and recording details from its title, track link or track ID. An artist name helps pick the right recording.
deezer.com/get_song_detailsLooks up a Last.fm artist by name and returns listening statistics, profile, top tracks and albums, similar artists, and upcoming events.
last.fm/get_artistGets a Spotify artist's public profile from their name, artist link or ID: listeners, followers, world rank, top cities, popular tracks, latest release and release counts.
open.spotify.com/get_artistFinds a Discogs release by title, artist or release link and returns its edition details, tracks, community counts, current price and sold price statistics.
discogs.com/get_releaseFinds the best-matching studio recording on MusicBrainz for a song title and artist. Returns its ISRCs, first release date and up to 25 of its earliest releases.
musicbrainz.org/get_song_identifiersGets a Bandcamp album by title and optional artist, or by album link, with prices, physical formats, tracks and album details. Supporter count covers only profiles shown on the page; copies left is given only when displayed.
bandcamp.com/get_album