Search Works
crossref_search_worksSearches the Crossref works index (~155M records) by free text and/or structured filters. The generic query matches loosely across all fields; scope precisely with the field-specific parameters queryTitle, queryAuthor, and queryContainerTitle, or resolve a known citation to its DOI with queryBibliographic — all combine with each other and with query. Use the filter parameter for structured filtering (object with hyphen-separated Crossref keys). Sort options: relevance, score, is-referenced-by-count, published, deposited, indexed. Each work returns at most authorLimit authors (25 by default) with authorCount reporting the full deposited total, since a single page of large-collaboration papers can carry tens of thousands of author entries; crossref_get_work pages the whole author list for any DOI whose list was cut. Offset-based paging is capped at ~10K results; use cursor="*" to start cursor-based deep paging, then pass the nextCursor value from each response to continue. The walk ends on the page where nextCursor is absent — that page also carries a notice saying the list is exhausted. Cursor and offset cannot be combined.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | Number of results to return per page (1–100, default 20) | |
| sort | No | Sort field | |
| order | No | Sort direction (asc or desc) | |
| query | No | Free-text search query, e.g. "CRISPR gene editing" or "climate change adaptation" | |
| cursor | No | Cursor token for deep paging. Pass "*" to start cursor-based paging (required past ~10K results), then pass the nextCursor value from each response until a response omits it, which means the list is exhausted. Cannot be combined with offset. | |
| fields | No | Fields to return (reduces payload). Names are case-sensitive. Useful set: DOI, title, author, published, type, is-referenced-by-count, abstract, container-title, publisher, score. DOI is always returned whether or not it is listed here, so every result stays resolvable by crossref_get_work. | |
| filter | No | Structured filter object using Crossref hyphen-separated keys. All values must be strings. Boolean flag keys (has-abstract, has-references, has-full-text) require string values "true" or "false". Example: {"type":"journal-article","has-abstract":"true","from-pub-date":"2023-01-01","directory":"DOAJ"} | |
| offset | No | Zero-based result offset for offset-based paging. Cannot be used with cursor. Capped at ~10K; use cursor for deeper paging. | |
| queryTitle | No | Match against work titles only, e.g. "Array programming with NumPy". | |
| authorLimit | No | Maximum number of authors to return per work (1–500, default 25). Ordinary records fit under the default; large-collaboration papers deposit thousands, and a page of them is large enough to exhaust a client context. Each work reports its full deposited total as authorCount — call crossref_get_work with that work doi to page the authors this cap left out. | |
| queryAuthor | No | Match against author names only, e.g. "Charles R. Harris". | |
| queryBibliographic | No | Whole-citation match to resolve a known reference to its DOI. Combine title, author, year, and container into one string, e.g. "Watson Crick molecular structure of nucleic acids Nature 1953". | |
| queryContainerTitle | No | Match against the container title (journal or book name) only, e.g. "Nature". |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | The per-work author cap applied to this page. Absent when no list was cut. | |
| error | No | Present when the call failed. Absent on success. | |
| works | No | Matching works. Empty when nothing matched the query, when an offset runs past the end of the results, or on the page that ends a cursor walk — the notice enrichment says which. | |
| notice | No | Guidance on an empty page, naming which of its three causes applies: a query nothing matched, an offset past the end of a list that did match, or a cursor walk that has reached the end of the list. On a page carrying records, present only when authorLimit cut at least one work list, naming how many and the route to the rest. | |
| returned | No | Number of records returned in this response | |
| truncated | No | True when at least one work on this page had its author list cut by authorLimit. Absent when every work on the page carries its full deposited author list. | |
| nextCursor | No | Cursor token to pass as cursor on the next call to continue a cursor walk. Present only on a page requested with cursor, and absent once the walk reaches the end of the list. | |
| totalResults | No | Total matching records in Crossref |