# Crossref

> Search and read Crossref's catalogue of over 170 million registered works: look up any DOI's full metadata, find the DOI for a citation, browse a journal's, publisher's or funder's output, and turn a DOI into a formatted citation, BibTeX or RIS.

App · Research & Academia · 19 actions. Web page: https://docs.lodol.com/docs/integrations/crossref

## Actions

### Check which agency owns a DOI

Find out which registration agency a DOI belongs to. Not every DOI is a Crossref DOI (datasets are usually DataCite, and there are agencies for medical, Japanese and Korean content), and only Crossref DOIs have metadata in this API. Use it before a lookup so a workflow can route a non-Crossref DOI elsewhere instead of failing on it.

**Inputs**

- DOI (`doi`, text, required): The DOI to check.

**Outputs**

- `agency` (object)
- `agency_id` (text)
- `agency_label` (text)
- `doi` (text)

**Example output**

```json
{
  "agency": {
    "id": "crossref",
    "label": "Crossref"
  },
  "agency_id": "crossref",
  "agency_label": "Crossref",
  "doi": "10.1038/nature12373"
}
```

### Format a citation

Turn a DOI into a ready-to-paste citation. Pick a style (APA, MLA, Chicago, Harvard, IEEE, Nature and others) and get the reference back as text, or choose BibTeX, RIS, CSL JSON or Crossref XML to hand to a reference manager or a typesetting pipeline. Crossref renders the citation itself, so nothing has to be assembled from the raw metadata.

**Inputs**

- DOI (`doi`, text, required): The DOI to render.
- Format (`output_format`, text): What to get back. 'Formatted citation' is a finished reference in the style chosen below; the others are machine-readable formats for reference managers and publishing tools. One of: `text/x-bibliography` (Formatted citation (pick a style below)), `application/x-bibtex` (BibTeX), `application/x-research-info-systems` (RIS (EndNote, Zotero, Mendeley)), `application/vnd.citationstyles.csl+json` (CSL JSON), `application/vnd.crossref.unixref+xml` (Crossref UNIXREF XML), `application/vnd.crossref.unixsd+xml` (Crossref UNIXSD XML), `application/rdf+xml` (RDF/XML), `text/turtle` (RDF Turtle). Default: `text/x-bibliography`.
- Citation style (`citation_style`, text): Which style to write the reference in. Only used when the format above is 'Formatted citation'. Defaults to APA. One of: `apa` (APA (7th edition)), `apa-6th-edition` (APA (6th edition)), `modern-language-association` (MLA), `chicago-author-date` (Chicago (author–date)), `harvard-cite-them-right` (Harvard (Cite Them Right)), `elsevier-harvard` (Elsevier Harvard), `ieee`, `american-medical-association` (AMA (American Medical Association)), `american-chemical-society` (ACS (American Chemical Society)), `american-institute-of-physics` (AIP (American Institute of Physics)), and 12 more. Default: `apa`.

**Outputs**

- `citation` (text)
- `content_type` (text)
- `doi` (text)
- `output_format` (text)
- `style` (text)

**Example output**

```json
{
  "citation": "Kucsko, G., Maurer, P. C., Yao, N. Y., Kubo, M., Noh, H. J., Lo, P. K., Park, H., & Lukin, M. D. (2013). Nanometre-scale thermometry in a living cell. Nature, 500(7460), 54\u201358. https://doi.org/10.1038/nature12373",
  "content_type": "text/x-bibliography",
  "doi": "10.1038/nature12373",
  "output_format": "text/x-bibliography",
  "style": "apa"
}
```

### Get DOI prefix owner

Find out which Crossref member owns a DOI prefix: the 10.1038 in 10.1038/nature12373. Prefixes outlive imprints and acquisitions, so this is how you tell who actually registered a DOI, and it works from a whole DOI as well as from the prefix on its own.

**Inputs**

- DOI prefix (`prefix`, text, required): The part of a DOI before the slash. A whole DOI works here too; only the prefix is used.

**Outputs**

- `prefix` (object)

**Example output**

```json
{
  "prefix": {
    "member": "https://id.crossref.org/member/297",
    "name": "Springer Science and Business Media LLC",
    "prefix": "https://id.crossref.org/prefix/10.1038"
  }
}
```

### Get funder

Get one funder's record: its official and alternative names, country, how many works credit it directly, how many credit it or anything beneath it, and the whole tree of its sub-organisations (the directorates, institutes and programmes that fund in its name).

**Inputs**

- Funder ID (`funder_id`, text, required): The funder's Funder Registry ID. Find one with 'Search funders'; the funder's full DOI works here too.

**Outputs**

- `funder` (object)

**Example output**

```json
{
  "funder": {
    "alt-names": [
      "EC",
      "European Union"
    ],
    "descendant-work-count": 1044123,
    "id": "501100000780",
    "location": "European Union",
    "name": "European Commission",
    "uri": "http://dx.doi.org/10.13039/501100000780",
    "work-count": 138992
  }
}
```

### Get journal by ISSN

Get one journal's record: its title, publisher, both ISSNs, how many DOIs it has registered per year, and a breakdown of how much of its metadata carries abstracts, ORCID iDs, licences, funding and references. Handy for judging how trustworthy a search over that journal will be.

**Inputs**

- ISSN (`issn`, text, required): The journal's ISSN. Either the print or the electronic one works, and the hyphen is optional.

**Outputs**

- `journal` (object)

**Example output**

```json
{
  "journal": {
    "ISSN": [
      "0028-0836",
      "1476-4687"
    ],
    "counts": {
      "backfile-dois": 405916,
      "current-dois": 12704,
      "total-dois": 418620
    },
    "flags": {
      "deposits-abstracts-current": false,
      "deposits-orcids-current": true
    },
    "publisher": "Springer Science and Business Media LLC",
    "title": "Nature"
  }
}
```

### Get publisher

Get one publisher's record: its names, location, every DOI prefix it owns, how many DOIs it has registered by year, and the metadata-quality scores that say how often it deposits abstracts, ORCID iDs, licences, funding and reference lists.

**Inputs**

- Publisher (Crossref member ID) (`member_id`, text, required): The publisher's Crossref member ID. Find one with 'Search publishers'.

**Outputs**

- `member` (object)

**Example output**

```json
{
  "member": {
    "counts": {
      "backfile-dois": 11034335,
      "current-dois": 1109031,
      "total-dois": 12143366
    },
    "id": 311,
    "location": "111 River Street, Hoboken, NJ 07030, United States",
    "names": [
      "Wiley",
      "John Wiley & Sons, Inc."
    ],
    "prefixes": [
      "10.1002",
      "10.1111"
    ],
    "primary-name": "Wiley"
  }
}
```

### Get work by DOI

Look up one DOI and get everything the publisher deposited for it: title, authors with their ORCID iDs and affiliations, journal, volume, issue, pages, every publication date, the licence, full-text links, funding, the abstract where there is one, and the whole reference list. Accepts a bare DOI, a doi.org link, or a DOI copied out of a citation.

**Inputs**

- DOI (`doi`, text, required): The DOI to look up. A doi.org link or a 'doi:' prefix is fine; only the DOI itself is used.

**Outputs**

- `work` (object)

**Example output**

```json
{
  "work": {
    "DOI": "10.1038/nature12373",
    "ISSN": [
      "0028-0836",
      "1476-4687"
    ],
    "URL": "http://dx.doi.org/10.1038/nature12373",
    "author": [
      {
        "family": "Kucsko",
        "given": "G.",
        "sequence": "first"
      },
      {
        "family": "Maurer",
        "given": "P. C.",
        "sequence": "additional"
      }
    ],
    "container-title": [
      "Nature"
    ],
    "created": {
      "date-parts": [
        [
          2013,
          7,
          31
        ]
      ],
      "date-time": "2013-07-31T17:03:41Z",
      "timestamp": 1375290221000
    },
    "is-referenced-by-count": 1807,
    "issue": "7460",
    "issued": {
      "date-parts": [
        [
          2013,
          7,
          31
        ]
      ]
    },
    "language": "en",
    "license": [
      {
        "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
        "content-version": "tdm"
      }
    ],
    "link": [
      {
        "URL": "http://www.nature.com/articles/nature12373.pdf",
        "content-type": "application/pdf",
        "intended-application": "text-mining"
      }
    ],
    "member": "297",
    "page": "54-58",
    "prefix": "10.1038",
    "published": {
      "date-parts": [
        [
          2013,
          7,
          31
        ]
      ]
    },
    "publisher": "Springer Science and Business Media LLC",
    "references-count": 30,
    "score": 24.5,
    "short-container-title": [
      "Nature"
    ],
    "subject": [
      "Multidisciplinary"
    ],
    "title": [
      "Nanometre-scale thermometry in a living cell"
    ],
    "type": "journal-article",
    "volume": "500"
  }
}
```

### Get work type

Get one work type's ID and display label: the pair to show someone, or to check a type ID before filtering a search on it.

**Inputs**

- Work type (`type_id`, text, required): Which kind of work. The list comes from Crossref's own /types endpoint, so it is always current.

**Outputs**

- `type` (object)

**Example output**

```json
{
  "type": {
    "id": "journal-article",
    "label": "Journal Article"
  }
}
```

### List a DOI prefix's works

List everything registered under one DOI prefix, with the same search, filter and sort options as the main search. A publisher usually owns several prefixes, so this is narrower than listing a publisher's works; it is the right one when you care about a specific imprint.

**Inputs**

- DOI prefix (`prefix`, text, required): The part of a DOI before the slash. A whole DOI works here too; only the prefix is used.
- Search terms (`query`, text): Words to look for anywhere in the record: title, authors, journal, abstract and the rest. Leave it empty to list everything the filters below match.
- Bibliographic reference (`query_bibliographic`, text): A whole citation, pasted in as one string: title, authors, journal, volume and year together. This is the field to use when you are trying to find the DOI for a reference you already have.
- Title contains (`query_title`, text): Words that must appear in the work's title.
- Author (`query_author`, text): An author's name. Names are not unique in Crossref, so pair this with an ORCID iD or a journal when you need one specific researcher.
- Journal or book title (`query_container_title`, text): The name of the journal, book or proceedings the work appeared in. Use the ISSN filter instead when you know it (it is exact, and this is a text match).
- Search another field (`search_field`, text): Search one specific field instead of the whole record. Pick the field here and put the words in 'Terms for that field' below. The four fields above are the common ones and already have boxes of their own. One of: `affiliation` (Author affiliation), `author` (Author name), `bibliographic` (Bibliographic reference (title, authors, journal, year…)), `chair` (Chair name), `container-title` (Journal or book title), `contributor` (Any contributor's name), `degree` (Degree (for dissertations)), `description`, `editor` (Editor name), `event-acronym` (Conference acronym), and 11 more.
- Terms for that field (`search_field_terms`, text): What to look for in the field chosen above. Only used when a field is chosen.
- Work types (`types`, list): Keep only these kinds of work: journal articles, book chapters, preprints ('posted content'), datasets, dissertations and the rest. Choosing several keeps works of any of them. The list comes from Crossref, so it is always current.
- Record must have (`must_have`, list): Keep only records that carry all of these. Crossref metadata is deposited by publishers and is uneven, so this is how you get, say, only works that came with an abstract and a licence. One or more of: `has-abstract` (An abstract), `has-affiliation` (Author affiliations), `has-affiliation-ror-id` (A ROR ID on an affiliation), `has-alias` (An alias DOI), `has-archive` (A digital-preservation archive), `has-assertion` (A publisher assertion), `has-authenticated-orcid` (An author ORCID iD the author signed in to confirm), `has-award` (A grant award), `has-clinical-trial-number` (A clinical trial number), `has-content-domain` (A content domain (where the full text may be shown)), and 14 more.
- Date to filter on (`date_field`, text): Which date the window below applies to. Defaults to the publication date. 'Metadata last deposited' and 'Last indexed by Crossref' are the ones to use for a workflow that watches for new records, since a work can be published long before its metadata arrives. One of: `published` (Published (whichever date came first)), `issued`, `published-online` (Published online), `published-print` (Published in print), `posted` (Posted (preprints)), `accepted`, `approved`, `awarded` (Awarded (grants)), `created` (First registered with Crossref), `deposited` (Metadata last deposited), and 4 more. Default: `published`.
- From date (`from_date`, date): Keep only records on or after this date.
- Until date (`until_date`, date): Keep only records on or before this date.
- ISSN (`issn`, text): Keep only works published in the journal with this ISSN. The hyphen is optional.
- ISBN (`isbn`, text): Keep only works published in the book with this ISBN.
- Author ORCID iD (`orcid`, text): Keep only works with this ORCID iD among the authors (the reliable way to follow one researcher, since names repeat). An orcid.org link works here too.
- Publisher (Crossref member ID) (`member_id`, text): Keep only works registered by this Crossref member. Find the ID with 'Search publishers'.
- Funder ID (`funder_id`, text): Keep only works crediting this funder. Find the ID with 'Search funders'; the funder's full DOI works here too.
- Grant award number (`award_number`, text): Keep only works crediting this grant number. Pair it with a funder ID: award numbers are only unique within a funder.
- Preserved in archive (`archive`, text): Keep only works the publisher has deposited into this digital-preservation archive. One of: `ADS` (ADS (Astrophysics Data System)), `BL` (British Library), `Cariniana Network`, `CINES`, `CLOCKSS`, `DWT` (Deutsche Nationalbibliothek (DWT)), `HathiTrust`, `Internet Archive`, `KB` (Koninklijke Bibliotheek), `LOC` (Library of Congress), and 7 more.
- Other Crossref filters (`extra_filters`, text): Any of Crossref's remaining filters, written as name:value and separated by commas: the escape hatch for the ones without a field above (license.url, relation.type, update-type, container-title, clinical-trial-number, gte-award-amount and so on). Filter names are checked before the request is sent, so a typo is reported here. Full list: https://www.crossref.org/documentation/retrieve-metadata/rest-api/rest-api-filters/
- Fields to return (`select_fields`, list): Return only these fields from each record instead of the whole thing. A full Crossref record includes the entire reference list and can run to hundreds of kilobytes, so narrowing this makes a large search far faster and the result far easier to read. Leave it empty for everything. One or more of: `DOI`, `ISBN` (ISBNs), `ISSN` (ISSNs), `URL` (DOI link), `abstract`, `accepted` (Accepted date), `alternative-id` (Publisher's own IDs), `approved` (Approved date), `archive` (Preservation archives), `article-number` (Article number), and 49 more.
- Sort by (`sort`, text): How to order the results. Defaults to relevance when you searched for something, and to no particular order when you only filtered. One of: `relevance` (Relevance to the search terms), `score` (Search score), `published` (Publication date), `published-print` (Print publication date), `published-online` (Online publication date), `issued` (Issued date), `created` (Date first registered with Crossref), `deposited` (Date metadata was last deposited), `indexed` (Date last indexed by Crossref), `updated` (Date the record was last updated), `is-referenced-by-count` (Number of times cited), `references-count` (Number of references).
- Sort direction (`order`, text): Which end of the sort to start from. Defaults to highest or newest. One of: `desc` (Highest or newest first), `asc` (Lowest or oldest first). Default: `desc`.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.
- Random sample size (`sample`, number): Return this many records picked at random from everything that matches, up to 100. Useful for spot-checking a large set. It replaces normal paging, so it cannot be combined with 'Number of results', 'Skip this many' or 'Cursor'. From 1 to 100.
- Count results by (`facets`, list): Also return counts of the matching works broken down by these fields: how many by publisher, by type, by year. Pair it with 0 results to get the counts on their own. One or more of: `affiliation` (Author affiliation), `archive` (Preservation archive), `assertion` (Publisher assertion), `assertion-group` (Publisher assertion group), `category-name` (Subject category), `container-title` (Journal or book title), `funder-doi` (Funder DOI), `funder-name` (Funder name), `issn`, `journal-issue` (Journal issue), and 11 more.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "DOI": "10.1038/nature12373",
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "URL": "http://dx.doi.org/10.1038/nature12373",
      "author": [
        {
          "family": "Kucsko",
          "given": "G.",
          "sequence": "first"
        },
        {
          "family": "Maurer",
          "given": "P. C.",
          "sequence": "additional"
        }
      ],
      "container-title": [
        "Nature"
      ],
      "created": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ],
        "date-time": "2013-07-31T17:03:41Z",
        "timestamp": 1375290221000
      },
      "is-referenced-by-count": 1807,
      "issue": "7460",
      "issued": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "language": "en",
      "license": [
        {
          "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
          "content-version": "tdm"
        }
      ],
      "link": [
        {
          "URL": "http://www.nature.com/articles/nature12373.pdf",
          "content-type": "application/pdf",
          "intended-application": "text-mining"
        }
      ],
      "member": "297",
      "page": "54-58",
      "prefix": "10.1038",
      "published": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "publisher": "Springer Science and Business Media LLC",
      "references-count": 30,
      "score": 24.5,
      "short-container-title": [
        "Nature"
      ],
      "subject": [
        "Multidisciplinary"
      ],
      "title": [
        "Nanometre-scale thermometry in a living cell"
      ],
      "type": "journal-article",
      "volume": "500"
    }
  ],
  "total_results": 4128
}
```

### List a funder's works

List everything that credits one funder, with the same search, filter and sort options as the main search. This is how a funder or an institution reports on the output of its grants; add a grant number to narrow it to a single award.

**Inputs**

- Funder ID (`funder_id`, text, required): The funder's Funder Registry ID. Find one with 'Search funders'; the funder's full DOI works here too.
- Search terms (`query`, text): Words to look for anywhere in the record: title, authors, journal, abstract and the rest. Leave it empty to list everything the filters below match.
- Bibliographic reference (`query_bibliographic`, text): A whole citation, pasted in as one string: title, authors, journal, volume and year together. This is the field to use when you are trying to find the DOI for a reference you already have.
- Title contains (`query_title`, text): Words that must appear in the work's title.
- Author (`query_author`, text): An author's name. Names are not unique in Crossref, so pair this with an ORCID iD or a journal when you need one specific researcher.
- Journal or book title (`query_container_title`, text): The name of the journal, book or proceedings the work appeared in. Use the ISSN filter instead when you know it (it is exact, and this is a text match).
- Search another field (`search_field`, text): Search one specific field instead of the whole record. Pick the field here and put the words in 'Terms for that field' below. The four fields above are the common ones and already have boxes of their own. One of: `affiliation` (Author affiliation), `author` (Author name), `bibliographic` (Bibliographic reference (title, authors, journal, year…)), `chair` (Chair name), `container-title` (Journal or book title), `contributor` (Any contributor's name), `degree` (Degree (for dissertations)), `description`, `editor` (Editor name), `event-acronym` (Conference acronym), and 11 more.
- Terms for that field (`search_field_terms`, text): What to look for in the field chosen above. Only used when a field is chosen.
- Work types (`types`, list): Keep only these kinds of work: journal articles, book chapters, preprints ('posted content'), datasets, dissertations and the rest. Choosing several keeps works of any of them. The list comes from Crossref, so it is always current.
- Record must have (`must_have`, list): Keep only records that carry all of these. Crossref metadata is deposited by publishers and is uneven, so this is how you get, say, only works that came with an abstract and a licence. One or more of: `has-abstract` (An abstract), `has-affiliation` (Author affiliations), `has-affiliation-ror-id` (A ROR ID on an affiliation), `has-alias` (An alias DOI), `has-archive` (A digital-preservation archive), `has-assertion` (A publisher assertion), `has-authenticated-orcid` (An author ORCID iD the author signed in to confirm), `has-award` (A grant award), `has-clinical-trial-number` (A clinical trial number), `has-content-domain` (A content domain (where the full text may be shown)), and 14 more.
- Date to filter on (`date_field`, text): Which date the window below applies to. Defaults to the publication date. 'Metadata last deposited' and 'Last indexed by Crossref' are the ones to use for a workflow that watches for new records, since a work can be published long before its metadata arrives. One of: `published` (Published (whichever date came first)), `issued`, `published-online` (Published online), `published-print` (Published in print), `posted` (Posted (preprints)), `accepted`, `approved`, `awarded` (Awarded (grants)), `created` (First registered with Crossref), `deposited` (Metadata last deposited), and 4 more. Default: `published`.
- From date (`from_date`, date): Keep only records on or after this date.
- Until date (`until_date`, date): Keep only records on or before this date.
- ISSN (`issn`, text): Keep only works published in the journal with this ISSN. The hyphen is optional.
- ISBN (`isbn`, text): Keep only works published in the book with this ISBN.
- Author ORCID iD (`orcid`, text): Keep only works with this ORCID iD among the authors (the reliable way to follow one researcher, since names repeat). An orcid.org link works here too.
- Publisher (Crossref member ID) (`member_id`, text): Keep only works registered by this Crossref member. Find the ID with 'Search publishers'.
- DOI prefix (`prefix`, text): Keep only works whose DOI starts with this prefix. A whole DOI works here too; only the prefix is used.
- Grant award number (`award_number`, text): Keep only works crediting this grant number. Pair it with a funder ID: award numbers are only unique within a funder.
- Preserved in archive (`archive`, text): Keep only works the publisher has deposited into this digital-preservation archive. One of: `ADS` (ADS (Astrophysics Data System)), `BL` (British Library), `Cariniana Network`, `CINES`, `CLOCKSS`, `DWT` (Deutsche Nationalbibliothek (DWT)), `HathiTrust`, `Internet Archive`, `KB` (Koninklijke Bibliotheek), `LOC` (Library of Congress), and 7 more.
- Other Crossref filters (`extra_filters`, text): Any of Crossref's remaining filters, written as name:value and separated by commas: the escape hatch for the ones without a field above (license.url, relation.type, update-type, container-title, clinical-trial-number, gte-award-amount and so on). Filter names are checked before the request is sent, so a typo is reported here. Full list: https://www.crossref.org/documentation/retrieve-metadata/rest-api/rest-api-filters/
- Fields to return (`select_fields`, list): Return only these fields from each record instead of the whole thing. A full Crossref record includes the entire reference list and can run to hundreds of kilobytes, so narrowing this makes a large search far faster and the result far easier to read. Leave it empty for everything. One or more of: `DOI`, `ISBN` (ISBNs), `ISSN` (ISSNs), `URL` (DOI link), `abstract`, `accepted` (Accepted date), `alternative-id` (Publisher's own IDs), `approved` (Approved date), `archive` (Preservation archives), `article-number` (Article number), and 49 more.
- Sort by (`sort`, text): How to order the results. Defaults to relevance when you searched for something, and to no particular order when you only filtered. One of: `relevance` (Relevance to the search terms), `score` (Search score), `published` (Publication date), `published-print` (Print publication date), `published-online` (Online publication date), `issued` (Issued date), `created` (Date first registered with Crossref), `deposited` (Date metadata was last deposited), `indexed` (Date last indexed by Crossref), `updated` (Date the record was last updated), `is-referenced-by-count` (Number of times cited), `references-count` (Number of references).
- Sort direction (`order`, text): Which end of the sort to start from. Defaults to highest or newest. One of: `desc` (Highest or newest first), `asc` (Lowest or oldest first). Default: `desc`.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.
- Random sample size (`sample`, number): Return this many records picked at random from everything that matches, up to 100. Useful for spot-checking a large set. It replaces normal paging, so it cannot be combined with 'Number of results', 'Skip this many' or 'Cursor'. From 1 to 100.
- Count results by (`facets`, list): Also return counts of the matching works broken down by these fields: how many by publisher, by type, by year. Pair it with 0 results to get the counts on their own. One or more of: `affiliation` (Author affiliation), `archive` (Preservation archive), `assertion` (Publisher assertion), `assertion-group` (Publisher assertion group), `category-name` (Subject category), `container-title` (Journal or book title), `funder-doi` (Funder DOI), `funder-name` (Funder name), `issn`, `journal-issue` (Journal issue), and 11 more.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "DOI": "10.1038/nature12373",
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "URL": "http://dx.doi.org/10.1038/nature12373",
      "author": [
        {
          "family": "Kucsko",
          "given": "G.",
          "sequence": "first"
        },
        {
          "family": "Maurer",
          "given": "P. C.",
          "sequence": "additional"
        }
      ],
      "container-title": [
        "Nature"
      ],
      "created": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ],
        "date-time": "2013-07-31T17:03:41Z",
        "timestamp": 1375290221000
      },
      "is-referenced-by-count": 1807,
      "issue": "7460",
      "issued": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "language": "en",
      "license": [
        {
          "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
          "content-version": "tdm"
        }
      ],
      "link": [
        {
          "URL": "http://www.nature.com/articles/nature12373.pdf",
          "content-type": "application/pdf",
          "intended-application": "text-mining"
        }
      ],
      "member": "297",
      "page": "54-58",
      "prefix": "10.1038",
      "published": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "publisher": "Springer Science and Business Media LLC",
      "references-count": 30,
      "score": 24.5,
      "short-container-title": [
        "Nature"
      ],
      "subject": [
        "Multidisciplinary"
      ],
      "title": [
        "Nanometre-scale thermometry in a living cell"
      ],
      "type": "journal-article",
      "volume": "500"
    }
  ],
  "total_results": 4128
}
```

### List a journal's works

List everything published in one journal, with the same search, filter and sort options as the main search. Sort by publication date for a table of contents, or filter on the deposited date to catch what the journal has registered since you last looked.

**Inputs**

- ISSN (`issn`, text, required): The journal's ISSN. Either the print or the electronic one works, and the hyphen is optional.
- Search terms (`query`, text): Words to look for anywhere in the record: title, authors, journal, abstract and the rest. Leave it empty to list everything the filters below match.
- Bibliographic reference (`query_bibliographic`, text): A whole citation, pasted in as one string: title, authors, journal, volume and year together. This is the field to use when you are trying to find the DOI for a reference you already have.
- Title contains (`query_title`, text): Words that must appear in the work's title.
- Author (`query_author`, text): An author's name. Names are not unique in Crossref, so pair this with an ORCID iD or a journal when you need one specific researcher.
- Journal or book title (`query_container_title`, text): The name of the journal, book or proceedings the work appeared in. Use the ISSN filter instead when you know it (it is exact, and this is a text match).
- Search another field (`search_field`, text): Search one specific field instead of the whole record. Pick the field here and put the words in 'Terms for that field' below. The four fields above are the common ones and already have boxes of their own. One of: `affiliation` (Author affiliation), `author` (Author name), `bibliographic` (Bibliographic reference (title, authors, journal, year…)), `chair` (Chair name), `container-title` (Journal or book title), `contributor` (Any contributor's name), `degree` (Degree (for dissertations)), `description`, `editor` (Editor name), `event-acronym` (Conference acronym), and 11 more.
- Terms for that field (`search_field_terms`, text): What to look for in the field chosen above. Only used when a field is chosen.
- Work types (`types`, list): Keep only these kinds of work: journal articles, book chapters, preprints ('posted content'), datasets, dissertations and the rest. Choosing several keeps works of any of them. The list comes from Crossref, so it is always current.
- Record must have (`must_have`, list): Keep only records that carry all of these. Crossref metadata is deposited by publishers and is uneven, so this is how you get, say, only works that came with an abstract and a licence. One or more of: `has-abstract` (An abstract), `has-affiliation` (Author affiliations), `has-affiliation-ror-id` (A ROR ID on an affiliation), `has-alias` (An alias DOI), `has-archive` (A digital-preservation archive), `has-assertion` (A publisher assertion), `has-authenticated-orcid` (An author ORCID iD the author signed in to confirm), `has-award` (A grant award), `has-clinical-trial-number` (A clinical trial number), `has-content-domain` (A content domain (where the full text may be shown)), and 14 more.
- Date to filter on (`date_field`, text): Which date the window below applies to. Defaults to the publication date. 'Metadata last deposited' and 'Last indexed by Crossref' are the ones to use for a workflow that watches for new records, since a work can be published long before its metadata arrives. One of: `published` (Published (whichever date came first)), `issued`, `published-online` (Published online), `published-print` (Published in print), `posted` (Posted (preprints)), `accepted`, `approved`, `awarded` (Awarded (grants)), `created` (First registered with Crossref), `deposited` (Metadata last deposited), and 4 more. Default: `published`.
- From date (`from_date`, date): Keep only records on or after this date.
- Until date (`until_date`, date): Keep only records on or before this date.
- ISBN (`isbn`, text): Keep only works published in the book with this ISBN.
- Author ORCID iD (`orcid`, text): Keep only works with this ORCID iD among the authors (the reliable way to follow one researcher, since names repeat). An orcid.org link works here too.
- Publisher (Crossref member ID) (`member_id`, text): Keep only works registered by this Crossref member. Find the ID with 'Search publishers'.
- DOI prefix (`prefix`, text): Keep only works whose DOI starts with this prefix. A whole DOI works here too; only the prefix is used.
- Funder ID (`funder_id`, text): Keep only works crediting this funder. Find the ID with 'Search funders'; the funder's full DOI works here too.
- Grant award number (`award_number`, text): Keep only works crediting this grant number. Pair it with a funder ID: award numbers are only unique within a funder.
- Preserved in archive (`archive`, text): Keep only works the publisher has deposited into this digital-preservation archive. One of: `ADS` (ADS (Astrophysics Data System)), `BL` (British Library), `Cariniana Network`, `CINES`, `CLOCKSS`, `DWT` (Deutsche Nationalbibliothek (DWT)), `HathiTrust`, `Internet Archive`, `KB` (Koninklijke Bibliotheek), `LOC` (Library of Congress), and 7 more.
- Other Crossref filters (`extra_filters`, text): Any of Crossref's remaining filters, written as name:value and separated by commas: the escape hatch for the ones without a field above (license.url, relation.type, update-type, container-title, clinical-trial-number, gte-award-amount and so on). Filter names are checked before the request is sent, so a typo is reported here. Full list: https://www.crossref.org/documentation/retrieve-metadata/rest-api/rest-api-filters/
- Fields to return (`select_fields`, list): Return only these fields from each record instead of the whole thing. A full Crossref record includes the entire reference list and can run to hundreds of kilobytes, so narrowing this makes a large search far faster and the result far easier to read. Leave it empty for everything. One or more of: `DOI`, `ISBN` (ISBNs), `ISSN` (ISSNs), `URL` (DOI link), `abstract`, `accepted` (Accepted date), `alternative-id` (Publisher's own IDs), `approved` (Approved date), `archive` (Preservation archives), `article-number` (Article number), and 49 more.
- Sort by (`sort`, text): How to order the results. Defaults to relevance when you searched for something, and to no particular order when you only filtered. One of: `relevance` (Relevance to the search terms), `score` (Search score), `published` (Publication date), `published-print` (Print publication date), `published-online` (Online publication date), `issued` (Issued date), `created` (Date first registered with Crossref), `deposited` (Date metadata was last deposited), `indexed` (Date last indexed by Crossref), `updated` (Date the record was last updated), `is-referenced-by-count` (Number of times cited), `references-count` (Number of references).
- Sort direction (`order`, text): Which end of the sort to start from. Defaults to highest or newest. One of: `desc` (Highest or newest first), `asc` (Lowest or oldest first). Default: `desc`.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.
- Random sample size (`sample`, number): Return this many records picked at random from everything that matches, up to 100. Useful for spot-checking a large set. It replaces normal paging, so it cannot be combined with 'Number of results', 'Skip this many' or 'Cursor'. From 1 to 100.
- Count results by (`facets`, list): Also return counts of the matching works broken down by these fields: how many by publisher, by type, by year. Pair it with 0 results to get the counts on their own. One or more of: `affiliation` (Author affiliation), `archive` (Preservation archive), `assertion` (Publisher assertion), `assertion-group` (Publisher assertion group), `category-name` (Subject category), `container-title` (Journal or book title), `funder-doi` (Funder DOI), `funder-name` (Funder name), `issn`, `journal-issue` (Journal issue), and 11 more.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "DOI": "10.1038/nature12373",
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "URL": "http://dx.doi.org/10.1038/nature12373",
      "author": [
        {
          "family": "Kucsko",
          "given": "G.",
          "sequence": "first"
        },
        {
          "family": "Maurer",
          "given": "P. C.",
          "sequence": "additional"
        }
      ],
      "container-title": [
        "Nature"
      ],
      "created": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ],
        "date-time": "2013-07-31T17:03:41Z",
        "timestamp": 1375290221000
      },
      "is-referenced-by-count": 1807,
      "issue": "7460",
      "issued": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "language": "en",
      "license": [
        {
          "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
          "content-version": "tdm"
        }
      ],
      "link": [
        {
          "URL": "http://www.nature.com/articles/nature12373.pdf",
          "content-type": "application/pdf",
          "intended-application": "text-mining"
        }
      ],
      "member": "297",
      "page": "54-58",
      "prefix": "10.1038",
      "published": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "publisher": "Springer Science and Business Media LLC",
      "references-count": 30,
      "score": 24.5,
      "short-container-title": [
        "Nature"
      ],
      "subject": [
        "Multidisciplinary"
      ],
      "title": [
        "Nanometre-scale thermometry in a living cell"
      ],
      "type": "journal-article",
      "volume": "500"
    }
  ],
  "total_results": 4128
}
```

### List a publisher's works

List everything one publisher has registered, with the same search, filter and sort options as the main search. Filter on the deposited date to see what a publisher has added lately, or on a work type to see only its books or only its preprints.

**Inputs**

- Publisher (Crossref member ID) (`member_id`, text, required): The publisher's Crossref member ID. Find one with 'Search publishers'.
- Search terms (`query`, text): Words to look for anywhere in the record: title, authors, journal, abstract and the rest. Leave it empty to list everything the filters below match.
- Bibliographic reference (`query_bibliographic`, text): A whole citation, pasted in as one string: title, authors, journal, volume and year together. This is the field to use when you are trying to find the DOI for a reference you already have.
- Title contains (`query_title`, text): Words that must appear in the work's title.
- Author (`query_author`, text): An author's name. Names are not unique in Crossref, so pair this with an ORCID iD or a journal when you need one specific researcher.
- Journal or book title (`query_container_title`, text): The name of the journal, book or proceedings the work appeared in. Use the ISSN filter instead when you know it (it is exact, and this is a text match).
- Search another field (`search_field`, text): Search one specific field instead of the whole record. Pick the field here and put the words in 'Terms for that field' below. The four fields above are the common ones and already have boxes of their own. One of: `affiliation` (Author affiliation), `author` (Author name), `bibliographic` (Bibliographic reference (title, authors, journal, year…)), `chair` (Chair name), `container-title` (Journal or book title), `contributor` (Any contributor's name), `degree` (Degree (for dissertations)), `description`, `editor` (Editor name), `event-acronym` (Conference acronym), and 11 more.
- Terms for that field (`search_field_terms`, text): What to look for in the field chosen above. Only used when a field is chosen.
- Work types (`types`, list): Keep only these kinds of work: journal articles, book chapters, preprints ('posted content'), datasets, dissertations and the rest. Choosing several keeps works of any of them. The list comes from Crossref, so it is always current.
- Record must have (`must_have`, list): Keep only records that carry all of these. Crossref metadata is deposited by publishers and is uneven, so this is how you get, say, only works that came with an abstract and a licence. One or more of: `has-abstract` (An abstract), `has-affiliation` (Author affiliations), `has-affiliation-ror-id` (A ROR ID on an affiliation), `has-alias` (An alias DOI), `has-archive` (A digital-preservation archive), `has-assertion` (A publisher assertion), `has-authenticated-orcid` (An author ORCID iD the author signed in to confirm), `has-award` (A grant award), `has-clinical-trial-number` (A clinical trial number), `has-content-domain` (A content domain (where the full text may be shown)), and 14 more.
- Date to filter on (`date_field`, text): Which date the window below applies to. Defaults to the publication date. 'Metadata last deposited' and 'Last indexed by Crossref' are the ones to use for a workflow that watches for new records, since a work can be published long before its metadata arrives. One of: `published` (Published (whichever date came first)), `issued`, `published-online` (Published online), `published-print` (Published in print), `posted` (Posted (preprints)), `accepted`, `approved`, `awarded` (Awarded (grants)), `created` (First registered with Crossref), `deposited` (Metadata last deposited), and 4 more. Default: `published`.
- From date (`from_date`, date): Keep only records on or after this date.
- Until date (`until_date`, date): Keep only records on or before this date.
- ISSN (`issn`, text): Keep only works published in the journal with this ISSN. The hyphen is optional.
- ISBN (`isbn`, text): Keep only works published in the book with this ISBN.
- Author ORCID iD (`orcid`, text): Keep only works with this ORCID iD among the authors (the reliable way to follow one researcher, since names repeat). An orcid.org link works here too.
- DOI prefix (`prefix`, text): Keep only works whose DOI starts with this prefix. A whole DOI works here too; only the prefix is used.
- Funder ID (`funder_id`, text): Keep only works crediting this funder. Find the ID with 'Search funders'; the funder's full DOI works here too.
- Grant award number (`award_number`, text): Keep only works crediting this grant number. Pair it with a funder ID: award numbers are only unique within a funder.
- Preserved in archive (`archive`, text): Keep only works the publisher has deposited into this digital-preservation archive. One of: `ADS` (ADS (Astrophysics Data System)), `BL` (British Library), `Cariniana Network`, `CINES`, `CLOCKSS`, `DWT` (Deutsche Nationalbibliothek (DWT)), `HathiTrust`, `Internet Archive`, `KB` (Koninklijke Bibliotheek), `LOC` (Library of Congress), and 7 more.
- Other Crossref filters (`extra_filters`, text): Any of Crossref's remaining filters, written as name:value and separated by commas: the escape hatch for the ones without a field above (license.url, relation.type, update-type, container-title, clinical-trial-number, gte-award-amount and so on). Filter names are checked before the request is sent, so a typo is reported here. Full list: https://www.crossref.org/documentation/retrieve-metadata/rest-api/rest-api-filters/
- Fields to return (`select_fields`, list): Return only these fields from each record instead of the whole thing. A full Crossref record includes the entire reference list and can run to hundreds of kilobytes, so narrowing this makes a large search far faster and the result far easier to read. Leave it empty for everything. One or more of: `DOI`, `ISBN` (ISBNs), `ISSN` (ISSNs), `URL` (DOI link), `abstract`, `accepted` (Accepted date), `alternative-id` (Publisher's own IDs), `approved` (Approved date), `archive` (Preservation archives), `article-number` (Article number), and 49 more.
- Sort by (`sort`, text): How to order the results. Defaults to relevance when you searched for something, and to no particular order when you only filtered. One of: `relevance` (Relevance to the search terms), `score` (Search score), `published` (Publication date), `published-print` (Print publication date), `published-online` (Online publication date), `issued` (Issued date), `created` (Date first registered with Crossref), `deposited` (Date metadata was last deposited), `indexed` (Date last indexed by Crossref), `updated` (Date the record was last updated), `is-referenced-by-count` (Number of times cited), `references-count` (Number of references).
- Sort direction (`order`, text): Which end of the sort to start from. Defaults to highest or newest. One of: `desc` (Highest or newest first), `asc` (Lowest or oldest first). Default: `desc`.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.
- Random sample size (`sample`, number): Return this many records picked at random from everything that matches, up to 100. Useful for spot-checking a large set. It replaces normal paging, so it cannot be combined with 'Number of results', 'Skip this many' or 'Cursor'. From 1 to 100.
- Count results by (`facets`, list): Also return counts of the matching works broken down by these fields: how many by publisher, by type, by year. Pair it with 0 results to get the counts on their own. One or more of: `affiliation` (Author affiliation), `archive` (Preservation archive), `assertion` (Publisher assertion), `assertion-group` (Publisher assertion group), `category-name` (Subject category), `container-title` (Journal or book title), `funder-doi` (Funder DOI), `funder-name` (Funder name), `issn`, `journal-issue` (Journal issue), and 11 more.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "DOI": "10.1038/nature12373",
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "URL": "http://dx.doi.org/10.1038/nature12373",
      "author": [
        {
          "family": "Kucsko",
          "given": "G.",
          "sequence": "first"
        },
        {
          "family": "Maurer",
          "given": "P. C.",
          "sequence": "additional"
        }
      ],
      "container-title": [
        "Nature"
      ],
      "created": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ],
        "date-time": "2013-07-31T17:03:41Z",
        "timestamp": 1375290221000
      },
      "is-referenced-by-count": 1807,
      "issue": "7460",
      "issued": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "language": "en",
      "license": [
        {
          "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
          "content-version": "tdm"
        }
      ],
      "link": [
        {
          "URL": "http://www.nature.com/articles/nature12373.pdf",
          "content-type": "application/pdf",
          "intended-application": "text-mining"
        }
      ],
      "member": "297",
      "page": "54-58",
      "prefix": "10.1038",
      "published": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "publisher": "Springer Science and Business Media LLC",
      "references-count": 30,
      "score": 24.5,
      "short-container-title": [
        "Nature"
      ],
      "subject": [
        "Multidisciplinary"
      ],
      "title": [
        "Nanometre-scale thermometry in a living cell"
      ],
      "type": "journal-article",
      "volume": "500"
    }
  ],
  "total_results": 4128
}
```

### List licences

List every licence URL publishers have attached to their work, with the number of works using each one. Use it to find the exact licence URL to filter a search on: publishers spell the same Creative Commons licence several different ways, and a filter has to match exactly.

**Inputs**

- Search terms (`query`, text): Words to match against the licence URLs. Leave it empty to list the most used licences first.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "URL": "http://creativecommons.org/licenses/by/4.0/",
      "work-count": 6421553
    }
  ],
  "total_results": 4128
}
```

### List work types

List every kind of work Crossref registers: journal article, book chapter, posted content (preprints), dataset, dissertation, peer review, standard, grant and the rest, with the ID each one is filtered by.

**Inputs**: None.

**Outputs**

- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "result_count": 1,
  "results": [
    {
      "id": "journal-article",
      "label": "Journal Article"
    }
  ],
  "total_results": 30
}
```

### List works of one type

List every work of one type, with the same search, filter and sort options as the main search. Point it at posted content for preprints, at dataset for research data, or at peer-review for published review reports.

**Inputs**

- Work type (`type_id`, text, required): Which kind of work. The list comes from Crossref's own /types endpoint, so it is always current.
- Search terms (`query`, text): Words to look for anywhere in the record: title, authors, journal, abstract and the rest. Leave it empty to list everything the filters below match.
- Bibliographic reference (`query_bibliographic`, text): A whole citation, pasted in as one string: title, authors, journal, volume and year together. This is the field to use when you are trying to find the DOI for a reference you already have.
- Title contains (`query_title`, text): Words that must appear in the work's title.
- Author (`query_author`, text): An author's name. Names are not unique in Crossref, so pair this with an ORCID iD or a journal when you need one specific researcher.
- Journal or book title (`query_container_title`, text): The name of the journal, book or proceedings the work appeared in. Use the ISSN filter instead when you know it (it is exact, and this is a text match).
- Search another field (`search_field`, text): Search one specific field instead of the whole record. Pick the field here and put the words in 'Terms for that field' below. The four fields above are the common ones and already have boxes of their own. One of: `affiliation` (Author affiliation), `author` (Author name), `bibliographic` (Bibliographic reference (title, authors, journal, year…)), `chair` (Chair name), `container-title` (Journal or book title), `contributor` (Any contributor's name), `degree` (Degree (for dissertations)), `description`, `editor` (Editor name), `event-acronym` (Conference acronym), and 11 more.
- Terms for that field (`search_field_terms`, text): What to look for in the field chosen above. Only used when a field is chosen.
- Record must have (`must_have`, list): Keep only records that carry all of these. Crossref metadata is deposited by publishers and is uneven, so this is how you get, say, only works that came with an abstract and a licence. One or more of: `has-abstract` (An abstract), `has-affiliation` (Author affiliations), `has-affiliation-ror-id` (A ROR ID on an affiliation), `has-alias` (An alias DOI), `has-archive` (A digital-preservation archive), `has-assertion` (A publisher assertion), `has-authenticated-orcid` (An author ORCID iD the author signed in to confirm), `has-award` (A grant award), `has-clinical-trial-number` (A clinical trial number), `has-content-domain` (A content domain (where the full text may be shown)), and 14 more.
- Date to filter on (`date_field`, text): Which date the window below applies to. Defaults to the publication date. 'Metadata last deposited' and 'Last indexed by Crossref' are the ones to use for a workflow that watches for new records, since a work can be published long before its metadata arrives. One of: `published` (Published (whichever date came first)), `issued`, `published-online` (Published online), `published-print` (Published in print), `posted` (Posted (preprints)), `accepted`, `approved`, `awarded` (Awarded (grants)), `created` (First registered with Crossref), `deposited` (Metadata last deposited), and 4 more. Default: `published`.
- From date (`from_date`, date): Keep only records on or after this date.
- Until date (`until_date`, date): Keep only records on or before this date.
- ISSN (`issn`, text): Keep only works published in the journal with this ISSN. The hyphen is optional.
- ISBN (`isbn`, text): Keep only works published in the book with this ISBN.
- Author ORCID iD (`orcid`, text): Keep only works with this ORCID iD among the authors (the reliable way to follow one researcher, since names repeat). An orcid.org link works here too.
- Publisher (Crossref member ID) (`member_id`, text): Keep only works registered by this Crossref member. Find the ID with 'Search publishers'.
- DOI prefix (`prefix`, text): Keep only works whose DOI starts with this prefix. A whole DOI works here too; only the prefix is used.
- Funder ID (`funder_id`, text): Keep only works crediting this funder. Find the ID with 'Search funders'; the funder's full DOI works here too.
- Grant award number (`award_number`, text): Keep only works crediting this grant number. Pair it with a funder ID: award numbers are only unique within a funder.
- Preserved in archive (`archive`, text): Keep only works the publisher has deposited into this digital-preservation archive. One of: `ADS` (ADS (Astrophysics Data System)), `BL` (British Library), `Cariniana Network`, `CINES`, `CLOCKSS`, `DWT` (Deutsche Nationalbibliothek (DWT)), `HathiTrust`, `Internet Archive`, `KB` (Koninklijke Bibliotheek), `LOC` (Library of Congress), and 7 more.
- Other Crossref filters (`extra_filters`, text): Any of Crossref's remaining filters, written as name:value and separated by commas: the escape hatch for the ones without a field above (license.url, relation.type, update-type, container-title, clinical-trial-number, gte-award-amount and so on). Filter names are checked before the request is sent, so a typo is reported here. Full list: https://www.crossref.org/documentation/retrieve-metadata/rest-api/rest-api-filters/
- Fields to return (`select_fields`, list): Return only these fields from each record instead of the whole thing. A full Crossref record includes the entire reference list and can run to hundreds of kilobytes, so narrowing this makes a large search far faster and the result far easier to read. Leave it empty for everything. One or more of: `DOI`, `ISBN` (ISBNs), `ISSN` (ISSNs), `URL` (DOI link), `abstract`, `accepted` (Accepted date), `alternative-id` (Publisher's own IDs), `approved` (Approved date), `archive` (Preservation archives), `article-number` (Article number), and 49 more.
- Sort by (`sort`, text): How to order the results. Defaults to relevance when you searched for something, and to no particular order when you only filtered. One of: `relevance` (Relevance to the search terms), `score` (Search score), `published` (Publication date), `published-print` (Print publication date), `published-online` (Online publication date), `issued` (Issued date), `created` (Date first registered with Crossref), `deposited` (Date metadata was last deposited), `indexed` (Date last indexed by Crossref), `updated` (Date the record was last updated), `is-referenced-by-count` (Number of times cited), `references-count` (Number of references).
- Sort direction (`order`, text): Which end of the sort to start from. Defaults to highest or newest. One of: `desc` (Highest or newest first), `asc` (Lowest or oldest first). Default: `desc`.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.
- Random sample size (`sample`, number): Return this many records picked at random from everything that matches, up to 100. Useful for spot-checking a large set. It replaces normal paging, so it cannot be combined with 'Number of results', 'Skip this many' or 'Cursor'. From 1 to 100.
- Count results by (`facets`, list): Also return counts of the matching works broken down by these fields: how many by publisher, by type, by year. Pair it with 0 results to get the counts on their own. One or more of: `affiliation` (Author affiliation), `archive` (Preservation archive), `assertion` (Publisher assertion), `assertion-group` (Publisher assertion group), `category-name` (Subject category), `container-title` (Journal or book title), `funder-doi` (Funder DOI), `funder-name` (Funder name), `issn`, `journal-issue` (Journal issue), and 11 more.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "DOI": "10.1038/nature12373",
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "URL": "http://dx.doi.org/10.1038/nature12373",
      "author": [
        {
          "family": "Kucsko",
          "given": "G.",
          "sequence": "first"
        },
        {
          "family": "Maurer",
          "given": "P. C.",
          "sequence": "additional"
        }
      ],
      "container-title": [
        "Nature"
      ],
      "created": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ],
        "date-time": "2013-07-31T17:03:41Z",
        "timestamp": 1375290221000
      },
      "is-referenced-by-count": 1807,
      "issue": "7460",
      "issued": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "language": "en",
      "license": [
        {
          "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
          "content-version": "tdm"
        }
      ],
      "link": [
        {
          "URL": "http://www.nature.com/articles/nature12373.pdf",
          "content-type": "application/pdf",
          "intended-application": "text-mining"
        }
      ],
      "member": "297",
      "page": "54-58",
      "prefix": "10.1038",
      "published": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "publisher": "Springer Science and Business Media LLC",
      "references-count": 30,
      "score": 24.5,
      "short-container-title": [
        "Nature"
      ],
      "subject": [
        "Multidisciplinary"
      ],
      "title": [
        "Nanometre-scale thermometry in a living cell"
      ],
      "type": "journal-article",
      "volume": "500"
    }
  ],
  "total_results": 4128
}
```

### Search funders

Search the Funder Registry (the standard list of research funding bodies worldwide, with their alternative names and the sub-organisations beneath them). Use it to turn a funder's name into the ID the works actions filter on.

**Inputs**

- Search terms (`query`, text): Words from the funder's name. Alternative names and acronyms are matched too.
- Country (`location`, text): Keep only funders based in this country, spelled as the Funder Registry spells it.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "alt-names": [
        "EC",
        "European Union"
      ],
      "descendant-work-count": 1044123,
      "id": "501100000780",
      "location": "European Union",
      "name": "European Commission",
      "uri": "http://dx.doi.org/10.13039/501100000780",
      "work-count": 138992
    }
  ],
  "total_results": 4128
}
```

### Search journals

Find journals by title or publisher, and get each one's ISSNs, how many DOIs it has registered, and how complete its metadata is: whether it deposits abstracts, ORCID iDs, licences, funding and reference lists. Use it to turn a journal name into the ISSN the other actions take.

**Inputs**

- Search terms (`query`, text): Words from the journal's title or its publisher's name. Leave it empty to list every journal.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "counts": {
        "backfile-dois": 405916,
        "current-dois": 12704,
        "total-dois": 418620
      },
      "flags": {
        "deposits-abstracts-current": false,
        "deposits-orcids-current": true
      },
      "publisher": "Springer Science and Business Media LLC",
      "title": "Nature"
    }
  ],
  "total_results": 4128
}
```

### Search publishers

Search Crossref's member publishers. Each record carries the DOI prefixes the publisher owns, how many DOIs it has registered, and how much of its metadata includes abstracts, ORCID iDs, licences, funding and references. Search by name, or give a DOI prefix to find out who owns it.

**Inputs**

- Search terms (`query`, text): Words from the publisher's name. Former names are matched too.
- DOI prefix (`prefix`, text): Keep only the publisher that owns this DOI prefix. A whole DOI works here too; only the prefix is used.
- Other Crossref filters (`extra_filters`, text): The two remaining filters this route accepts, written as name:value and separated by commas: current-doi-count and backfile-doi-count, each matching a publisher's DOI total exactly. Filter names are checked before the request is sent.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "counts": {
        "backfile-dois": 11034335,
        "current-dois": 1109031,
        "total-dois": 12143366
      },
      "id": 311,
      "location": "111 River Street, Hoboken, NJ 07030, United States",
      "names": [
        "Wiley",
        "John Wiley & Sons, Inc."
      ],
      "prefixes": [
        "10.1002",
        "10.1111"
      ],
      "primary-name": "Wiley"
    }
  ],
  "total_results": 4128
}
```

### Search works

Search everything registered with Crossref (around 170 million journal articles, book chapters, preprints, conference papers, datasets, dissertations and standards) and narrow it by type, date, journal, publisher, funder, grant, author ORCID iD, or what the record contains. This is the everyday search, and the one to reach for to find a DOI from a citation, to build a reading list on a topic, or to watch for newly deposited work in a field.

**Inputs**

- Search terms (`query`, text): Words to look for anywhere in the record: title, authors, journal, abstract and the rest. Leave it empty to list everything the filters below match.
- Bibliographic reference (`query_bibliographic`, text): A whole citation, pasted in as one string: title, authors, journal, volume and year together. This is the field to use when you are trying to find the DOI for a reference you already have.
- Title contains (`query_title`, text): Words that must appear in the work's title.
- Author (`query_author`, text): An author's name. Names are not unique in Crossref, so pair this with an ORCID iD or a journal when you need one specific researcher.
- Journal or book title (`query_container_title`, text): The name of the journal, book or proceedings the work appeared in. Use the ISSN filter instead when you know it (it is exact, and this is a text match).
- Search another field (`search_field`, text): Search one specific field instead of the whole record. Pick the field here and put the words in 'Terms for that field' below. The four fields above are the common ones and already have boxes of their own. One of: `affiliation` (Author affiliation), `author` (Author name), `bibliographic` (Bibliographic reference (title, authors, journal, year…)), `chair` (Chair name), `container-title` (Journal or book title), `contributor` (Any contributor's name), `degree` (Degree (for dissertations)), `description`, `editor` (Editor name), `event-acronym` (Conference acronym), and 11 more.
- Terms for that field (`search_field_terms`, text): What to look for in the field chosen above. Only used when a field is chosen.
- Work types (`types`, list): Keep only these kinds of work: journal articles, book chapters, preprints ('posted content'), datasets, dissertations and the rest. Choosing several keeps works of any of them. The list comes from Crossref, so it is always current.
- Record must have (`must_have`, list): Keep only records that carry all of these. Crossref metadata is deposited by publishers and is uneven, so this is how you get, say, only works that came with an abstract and a licence. One or more of: `has-abstract` (An abstract), `has-affiliation` (Author affiliations), `has-affiliation-ror-id` (A ROR ID on an affiliation), `has-alias` (An alias DOI), `has-archive` (A digital-preservation archive), `has-assertion` (A publisher assertion), `has-authenticated-orcid` (An author ORCID iD the author signed in to confirm), `has-award` (A grant award), `has-clinical-trial-number` (A clinical trial number), `has-content-domain` (A content domain (where the full text may be shown)), and 14 more.
- Date to filter on (`date_field`, text): Which date the window below applies to. Defaults to the publication date. 'Metadata last deposited' and 'Last indexed by Crossref' are the ones to use for a workflow that watches for new records, since a work can be published long before its metadata arrives. One of: `published` (Published (whichever date came first)), `issued`, `published-online` (Published online), `published-print` (Published in print), `posted` (Posted (preprints)), `accepted`, `approved`, `awarded` (Awarded (grants)), `created` (First registered with Crossref), `deposited` (Metadata last deposited), and 4 more. Default: `published`.
- From date (`from_date`, date): Keep only records on or after this date.
- Until date (`until_date`, date): Keep only records on or before this date.
- ISSN (`issn`, text): Keep only works published in the journal with this ISSN. The hyphen is optional.
- ISBN (`isbn`, text): Keep only works published in the book with this ISBN.
- Author ORCID iD (`orcid`, text): Keep only works with this ORCID iD among the authors (the reliable way to follow one researcher, since names repeat). An orcid.org link works here too.
- Publisher (Crossref member ID) (`member_id`, text): Keep only works registered by this Crossref member. Find the ID with 'Search publishers'.
- DOI prefix (`prefix`, text): Keep only works whose DOI starts with this prefix. A whole DOI works here too; only the prefix is used.
- Funder ID (`funder_id`, text): Keep only works crediting this funder. Find the ID with 'Search funders'; the funder's full DOI works here too.
- Grant award number (`award_number`, text): Keep only works crediting this grant number. Pair it with a funder ID: award numbers are only unique within a funder.
- Preserved in archive (`archive`, text): Keep only works the publisher has deposited into this digital-preservation archive. One of: `ADS` (ADS (Astrophysics Data System)), `BL` (British Library), `Cariniana Network`, `CINES`, `CLOCKSS`, `DWT` (Deutsche Nationalbibliothek (DWT)), `HathiTrust`, `Internet Archive`, `KB` (Koninklijke Bibliotheek), `LOC` (Library of Congress), and 7 more.
- Other Crossref filters (`extra_filters`, text): Any of Crossref's remaining filters, written as name:value and separated by commas: the escape hatch for the ones without a field above (license.url, relation.type, update-type, container-title, clinical-trial-number, gte-award-amount and so on). Filter names are checked before the request is sent, so a typo is reported here. Full list: https://www.crossref.org/documentation/retrieve-metadata/rest-api/rest-api-filters/
- Fields to return (`select_fields`, list): Return only these fields from each record instead of the whole thing. A full Crossref record includes the entire reference list and can run to hundreds of kilobytes, so narrowing this makes a large search far faster and the result far easier to read. Leave it empty for everything. One or more of: `DOI`, `ISBN` (ISBNs), `ISSN` (ISSNs), `URL` (DOI link), `abstract`, `accepted` (Accepted date), `alternative-id` (Publisher's own IDs), `approved` (Approved date), `archive` (Preservation archives), `article-number` (Article number), and 49 more.
- Sort by (`sort`, text): How to order the results. Defaults to relevance when you searched for something, and to no particular order when you only filtered. One of: `relevance` (Relevance to the search terms), `score` (Search score), `published` (Publication date), `published-print` (Print publication date), `published-online` (Online publication date), `issued` (Issued date), `created` (Date first registered with Crossref), `deposited` (Date metadata was last deposited), `indexed` (Date last indexed by Crossref), `updated` (Date the record was last updated), `is-referenced-by-count` (Number of times cited), `references-count` (Number of references).
- Sort direction (`order`, text): Which end of the sort to start from. Defaults to highest or newest. One of: `desc` (Highest or newest first), `asc` (Lowest or oldest first). Default: `desc`.
- Number of results (`rows`, number): How many records to return, up to 1000. Set it to 0 to get only the total count and any facet counts. From 0 to 1000. Default: `20`.
- Skip this many (`offset`, number): Skip this many records before returning any: page two of 20 results is an offset of 20. Offset paging stops at 10,000 records; use the cursor below to walk a larger set. From 0 to 10000.
- Cursor (`cursor`, text): Walks a whole result set of any size, a page at a time. Send * to start, then feed each result's 'next_cursor' back in here for the next page, and stop when 'has_more' is false. Cannot be combined with 'Skip this many'. A cursor expires after five minutes unused.
- Random sample size (`sample`, number): Return this many records picked at random from everything that matches, up to 100. Useful for spot-checking a large set. It replaces normal paging, so it cannot be combined with 'Number of results', 'Skip this many' or 'Cursor'. From 1 to 100.
- Count results by (`facets`, list): Also return counts of the matching works broken down by these fields: how many by publisher, by type, by year. Pair it with 0 results to get the counts on their own. One or more of: `affiliation` (Author affiliation), `archive` (Preservation archive), `assertion` (Publisher assertion), `assertion-group` (Publisher assertion group), `category-name` (Subject category), `container-title` (Journal or book title), `funder-doi` (Funder DOI), `funder-name` (Funder name), `issn`, `journal-issue` (Journal issue), and 11 more.

**Outputs**

- `facets` (object)
- `has_more` (true/false)
- `next_cursor` (text)
- `result_count` (number)
- `results` (list)
- `total_results` (number)

**Example output**

```json
{
  "facets": {},
  "has_more": true,
  "next_cursor": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAA",
  "result_count": 1,
  "results": [
    {
      "DOI": "10.1038/nature12373",
      "ISSN": [
        "0028-0836",
        "1476-4687"
      ],
      "URL": "http://dx.doi.org/10.1038/nature12373",
      "author": [
        {
          "family": "Kucsko",
          "given": "G.",
          "sequence": "first"
        },
        {
          "family": "Maurer",
          "given": "P. C.",
          "sequence": "additional"
        }
      ],
      "container-title": [
        "Nature"
      ],
      "created": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ],
        "date-time": "2013-07-31T17:03:41Z",
        "timestamp": 1375290221000
      },
      "is-referenced-by-count": 1807,
      "issue": "7460",
      "issued": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "language": "en",
      "license": [
        {
          "URL": "https://www.springernature.com/gp/researchers/text-and-data-mining",
          "content-version": "tdm"
        }
      ],
      "link": [
        {
          "URL": "http://www.nature.com/articles/nature12373.pdf",
          "content-type": "application/pdf",
          "intended-application": "text-mining"
        }
      ],
      "member": "297",
      "page": "54-58",
      "prefix": "10.1038",
      "published": {
        "date-parts": [
          [
            2013,
            7,
            31
          ]
        ]
      },
      "publisher": "Springer Science and Business Media LLC",
      "references-count": 30,
      "score": 24.5,
      "short-container-title": [
        "Nature"
      ],
      "subject": [
        "Multidisciplinary"
      ],
      "title": [
        "Nanometre-scale thermometry in a living cell"
      ],
      "type": "journal-article",
      "volume": "500"
    }
  ],
  "total_results": 4128
}
```
