# Unpaywall

> Find free, legal copies of scholarly articles. Check whether a DOI is open access, get a link to the best free PDF, and check a whole reading list at once.

App · 2 actions. Web page: https://docs.lodol.com/docs/integrations/unpaywall

## Actions

### Check open access for many DOIs

Check up to 200 DOIs at once, such as a reading list, and get one row for each: whether it is free to read and where. DOIs Unpaywall doesn't know are listed rather than stopping the step.

**Inputs**

- DOIs (`dois`, list, required): A list from an earlier step, or DOIs separated by commas or new lines. https://doi.org/ links work too.

**Outputs**

- `closed_count` (number): How many were found but have no free copy.
- `count` (number): How many DOIs were checked.
- `found_count` (number): How many Unpaywall has a record of.
- `not_found` (list): The entries Unpaywall has no record of, or that aren't DOIs.
- `open_count` (number): How many have a free, legal copy.
- `results` (list): One row per DOI, in the order given; repeats dropped.

**Example output**

```json
{
  "closed_count": 1,
  "count": 3,
  "found_count": 2,
  "not_found": [
    "10.5281/zenodo.10680266"
  ],
  "open_count": 1,
  "results": [
    {
      "best_license": null,
      "best_pdf_url": "https://www.nature.com/articles/nature12373.pdf",
      "best_url": "https://www.nature.com/articles/nature12373.pdf",
      "best_version": "publishedVersion",
      "doi": "10.1038/nature12373",
      "error": null,
      "found": true,
      "is_oa": true,
      "journal_name": "Nature",
      "oa_status": "bronze",
      "title": "Nanometre-scale thermometry in a living cell",
      "year": 2013
    },
    {
      "best_license": null,
      "best_pdf_url": null,
      "best_url": null,
      "best_version": null,
      "doi": "10.1126/science.1157784",
      "error": null,
      "found": true,
      "is_oa": false,
      "journal_name": "Science",
      "oa_status": "closed",
      "title": "Strategic Reading, Ontologies, and the Future of Scientific Publishing",
      "year": 2009
    },
    {
      "best_license": null,
      "best_pdf_url": null,
      "best_url": null,
      "best_version": null,
      "doi": "10.5281/zenodo.10680266",
      "error": "Not in Unpaywall",
      "found": false,
      "is_oa": false,
      "journal_name": null,
      "oa_status": null,
      "title": null,
      "year": null
    }
  ]
}
```

### Get open-access status

Find out whether a scholarly article has a free, legal copy, with a link to the best one (its PDF when there is one) and every other place it can be read.

**Inputs**

- DOI (`doi`, text, required): The article's DOI, such as 10.1038/nature12373. A https://doi.org/ link works too.

**Outputs**

- `authors` (list): The authors' names, in order.
- `best_host_type` (text): Where the best copy is: 'publisher' or 'repository'.
- `best_landing_page_url` (text): The page the best free copy is on.
- `best_license` (text): The best copy's licence, such as 'cc-by', if known.
- `best_pdf_url` (text): A direct PDF link for the best free copy, if any.
- `best_url` (text): A link to the best free copy: its PDF when there is one.
- `best_version` (text): Which version the best copy is: 'publishedVersion', 'acceptedVersion' or 'submittedVersion'.
- `doi` (text): The DOI, in lowercase.
- `doi_url` (text): The DOI as a https://doi.org/ link.
- `genre` (text): The kind of work, such as 'journal-article'.
- `has_repository_copy` (true/false): Whether a free copy is in a repository, such as a preprint server.
- `is_oa` (true/false): Whether there is any free, legal copy.
- `is_paratext` (true/false): Whether it is front matter rather than an article: a table of contents, a cover or a masthead.
- `journal_is_in_doaj` (true/false): Whether the journal is listed in the Directory of Open Access Journals.
- `journal_is_oa` (true/false): Whether the journal publishes only open access.
- `journal_issn_l` (text): The journal's linking ISSN.
- `journal_issns` (list): All of the journal's ISSNs.
- `journal_name` (text): The journal it appeared in.
- `oa_location_count` (number): How many free copies there are.
- `oa_locations` (list): Every free copy Unpaywall knows of, best first.
- `oa_status` (text): How it is open: 'gold' (open-access journal), 'diamond' (open-access journal that charges authors nothing), 'hybrid' (open licence in a subscription journal), 'bronze' (free on the publisher's site without an open licence), 'green' (free in a repository) or 'closed'.
- `oa_status_meaning` (text): The open-access status in plain words.
- `published_date` (text): When it was published (YYYY-MM-DD).
- `publisher` (text): The publisher.
- `title` (text): The work's title.
- `updated` (text): When Unpaywall last updated this record.
- `year` (number): The year it was published.

**Example output**

```json
{
  "authors": [
    "G. Kucsko",
    "P. C. Maurer",
    "N. Y. Yao",
    "M. Kubo",
    "H. J. Noh",
    "P. K. Lo",
    "H. Park",
    "M. D. Lukin"
  ],
  "best_host_type": "publisher",
  "best_landing_page_url": "https://doi.org/10.1038/nature12373",
  "best_license": null,
  "best_pdf_url": "https://www.nature.com/articles/nature12373.pdf",
  "best_url": "https://www.nature.com/articles/nature12373.pdf",
  "best_version": "publishedVersion",
  "doi": "10.1038/nature12373",
  "doi_url": "https://doi.org/10.1038/nature12373",
  "genre": "journal-article",
  "has_repository_copy": true,
  "is_oa": true,
  "is_paratext": false,
  "journal_is_in_doaj": false,
  "journal_is_oa": false,
  "journal_issn_l": "0028-0836",
  "journal_issns": [
    "0028-0836",
    "1476-4687"
  ],
  "journal_name": "Nature",
  "oa_location_count": 3,
  "oa_locations": [
    {
      "host_type": "publisher",
      "is_best": true,
      "landing_page_url": "https://doi.org/10.1038/nature12373",
      "license": null,
      "oa_date": "2013-07-30",
      "pdf_url": "https://www.nature.com/articles/nature12373.pdf",
      "repository": null,
      "url": "https://www.nature.com/articles/nature12373.pdf",
      "version": "publishedVersion"
    },
    {
      "host_type": "repository",
      "is_best": false,
      "landing_page_url": "http://arxiv.org/abs/1304.1068",
      "license": null,
      "oa_date": "2013-07-30",
      "pdf_url": "https://arxiv.org/pdf/1304.1068",
      "repository": "Cornell University",
      "url": "https://arxiv.org/pdf/1304.1068",
      "version": "submittedVersion"
    },
    {
      "host_type": "repository",
      "is_best": false,
      "landing_page_url": "http://nrs.harvard.edu/urn-3:HUL.InstRepos:12285462",
      "license": "cc-by",
      "oa_date": "2013-07-30",
      "pdf_url": null,
      "repository": "Harvard University",
      "url": "http://nrs.harvard.edu/urn-3:HUL.InstRepos:12285462",
      "version": "submittedVersion"
    }
  ],
  "oa_status": "bronze",
  "oa_status_meaning": "free to read on the publisher's site, without an open licence",
  "published_date": "2013-07-30",
  "publisher": "Springer Science and Business Media LLC",
  "title": "Nanometre-scale thermometry in a living cell",
  "updated": "2026-10-15T10:14:54Z",
  "year": 2013
}
```
