I'd like to download automatically tons of papers listed on .bib file so I'm trying to find a way to facilitate the process by, e.g. I import or input to a tool a certain .bib file which contains a list of literature, the output is the literature's .pdf file. Any idea to do so?

  • 2
    Does it contain DOI or arXiv identifiers? If it does, it may be possible (though, automatic downloads are usually not allowed by journals). May 23, 2014 at 15:19
  • 2
    Related questions here and here and here
    – JeffE
    May 24, 2014 at 19:21
  • 1
    Don't forget what happened to Aaron Swartz.
    – Sverre
    May 26, 2014 at 18:21
  • 6
    Aaron Swartz's issue wasn't the automatic downloading, it was the intent to distribute the copyright materials. What Macchiavalley is asking has no such problems, at least not directly -- it may still be against policy, but it won't be anywhere near as much of an issue. Aug 10, 2014 at 7:45
  • 3
    Maybe a stupid question: Why would you do that? Surely, the bottleneck for reading through the papers is not finding and downloading them, but actually reading and understanding them?
    – nabla
    Apr 21, 2018 at 17:29

7 Answers 7


In contrast to the freemium/proprietary tool suggested in the answer by andreas, I propose a FOSS solution that works reliably for this specific task.

Assuming you are connected to a network that provides permissions to legally download the required content, the cross-platform reference manager,JabRef has integrated fetchers to download full-texts for the entries in your library. Import your bib file into Jabref (maybe just start a new library for this task to keep things clean) and select the desired number of entries for which full-text PDFs are needed. Then, from the Quality pull-down menu, select Lookup Fulltext documents.

However, you still have to manually confirm all downloads. From the user's perspective, this requires just a bunch of clicking the OK button in the same on-screen co-ordinate (for pop-ups that appears sequentially for each citation entry). Jabref does all the heavy-lifting and correctly downloads the desired PDFs of the full-text and link each of them appropriately by matching to their relevant citation entry in the library.

The latest master build of Jabref is recommended, since there were some recent fixes to its IEEE fetcher (i.e. if IEEE matters to the OP).

  • Thanks for sharing it, that's an excellent solution, on top of being a FOSS one!
    – Clément
    Apr 19, 2018 at 17:42
  • As of Sept 19, JabRef didn't work for me, the program freezes after every OK operation.
    – dopexxx
    Sep 20, 2019 at 12:48

BibTeX is usually a very heterogeneous source of bibliographic references. URLs can be stored in several fields like 'url', 'howpublished', or 'citeulike-linkout-0', 'citeulike-linkout-1'... 'citeulike-linkout-n'. Moreover, some entries have a DOI, arXiv ID, PubMed ID or PMC ID and some don't.

As a developer of Paperpile I had the pleasure to dig into this over the last years, and there is no easy solution to a problem like this, but I think Paperpile comes close to a 'least effort' solution for the user. Let me explain how you can handle such a task with Paperpile.

  1. Simply upload the BibTeX file to Paperpile
  2. Paperpile will automatically match the uploaded references against databases like PubMed or Google Scholar to get better bibliographic information. The key point here is that it will retrieve DOIs which point to the website of the article at the publisher.
  3. You can then trigger automatic download of the PDF of these articles

The nice side effect is that you will have an updated bibliography with many of the articles being up to date and having the abstract. Of course, you can also export your references then again as BibTeX.


I have taken the script developed by Janik Vonrotz (https://janikvonrotz.ch/2020/05/07/bulk-download-papers-from-scihub-for-text-mining/) and updated it:

urlencode() {
    # urlencode <string>

    local length="${#1}"
    for (( i = 0; i < length; i++ )); do
        local c="${1:i:1}"
        case $c in
            [a-zA-Z0-9.~_-]) printf "$c" ;;
            " ") printf "+";;
            *) printf '%%%02X' "'$c" ;;


readarray list < ./doi-list.txt    
for doi in "${list[@]}"
    echo "Download for term: ${doi}"
        echo "$(urlencode "${doi}")"
    link=$(curl -s -L 'https://sci-hub.se/' --compressed \
        -H 'authority: sci-hub.se' \
        -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
        -H 'accept-language: en-US,en;q=0.9,es-CO;q=0.8,es;q=0.7' \
        -H 'cache-control: max-age=0' \
        -H 'content-type: application/x-www-form-urlencoded' \
        -H 'cookie: __ddg1=BtxiJLnNZJLBkABn4hpt; session=97bea0eea9e31566256d52c73ff7f0c8; refresh=1632424058.9403; __ddgid=ZhCUNBqgvzZw8NyO; __ddgmark=fwbZCB5monJGgo14; __ddg2=xmUHEIajmbeImx4L' \
        -H 'origin: https://sci-hub.se' \
        -H 'referer: https://sci-hub.se/' \
        -H 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="92", "Opera";v="78"' \
        -H 'sec-ch-ua-mobile: ?0' \
        -H 'sec-fetch-dest: document' \
        -H 'sec-fetch-mode: navigate' \
        -H 'sec-fetch-site: same-origin' \
        -H 'sec-fetch-user: ?1' \
        -H 'upgrade-insecure-requests: 1' \
        -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 OPR/78.0.4093.231' \
        --data-raw "sci-hub-plugin-check=&request=$(urlencode "${doi}")". | grep -oP  "(?<=//).+(?=#)")

    echo "Found link: $link"
    cd ./Downloads/papers/textmining && { curl -s -L $link -O ; cd -; }

This version accepts one URL (BibTeX URL field), PMI/DOI, or search string (BibTeX title field) per line in the input file


You may don't like this answer but automatic download is explicitly forbidden by many publishers and can result in the ban of labs/campus access to the journals of the publisher. Such automatic download can made by e.g. EndNote (actually, it does it automatically in some settings), and done by some students in our lab - as a result, a bunch of IP addresses get blocked.


Mendeley can do this, though for non open access articles, you will get at most the abstract. Also, there's no guarantee on automatically getting pdfs, as this depends on user uploads.

  • can you please elaborate on how this can be done using Mendeley?
    – dopexxx
    Sep 20, 2019 at 11:26
  • Sorry, I haven't used mendeley in years, though maybe someone else can answer. I thought it was just a matter of synchronizing, but as I said, it has been years.
    – bbarker
    Sep 22, 2019 at 19:12

Some of these answers are overtly incorrect. OpenURL is a publisher endorsed standard (amongst others, such as DOI), that was built to facilitate exactly this. There are subscription models which most universities sign up to for this. The issue around Schwartz and Scihub etc. is linked but it is possible to legitimately download many articles in an academic bibliography in a batch/automated fashion. Endnote is a commercial tool that specifically has a function which involves downloading full text, as an example.


Zotero can import many formats, including *.bib.

You must log in to answer this question.

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