Given a DOI pointing to a resource, how can I programmatically know whether the access to the resource is free of charge? E.g., if the DOI points to a research paper, how to programmatically know whether it is behind a paywall?


I know of three possibilities:

  1. Unpaywall's API. Use https://api.unpaywall.org/v2/{DOI} to access it. Not only does it provide a binary is_oa field (with the values true or false) and an oa_status field (e.g. green open access), but it even links to repositories and other locations where you can obtain a free version of the paper. Read more instructions here. One example: https://api.unpaywall.org/v2/10.1038/nature12373.

  2. OpenAccessButton's API. Use https://api.openaccessbutton.org/find?id={DOI} to access it. It contains a licence field from which you could infer the accessibility of the paper. Read more instructions here. One example: https://api.openaccessbutton.org/find?id=10.1371/journal.pone.0158765.

  3. CrossRef's API (as already hinted by Andrew Gilmartin). Use https://api.crossref.org/works/{DOI} to access it. Similar to OpenAccessButton, it contains the field name license. Read more on the documentation here. Example: https://api.crossref.org/works/10.1371/journal.pone.0158765.


It is probably impossible in general. The DOI is just a stupid number telling nothing specific about the content. You may decide on the so-called prefix of the DOI whether it belongs to a commercial publisher offering usually non-free content or to a publisher of free content. I am not aware of ready-made lists for this purpose, and there are prefix-owners publishing very mixed content what the licences are concerned.

You can just try to download the research papers, and when you cannot get a pdf file than conclude that you failed at a pay wall.

But this kind of conclusion may be flawed: You may use an institutional account where your institution has payed in advance, giving you a false positive (pdf, allthough in principle there exists a paywall, but just not for you and your institution).

You may get failures (false negatives) because the site you visit may have rigid measures against bots trying to download even free content.

  • 1
    Thanks! "The DOI is just a stupid number telling nothing specific about the content." -> DOI can have metadata. Unfortunately, trying to retrieve many PDFs would be against my institution's policy, and as you point out,.would give quite a few false positives, since my institution pay millions each year for journal subscription. I could use another IP but it would still infringe most journals' policies, I believe. – Franck Dernoncourt Jun 24 '16 at 19:09
  • Re "The DOI is just a stupid number telling nothing specific about the content." All DOI registration agencies provide metadata about the DOIs they register. For example, this is the first level of public data about your book api.crossref.org/works/10.1524/9783486850468 – Andrew Gilmartin Jun 3 '18 at 13:34

What are looking for information on is generally called text and data mining (TDM). Most publishers provide TDM details in the metadata associated with a DOI. The detail is usually a link to a use license. You would have to catalog the licenses to know (from the link alone) if the license provided open access to the content.

For example, here is metadata for the journal article "Representational bias in phytoliths from modern soils of central North America"


that contains a link to the license and links to the data.

For more information on TDM see Crossref's useful collection of information


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.