Introduction
The Soundcloud API-v2 is an internal API used by Soundcloud. It is not intended to be used by third party apps. Even though it is against their ToS to use it. They stated on twitter that is usable in third party apps without being in fear of a ban.
The base url is:
api-v2.soundcloud.com/
But before you can use any of these endpoints you need to get a client_id otherwise none of your requests will actually get a response. As for now I do not know if you can use the exact same client_id as from the public/official one.
Obtain the client_id
Obtaining the client_id is pretty much simple. You can use browser built-in developer tools or external programs like Wireshark or Fiddler (I like to use the latter one). Check the network section. You may want to filter for 'api' to find it faster. When you open the page the first time you encounter the client_id is actually this one:
https://api-v2.soundcloud.com/payments/quotations/consumer-subscription?client_id=HERE&app_version=1500036064
The length of the client_id is 32. The pattern is [0-9a-zA-Z]. As for now I also do not know if this client_id is connected to your IPv4 since I have the same client_id in different browsers and computers. Also it does not matter if you are logged in into your SC Account or not. So be careful and do not share it publicly AS FOR NOW.
Output format is mostly JSON.
Bold ones are necessary.
Italic ones are optional.
- client_id - [0-9a-zA-Z]{32}
- app_version - (int){10?}
Request:
payments/quotations/consumer-subscription?client_id=CID
Parameters:
- None in particular
Sample Response:
{
"plans": [{
"id": "consumer-high-tier",
"preselected_term": "monthly",
"use_case": "anonymous",
"monthly": {
"use_case": "anonymous",
"package": {
"urn": "soundcloud:payments:packages:121",
"name": "Monthly Go Plus plan",
"vendor": "v2",
"product": "consumer-subscription",
"tier": "high",
"plan": "consumer-high-tier",
"term": "monthly",
"price": {
"amount": 999,
"currency": "EUR"
},
"country": "DE"
},
"start_date": "2017-07-16T23:48:30Z",
"expiry_date": "2017-08-15T23:48:30Z",
"price": {
"amount": 999,
"currency": "EUR"
},
"discount": null,
"prorating": null
},
"yearly": null,
"trial": {
"duration_in_days": 30
},
"promotion": null
}, {
"id": "consumer-mid-tier",
"preselected_term": "monthly",
"use_case": "unknown",
"monthly": {
"use_case": "unknown",
"package": {
"urn": "soundcloud:payments:packages:286",
"name": "Monthly Go plan",
"vendor": "v2",
"product": "consumer-subscription",
"tier": "mid",
"plan": "consumer-mid-tier",
"term": "monthly",
"price": {
"amount": 599,
"currency": "EUR"
},
"country": "DE"
},
"start_date": "2017-07-16T23:48:30Z",
"expiry_date": "2017-08-15T23:48:30Z",
"price": {
"amount": 599,
"currency": "EUR"
},
"discount": null,
"prorating": null
},
"yearly": null,
"trial": {
"duration_in_days": 7
},
"promotion": null
}]
}
Returns information about paid subscriptions
Request:
/charts?kind=top&genre=soundcloud:genres:all-music&high_tier_only=false&client_id=CID&limit=10&offset=0&linked_partitioning=1&app_version=1500036064
Parameters:
- kind - (string)
- genre - (string)
- high_tier_only - (bool) paid subscription (soundcloud go)
- client_id
- limit - (int) how many results you will have in the output
- offset - (int) starting point
- linked_partition - (int) actually does nothing can be omitted
- app_version
Sample Response:
Limit was set to 1 due to too much data.
{
"genre": "soundcloud:genres:all-music",
"kind": "top",
"last_updated": "2017-07-16T06:35:39Z",
"collection": [{
"track": {
"artwork_url": "https://i1.sndcdn.com/artworks-000203619008-9xvrhm-large.jpg",
"commentable": true,
"comment_count": 713,
"created_at": "2015-02-16T21:18:19Z",
"description": "LINK DE DESCARGA : http://bluenik.com/13Cm\nLINK DE DESCARGA : http://bluenik.com/13Cm\n\nRedes Sociales GRACIAS POR EL APOYO\n\nInstagram - www.instagram.com/rdurbansmusic/\n\nFacebook -www.facebook.com/RDUrbansMusic/?s…_nax_wizard=true\n\nYoutube - www.youtube.com/channel/UCjpf4LqNJGaOgE8n_MVlP4g",
"downloadable": false,
"download_count": 100,
"download_url": null,
"duration": 212708,
"full_duration": 212708,
"embeddable_by": "all",
"genre": "Latin",
"has_downloads_left": false,
"id": 191477804,
"kind": "track",
"label_name": null,
"last_modified": "2017-07-16T21:40:23Z",
"license": "all-rights-reserved",
"likes_count": 371467,
"permalink": "despacito-luis-fonsi-daddy-yankee",
"permalink_url": "https://soundcloud.com/traphousemusic1/despacito-luis-fonsi-daddy-yankee",
"playback_count": 19645686,
"public": true,
"publisher_metadata": {
"id": 191477804,
"urn": "soundcloud:tracks:191477804"
},
"purchase_title": "Free Download",
"purchase_url": "http://adf.ly/1iGWYT",
"release_date": null,
"reposts_count": 18862,
"secret_token": null,
"sharing": "public",
"state": "finished",
"streamable": true,
"tag_list": "RDUrbansMusic DESPACITO - Luis Fonsi Daddy ❌ Yankee",
"title": "DESPACITO - Luis Fonsi ❌ Daddy Yankee",
"uri": "https://api.soundcloud.com/tracks/191477804",
"urn": "soundcloud:tracks:191477804",
"user_id": 67807601,
"visuals": null,
"waveform_url": "https://wis.sndcdn.com/dxsZzMQL3TdG_m.json",
"display_date": "2015-02-16T21:18:19Z",
"monetization_model": "NOT_APPLICABLE",
"policy": "ALLOW",
"user": {
"avatar_url": "https://i1.sndcdn.com/avatars-000293732681-g6lqcc-large.jpg",
"first_name": "Latin Urbans",
"full_name": "Latin Urbans Music",
"id": 67807601,
"kind": "user",
"last_modified": "2017-05-24T12:50:15Z",
"last_name": "Music",
"permalink": "traphousemusic1",
"permalink_url": "https://soundcloud.com/traphousemusic1",
"uri": "https://api.soundcloud.com/users/67807601",
"urn": "soundcloud:users:67807601",
"username": "Trap House Music ✅",
"verified": false,
"city": "CALI",
"country_code": "CO"
}
},
"score": 2967404.0
}],
"query_urn": "soundcloud:charts:4bcde3979a7941c391b90e6902f0cfad",
"next_href": "https://api-v2.soundcloud.com/charts?genre=soundcloud:genres:all-music&query_urn=soundcloud:charts:4bcde3979a7941c391b90e6902f0cfad&offset=1&high_tier_only=false&kind=top&limit=1"
}