Skip to content

SoundcloudScraper: Download all of an artist’s Soundcloud tracks automatically

2011 July 19
by Tedb0t

Today I was listening to a great Soundcloud artist with 22 tracks, all available to freely download.  Since I didn’t see an option to download them all en masse, I wrote up a nifty script to do it, then added a bunch of features to make it shiny.

Download the SoundcloudScraper zip file here:  soundcloudScraper_v1  To use, you’ll need Python; I looked into making it a standalone binary but I’m afraid that’ll have to wait for another time.  Open up a terminal and go to the directory the script is in, and type:

./soundcloudScraper.py artistname

This will automatically download all the available tracks by that artist, meaning tracks with a ‘Download’ button.  You can also specify multiple artists:

./soundcloudScraper.py artist1 artist2 artist3

This script uses the fantastic Animated Terminal Progress Bar module by Nadia Alramli!  If you find any bugs or get some use out of the script, leave a comment! Enjoy!

Related Posts:


15 Responses
  1. barnaba permalink
    August 6, 2011

    Thanks, it was very useful.

    Works on Linux (at least Ubuntu) out of the box.

    Progress bar looks great, but information it supplies isn’t very useful. I’d rather see overall progress (but I don’t care enough to change it, so nor should you :-)).

  2. lain permalink
    September 14, 2011

    Thank you. It did not work initially with windows, but i looked at the .py and found what was causing the problem.
    It has probably something to do with curses not being entirely supported in win, and therefore i removed everything regarding progressbar and downloadprogress inside soundclouderscraper.py.
    It’s a horrible hack, i admit, but atleast it works fine in windows now. I haven’t coded much (just recently starting with c++) but pythons syntax was easy enough to understand so i opted for the easy way out. I don’t know if i should post the changes i did but i can post the .py that works in win with python 2.7 if it’s requested.

    • lain permalink
      September 14, 2011

      Hm, i tried it out on an artist and it worked, but somehow only managed to get 19 songs.
      I did a head-count and noticed that the artist had 25 songs freely downloadable.
      I looked at the script and noticed it only counted to page 3? “‘/tracks?page=3′” and changed that to a ridiculous number. I then retried to download everything from that artist again but still only got “19 songs available”. What gives?

  3. December 4, 2011

    man, this is awesome! thanks a lot! seems to works fine with debian, just downloading 31 songs right now :)

  4. Radek permalink
    March 16, 2012

    This is great! Thanks a lot for sharing :]

  5. SoundLover permalink
    July 29, 2012

    This doesn’t work for all artists, not sure why. It also doesn’t work if there is a space in the artist’s name

  6. alacks permalink
    September 25, 2012

    u rox my sox

  7. October 25, 2012

    Hey, are you able to modify this to download all favourites/likes by a user?

    Ping me a tweet if so!

    Cheers,

  8. Jad permalink
    January 4, 2013

    I am new, how do I use this shizzle?

  9. erdnuesse permalink
    January 25, 2013

    I’d like to know if the script skips already downloaded tracks, so I could make a script using yours, where all my favourite artists updates get downloaded without wasting too much time…

  10. Mytto permalink
    April 30, 2013

    Is there any limit on the number of songs, weight, duration?

  11. May 6, 2013

    I have over 100 songs on my Soundcloud page, and this script is only downloading 5 of them…?

  12. February 5, 2015

    If there is a limit to this script, it would be great if anybody knows of any other scripts/tools out there to do this. There are now 150 freely downloadable tracks by Aphex Twin on Soundcloud and it would be great to snap them all up with some level of automation…

    • Sven Luijten permalink
      September 4, 2015

      Using it for the same page (Aphex Twin FTW), can’t seem to get the script to work. Anyone have a solution to this…?

Comments are closed.