Unpaywall assigns an OA Status to every article, which you can find in the oa_status field of the API and dataset. There are five possible values: closed, green, gold, hybrid, and bronze. These terms are all commonly used in discussions of open access. Unfortunately, however, this is still not universal agreement on how to define them.


When using these terms in the Unpaywall API, we've done our best to follow the most common usage. However, our definitions may not map well to your use case.  That's ok. All the properties we use to determine the oa_status are in the API and datasets. So you don't need to use our oa_status--you can make your own, using the same underlying data.


So, without further ado, here's a flowchart-style description of how we determine the oa_status for each article:

  • Ok, let's get started. Is the article open access?
    • no (is_oa = false): Ok, oa_status is  closed . Done.
    • yes (is_oa = true). Let's learn more. Where is the best copy of the article hosted?
      • In a repository (best_oa_location.host_type = "repository"): Ok, oa_status is  green . Done.
      • On the publisher website (best_oa_location.host_type = "publisher"). Let's learn more. Is the article published in a fully-OA journal?
        • yes (journal_is_oa = true): Ok, oa_status is  gold . Done.
        • no (journal_is_oa = false). Let's learn more. Is the article published under an open license?
          • yes (best_oa_location.license is not null): Ok, oa_status is  hybrid . Done.
          • no (best_oa_location.license is null): Ok, oa_status is  bronze . Done.


You can learn more about these terms and why we selected them in our paper, "The state of OA: a large-scale analysis of the prevalence and impact of Open Access articles," published in the journal PeerJ--particularly the literature review and methods sections.