Tashen Jazbi Tashen Jazbi - 2 years ago 213
JSON Question

how to get soundcloud audio download url by using audio file id

am using sound cloud search api. when i hit the search url it give me search results. every audio has stream url but not download url because it depends on setting of the uploader. Every none downloadable file also has download count more than 1. for example, when you'll hit this url


It'll give the search result like that

[{"kind":"track","id":63225776,"created_at":"2012/10/13 01:52:38 +0000","user_id":26029726,"duration":206177,"commentable":true,"state":"finished","original_content_size":3298521,"last_modified":"2014/10/01 18:56:25 +0000","sharing":"public","tag_list":"","permalink":"tere-bin-uzair-jaswal-official","streamable":true,"embeddable_by":"all","downloadable":false,"purchase_url":null,"label_id":null,"purchase_title":null,"genre":"Musical","title":"Tere Bin - Uzair Jaswal [Official Music Audio]","description":"","label_name":"","release":"","track_type":"original","key_signature":"","isrc":"","video_url":null,"bpm":null,"release_year":null,"release_month":null,"release_day":null,"original_format":"mp3","license":"all-rights-reserved","uri":"https://api.soundcloud.com/tracks/63225776","user":{"id":26029726,"kind":"user","permalink":"uzair-jaswal-1","username":"Uzair Jaswal Music","last_modified":"2014/10/19 13:06:28 +0000","uri":"https://api.soundcloud.com/users/26029726","permalink_url":"http://soundcloud.com/uzair-jaswal-1","avatar_url":"https://i1.sndcdn.com/avatars-000110064166-2ts508-large.jpg"},"permalink_url":"http://soundcloud.com/uzair-jaswal-1/tere-bin-uzair-jaswal-official","artwork_url":"https://i1.sndcdn.com/artworks-000032079002-kup6vc-large.jpg","waveform_url":"https://w1.sndcdn.com/9bwAsZfGrxwN_m.png","stream_url":"https://api.soundcloud.com/tracks/63225776/stream","playback_count":359588,"download_count":100,"favoritings_count":7557,"comment_count":491,"attachments_uri":"https://api.soundcloud.com/tracks/63225776/attachments","policy":"ALLOW"}]

this is for only one audio and that audio is not downloadable but it has download count of 100. how is this possible ?
can anybody tell me how i can download that audio which is not downloadable?
any help would be much appreciated. Thanks :)

Answer Source

I fix it myself, i was using android and the stream url is also a download url. the stream url is also download url for downloading but it won't affect on download count. you can try like that

String file_url = "https://api.soundcloud.com/tracks/93216523/stream?client_id=4346c8125f4f5c40ad666bacd8e96498"; 

pass this url to asyntack and manage you download there, you can pass it like that

new DownloadFileFromURL().execute(file_url);

here is DownloadFileFromUR class using asyntask

class DownloadFileFromURL extends AsyncTask<String, Integer, String> {

        protected void onPreExecute() {

        protected String doInBackground(String... f_url) {
            URL u = null;
            InputStream is = null;  

                 try {
                          u = new URL(f_url[0]);
                          is = u.openStream(); 
                          HttpURLConnection huc = (HttpURLConnection)u.openConnection();//to know the size of video
                          int size = huc.getContentLength();                 

                      if(huc != null){
                          String fileName = "FILE2.mp3";
                          String storagePath = Environment.getExternalStorageDirectory().toString();
                          File f = new File(storagePath,fileName);

                          FileOutputStream fos = new FileOutputStream(f);
                          byte[] buffer = new byte[1024];
                          long total = 0;
                          int len1 = 0;
                          if(is != null){
                             while ((len1 = is.read(buffer)) > 0) {
                                   fos.write(buffer,0, len1);   
                          if(fos != null){
                 }catch (MalformedURLException mue) {
                 } catch (IOException ioe) {
                } finally {
                           try {                
                             if(is != null){
                           }catch (IOException ioe) {
                                 // just going to ignore this one
                 return "";

        protected void onPostExecute(String file_url) {


Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download