How to use wget to download files from Onedrive? (and batch files and entire folders, if possible)

  • 1
    Please take a look at superuser.com/questions/833199/… "In Office 365 how do I get a direct download link for an Excel document stored in One Drive for Business?" to see if that answers your question.
    – steve
    Commented Aug 17, 2015 at 16:08
  • But is necessary subscripted account in Office365.
    – charles
    Commented Aug 17, 2015 at 16:48
  • 1
    Use the OneDrive client that someone has kindly written for Linux ? github.com/xybu/onedrive-d-old
    – steve
    Commented Aug 17, 2015 at 16:53
  • Try to download the file to your browser, while the download is running, right click and 'copy download link'. If you are lucky you can wget that link.
    – Baazigar
    Commented Aug 17, 2015 at 18:33
  • I try Onedrive-d, but couldn't do 'get' work. Really by copying link to file and put in 'wget', it works, thank you.
    – charles
    Commented Aug 17, 2015 at 20:12

9 Answers 9


Update on APRIL 2021: It looks like this solution NO LONGER WORKS WITH ONEDRIVE FOR BUSINESS.

There is one way that works for me (based on How to Make Direct Link of OneDrive Files)

  1. Right-click on the file you are interested in download (from web interface), and choose Embed.

  2. Press "Generate HTML code to embed this file".

  3. Copy the part contained in the "" of src is your link. This will look like <https://onedrive.live.com/embed?cid=6EBB03E38A53ED3E& resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA>.

  4. Replace embed with download. This will look like https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA.

  5. Feed it to wget using following syntax (the quotes are required):

     wget --no-check-certificate "https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA"
  6. Enjoy.

  • 2
    One must not forget to put the link in "" in wget. I did and it didn't work. Commented Mar 8, 2017 at 9:58
  • 3
    I don't see "embed" when I right-click on files or folders.
    – srcerer
    Commented Mar 8, 2021 at 18:45
  • 1
    Hello @Fedorov7890 it seems that the embed option is no longer available. Commented Mar 19, 2021 at 11:56
  • 4
    @Fedorov7890 Sigh. THIS DOESN’T WORK WITH ONEDRIVE FOR BUSINESS. Commented Apr 13, 2021 at 23:17
  • 1
    I had to add the string &download=1 at the tail of the URL. Example: instead of using wget --no-check-certificate "https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA" I had to use wget --no-check-certificate "https://onedrive.live.com/download?cid=6EBB03E38A53ED3E&resid=6EBB03E38A53ED3E%21116&authkey=AC4lDqtLG8LqfiA&download=1" Commented Sep 9, 2021 at 19:57

generate a sharing link and append "&download=1" to the end of it.

e.g. if the link is "https://some.host/:z:/x/personal/some_user/123456asdf?e=12345"


wget "https://some.host/:z:/x/personal/some_user/123456asdf?e=12345&download=1"
  • 1
    THIS! is the easiest way and it works. Commented Dec 2, 2019 at 9:38
  • 4
    doesn't work anymore :(
    – Freedo
    Commented May 30, 2020 at 7:55
  • This answer needs more upvotes and should be the selected answer. Especially since OneDrive doesnt offer the embed option for business accounts!
    – amartin94
    Commented Apr 13, 2021 at 2:59
  • 1
    Works only for publicly exposed files, but great solution!
    – Gokul NC
    Commented May 28, 2021 at 17:15
  • 1
    tested on 28/10/2022 and it worked!
    – kungphil
    Commented Oct 28, 2022 at 13:25

Using Chrome (but Firefox will probably also work).

  1. Open DevTools
  2. Click the Download button.
  3. Download but cancel immediately
  4. Open the 'Network' tab in DevTools. Search for 'Zip?authKey=' in DevTools and open it (click). This is a POST request.
  5. Click 'View source' to the right of 'Form data' at the bottom.
  6. Construct the command as follows:


wget --post-data='<raw form data>' '<Download URL>'


wget --post-data='resIds=xxx&canary=yyy&authkey=zzz' 'https://cid--foobar.users.storage.live.com/downloadfiles/V1/Zip?authKey=zzz'

This even works on a different host (with a different IP address).

  • 11
    A simpler variation on this (using Firefox) is: Tools->Web Developer->Network. Find 'Zip?authKey=', right click on it and 'Copy as cURL'. Copy-paste into the command line and add '-o /path/to/some/file'. Of course this uses cURL instead of wget, but for this purpose they function identically Commented Dec 25, 2017 at 4:41
  • @happyskeptic So convenient! It also works on Chrome!
    – zhenbo xu
    Commented Dec 9, 2020 at 3:16
  • And how to do it automatically if there’s 100000 files to share? Commented Apr 13, 2021 at 23:19
  • Thanks for the tip! @happyskeptic I guess something changed on the side of OneDrive. I am doing same thing but with the record which has "x-zip-compressed" in "Type" field.
    – Philip
    Commented Jul 30, 2021 at 14:56
  • Yeah, there was no return for Zip?authKey= but I searched for zip and it returned a couple of files with gzip in the metadata description. One file appeared to be empty by judging the icon next to the string. The other had what looked like a white piece of paper icon or a file icon next to it so I right clicked on that string and copied it. No need to use any special syntax, I just used aria2c <url>
    – mchid
    Commented Jan 21, 2022 at 0:05

Also, we can use CurlWget I already tried on OneDrive and Google Drive


If you are looking to download an entire publicly shared folder (without auth!): OneDeath

It uses wget to do some API calls and will then recursively download files. Bonus: sha1 checks of finished files.

Sharepoint is now also supported, but it's a little trickier (it currently fetches more files from a drive than what is shown by the link). A major problem was a slightly different API structure and the fact that the session token expires after 1h, but it's solved too. They also appear to have some rate-limiting in place, so don't start too many parallel downloads.

The script can extract ready-to-use wget commands using the -w parameter.

PS: If you are interested to know more about the web API, I will give a run down of the process.

  • the best answer :)
    – Freedo
    Commented May 30, 2020 at 22:09
  1. Open the link in web interface like Chrome.
  2. Click "Download" on the top left.
  3. At the bottom, click "Show All".
  4. Find the downloading or downloaded file, right click the long link and click "Copy Link Address".
  5. wget the long address in command line.
  • probably the only one working way to download some shared files if you don't want to install additional tools or bring the python code to extract objects Commented Dec 10, 2020 at 13:26
  • @Hayden and how to do this if automatically if there’s 100000 files to share? Commented Apr 13, 2021 at 23:21
  • @user2284570 Haven't tried that before. Maybe you can try this github.com/abraunegg/onedrive.
    – Hayden
    Commented Apr 14, 2021 at 18:11
  • @Hayden no I really need to have those bunch of generated links accessible by third party tools. Commented Apr 14, 2021 at 21:15

This python SDK (with example) for OneDrive project works (for personal, business, and corporate accounts):


  • 1
    The project is deprecated and the api it uses is disabled since 2019. Commented Apr 13, 2021 at 23:20

I actually have an alternative solution:

  1. set-up OneDrive on you computer. This won't download the files on your local machine so don't need to worry about disk space.
  2. open a terminal window in the OneDrive folder on your computer then you can copy the contents of a specific folder like this:

Where <MY_BIG_ONEDRIVE_FOLDER> is the name of the OneDrive folder you want to copy files from and <MY_DESTINATION_FOLDER> is the destination folder.

I'm actually using this approach right now while I'm writing this post to copy +200Gb of files from my OneDrive folder to my external hard-drive.


You can embed the file and Replace embed with a download. This will look like https://onedrive.live.com/download?cid=6EBddB03E38A53ED3E&resid=6EBB03Eddd38A53ED3E%21116&authkey=AC4lddDqtLG8LqfiA.

Now use PHP curl to get this file content

$download_url = "https://onedrive.live.com/download?cid=6EBddB03E38A53ED3E&resid=6EBB03Eddd38A53ED3E%21116&authkey=AC4lddDqtLG8LqfiA"; 
$file_name = "test.xlsx";  
$ch = curl_init($download_url); 
curl_setopt($ch, CURLOPT_HEADER, 0);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);  
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
 $data = curl_exec($ch);  
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);  
$error = curl_errno($ch);  
curl_close($ch);   // A file with the same name may exist, that must be handled.  $file_save_path =   $file_name;
file_put_contents($file_save_path, $data);    

echo 'File successfully retrieved and stored!';

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .