Skip to main content

Search Tracks

Search for tracks on SoundCloud.

Endpoint

GET /api/soundcloud/search

Query Parameters

q
string
required
Search query
limit
integer
default:"10"
Number of results to return (max 50)

Example Request

curl -X GET "https://rocks.rive.wtf/api/soundcloud/search?q=drake&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Example

{
  "collection": [
    {
      "id": 257461521,
      "kind": "track",
      "title": "Headlines (Explicit Version)",
      "description": null,
      "genre": "Rap",
      "duration": 236779,
      "full_duration": 236774,
      "permalink": "drake-headlines",
      "permalink_url": "https://soundcloud.com/octobersveryown/drake-headlines",
      "artwork_url": "https://i1.sndcdn.com/artworks-D3aqnCniSx2R-0-large.jpg",
      "waveform_url": "https://wave.sndcdn.com/hdWu2BU2Y7z0_m.json",
      "created_at": "2016-04-05T17:16:33Z",
      "last_modified": "2025-11-10T08:18:52Z",
      "playback_count": 25111277,
      "likes_count": 363392,
      "comment_count": 1877,
      "reposts_count": 5550,
      "download_count": 0,
      "streamable": true,
      "downloadable": false,
      "public": true,
      "monetization_model": "AD_SUPPORTED",
      "policy": "MONETIZE",
      "license": "all-rights-reserved",
      "tag_list": "",
      "release_date": "2011-01-01T00:00:00Z",
      "display_date": "2011-01-01T00:00:00Z",
      "user": {
        "id": 1078461,
        "kind": "user",
        "permalink": "octobersveryown",
        "username": "octobersveryown",
        "uri": "https://api.soundcloud.com/users/soundcloud%3Ausers%3A1078461",
        "permalink_url": "https://soundcloud.com/octobersveryown",
        "avatar_url": "https://i1.sndcdn.com/avatars-000111004820-tzrvo1-large.jpg",
        "verified": true,
        "first_name": "October's",
        "last_name": "Very Own",
        "full_name": "October's Very Own",
        "city": "Toronto",
        "country_code": "CA",
        "followers_count": 4355819,
        "followings_count": 10,
        "track_count": 527,
        "playlist_count": 34
      },
      "publisher_metadata": {
        "id": 257461521,
        "urn": "soundcloud:tracks:257461521",
        "artist": "Drake",
        "album_title": "Headlines",
        "contains_music": true,
        "isrc": "USCM51100290",
        "explicit": true,
        "p_line": "℗ 2011 Cash Money Records Inc.",
        "c_line": "© 2011 Cash Money Records Inc.",
        "release_title": "Headlines (Explicit Version)",
        "upc_or_ean": "00602527816067"
      }
    }
  ],
  "total_results": 859036,
  "next_href": "https://api-v2.soundcloud.com/search/tracks?query_urn=soundcloud%3Asearch%3A5691d31cebca410a9d7445e6045b7afe&limit=10&offset=10&q=drake",
  "query_urn": "soundcloud:search:5691d31cebca410a9d7445e6045b7afe"
}

Response Fields

collection
array
Array of track objects matching the search query
total_results
number
Total number of results available
next_href
string
URL for the next page of results (pagination)
query_urn
string
Unique identifier for this search query
Duration values are in milliseconds. Divide by 1000 to get seconds, or by 60000 to get minutes.
Use the next_href URL to fetch additional results for pagination. The API supports up to 50 results per request.

Use Cases

Music Discovery

Build music discovery and search tools

Playlist Curators

Find tracks for playlist curation

Discord Music Bots

Add SoundCloud search to music bots

Analytics Tools

Track artist performance and engagement

Additional Notes

Track Duration

Duration is returned in milliseconds. Here’s a quick conversion reference:
  • Seconds: duration / 1000
  • Minutes: duration / 60000
  • MM:SS format: Math.floor(duration / 60000):${String(Math.floor((duration % 60000) / 1000)).padStart(2, '0')}

Artwork URLs

Artwork URLs come in different sizes. You can modify the URL to get different resolutions:
  • Large: -large.jpg (default)
  • Medium: -t500x500.jpg
  • Small: -t300x300.jpg
  • Tiny: -tiny.jpg

Pagination

Use the next_href field to implement pagination and fetch more results beyond the initial limit.