Resolve DOIs, search ~188M scholarly works, and fetch references via the Crossref REST API.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Resolves a Crossref member ID to its publisher/organization record: primary name, alternate imprint names, owned DOI prefixes, registered DOI counts, a per-work-type breakdown, and per-category metadata deposit coverage. Members are the organizations that register DOIs with Crossref, so this answers "what does this publisher publish, and how completely do they deposit metadata?" Resolve a DOI prefix (e.g. "10.1038") to its member ID with crossref_get_prefix, then pass that ID here.
Crossref member ID — a positive integer, e.g. 297 (Springer) or 340 (PLOS). Resolve a DOI prefix to a member ID first with crossref_get_prefix.
Resolves a Crossref member ID to its publisher/organization record: primary name, alternate imprint names, owned DOI prefixes, registered DOI counts, a per-work-type breakdown, and per-category metadata deposit coverage. Members are the organizations that register DOIs with Crossref, so this answers "what does this publisher publish, and how completely do they deposit metadata?" Resolve a DOI prefix (e.g. "10.1038") to its member ID with crossref_get_prefix, then pass that ID here.
| Argument | Type | Description |
|---|---|---|
| member_id* | integer | Crossref member ID — a positive integer, e.g. 297 (Springer) or 340 (PLOS). Resolve a DOI prefix to a member ID first with crossref_get_prefix. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"member_id"
],
"properties": {
"member_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Crossref member ID — a positive integer, e.g. 297 (Springer) or 340 (PLOS). Resolve a DOI prefix to a member ID first with crossref_get_prefix.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Resolves a DOI prefix — the registrant portion of a DOI, e.g. "10.1038" — to its owning Crossref member: the publisher name and numeric member ID. Answers "who publishes DOIs starting with 10.1038?" The Crossref prefix record carries only these three facts (no counts, coverage, or flags); the returned memberId chains directly into crossref_get_member for the full publisher record.
| Argument | Type | Description |
|---|---|---|
| prefix* | string | DOI prefix in the format "10.NNNN" — the registrant portion of a DOI with no "/suffix", e.g. "10.1038" or "10.1371". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"prefix"
],
"properties": {
"prefix": {
"type": "string",
"pattern": "^10\\.\\d+$",
"description": "DOI prefix in the format \"10.NNNN\" — the registrant portion of a DOI with no \"/suffix\", e.g. \"10.1038\" or \"10.1371\"."
}
},
"additionalProperties": false
}Returns the outgoing reference list for a DOI — the works cited by this paper. Each reference includes the deposited citation string and, where Crossref has resolved it, a DOI you can look up with crossref_get_work. Results are paged: referenceCount is the full deposited total, and when more remain the response carries a nextOffset to pass back as offset. Reference list coverage varies by publisher; many older works and non-participating publishers have no indexed references. Incoming citations — the works that cite this paper — are not available through Crossref; use OpenAlex for that.
| Argument | Type | Description |
|---|---|---|
| doi* | string | DOI in the format "10.NNNN/suffix", e.g. "10.1038/nature12373". A resolver-wrapped form — "https://doi.org/10.1038/nature12373", "https://dx.doi.org/…", "doi:10.1038/nature12373" — is accepted and unwrapped. |
| limit | integer | Maximum number of references to return in one page (1–500 per call, default 100). A larger value, up to 100000, returns 500 and says so in notice; nextOffset continues after the references returned. Most works fit in a single page; bibliography records can carry tens of thousands. |
| offset | integer | Zero-based index of the first reference to return. Pass the nextOffset value from the previous response to continue through a long reference list. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"doi"
],
"properties": {
"doi": {
"type": "string",
"pattern": "^(?:https?:\\/\\/(?:dx\\.)?doi\\.org\\/|doi:)?10\\.\\d{4,9}\\/\\S+$",
"description": "DOI in the format \"10.NNNN/suffix\", e.g. \"10.1038/nature12373\". A resolver-wrapped form — \"https://doi.org/10.1038/nature12373\", \"https://dx.doi.org/…\", \"doi:10.1038/nature12373\" — is accepted and unwrapped."
},
"limit": {
"type": "integer",
"default": 100,
"maximum": 100000,
"minimum": 1,
"description": "Maximum number of references to return in one page (1–500 per call, default 100). A larger value, up to 100000, returns 500 and says so in notice; nextOffset continues after the references returned. Most works fit in a single page; bibliography records can carry tens of thousands."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based index of the first reference to return. Pass the nextOffset value from the previous response to continue through a long reference list."
}
},
"additionalProperties": false
}Resolves a DOI to its full Crossref metadata record: title, authors, editors, affiliations, abstract (when deposited), journal or container with the volume, issue, pages, and article number that locate the work in it, ISSNs and ISBNs, publication date, type, license, full-text links, and funder acknowledgements. The author list is paged: authorCount is the full deposited total, offset and limit select the page (25 authors by default), and when authors remain the response carries a nextOffset to pass back as offset — large-collaboration papers deposit thousands. Post-publication updates are relayed as Crossref records them: updatedBy names each correction, retraction, expression of concern, or new version issued against this work, with its notice DOI and whether the publisher or Retraction Watch recorded it, and updateTo names the works this record is itself a notice for. An absent updatedBy does not mean the work was never updated — coverage depends on those deposits. relations lists related identifiers, such as a preprint and its published version, grouped by relation type; only the Crossref-registered DOIs among them resolve through crossref_get_work. Outgoing references are reported as a count in referencesCount; the reference entries themselves come from crossref_get_references. The isReferencedByCount field reports the total incoming citation count from Crossref; the citing works themselves are not available through Crossref — use OpenAlex for citation graphs.
| Argument | Type | Description |
|---|---|---|
| doi* | string | DOI in the format "10.NNNN/suffix", e.g. "10.1038/nature12373". A resolver-wrapped form — "https://doi.org/10.1038/nature12373", "https://dx.doi.org/…", "doi:10.1038/nature12373" — is accepted and unwrapped. |
| limit | integer | Maximum number of authors to return in one page (1–500 per call, default 25). A larger value, up to 100000, returns 500 and says so in notice; nextOffset continues after the authors returned. Ordinary records fit in a single page; large-collaboration papers in particle physics and genomics deposit thousands. |
Finds funders registered in the Crossref Funder Registry by name or funder DOI. Provide funder_doi for an exact single-funder lookup — the full DOI ("10.13039/100000001"), the bare registry ID ("100000001"), or either behind a doi: or https://doi.org/ prefix — or query for name-based search. Name-query results page with offset — the nextOffset enrichment carries the value for the following page, up to offset + rows = 100000. Set include_works to true to also return a page of the most recent works funded by the matched funder; that list pages two ways, in two orders. works_offset is the simple one: newest published first, capped ten times lower at works_offset + rows = 10000. works_cursor has no ceiling and reaches the whole funded-works list, newest registered first — ordered by the date each DOI was registered with Crossref, since Crossref does not walk a publication-date sort by cursor: pass works_cursor="*" on the first call, then chain the nextWorksCursor token from each response. The two cannot be combined, and a cursor walk always starts at the most recently registered work — it cannot resume from an offset. This list also counts works funded by the funder's registry descendants, which a crossref_search_works filter on {"funder": "10.13039/<id>"} does not. Returns funder name, registry ID, country, and alternate names. The Funder Registry supersedes entries, and a deprecated one answers to the same names as its successor while carrying only a fraction of its works: such a record carries replacedBy with the superseding registry ID and the response carries a notice naming it. The replacement is never followed automatically — re-run with funder_doi set to that ID to get the current entry.
| Argument | Type | Description |
|---|---|---|
| rows | integer | Maximum funders to return for name queries, or works when include_works is true (1–100 per call, default 10). A larger value, up to 1000, returns 100 and says so in notice; nextOffset and nextWorksOffset continue after the records returned. |
Finds Crossref journal records by ISSN or title query. Provide issn for an exact single-journal lookup, or query for title-based search returning up to rows results. Title-query results page with offset — the nextOffset enrichment carries the value for the following page, up to offset + rows = 100000. Set include_works to true to also return a page of the matched journal's most recent works; that list pages two ways, in two orders. works_offset is the simple one: newest published first, capped ten times lower at works_offset + rows = 10000. works_cursor has no ceiling and reaches the whole works list, newest registered first — ordered by the date each DOI was registered with Crossref, since Crossref does not walk a publication-date sort by cursor: pass works_cursor="*" on the first call, then chain the nextWorksCursor token from each response. The two cannot be combined, and a cursor walk always starts at the most recently registered work — it cannot resume from an offset. Returns journal metadata: title, publisher, ISSNs with their print or electronic form, subject areas, DOI counts (total, current, backfile), and per-category metadata deposit coverage — how completely the journal deposits abstracts, references, ORCIDs, funders, licenses, and similar metadata. An issn lookup also returns DOI counts by issued year.
| Argument | Type | Description |
|---|---|---|
| issn | any | ISSN for exact single-journal lookup (print or electronic, with or without hyphen). Example: "1234-5678". |
| rows | integer | Maximum number of journals to return for title queries, or works when include_works is true (1–100 per call, default 10). A larger value, up to 1000, returns 100 and says so in notice; nextOffset and nextWorksOffset continue after the records returned. |
| query | string |
Searches the Crossref works index (~188M 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, created. 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. Post-publication updates ride each work as Crossref records them: updatedBy names each correction, retraction, expression of concern, or new version issued against it, and updateTo the works it is itself a notice for — an absent updatedBy does not mean the work was never updated. 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. A walk with a query term and no sort runs by relevance, one with filters only in Crossref registration order. 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.
| Argument | Type | Description |
|---|---|---|
| rows | integer | Number of results to return per page (1–100 per call, default 20). A larger value, up to 1000, returns 100 and says so in notice — on an offset page the notice also names the offset that continues after the records returned. |
| sort | any | Sort field. Omitted, an offset page with a query term is ranked by relevance, and so is a cursor walk with one (sent as score). The publication-date sorts (published, published-print, published-online) work with offset paging only — Crossref refuses them alongside cursor; every other sort works with either. |
| offset | integer | Zero-based index of the first author to return. Pass the nextOffset value from the previous response to continue through a long author list. Only the author list is paged; every other field of the record is returned in full on every page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"doi"
],
"properties": {
"doi": {
"type": "string",
"pattern": "^(?:https?:\\/\\/(?:dx\\.)?doi\\.org\\/|doi:)?10\\.\\d{4,9}\\/\\S+$",
"description": "DOI in the format \"10.NNNN/suffix\", e.g. \"10.1038/nature12373\". A resolver-wrapped form — \"https://doi.org/10.1038/nature12373\", \"https://dx.doi.org/…\", \"doi:10.1038/nature12373\" — is accepted and unwrapped."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100000,
"minimum": 1,
"description": "Maximum number of authors to return in one page (1–500 per call, default 25). A larger value, up to 100000, returns 500 and says so in notice; nextOffset continues after the authors returned. Ordinary records fit in a single page; large-collaboration papers in particle physics and genomics deposit thousands."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based index of the first author to return. Pass the nextOffset value from the previous response to continue through a long author list. Only the author list is paged; every other field of the record is returned in full on every page."
}
},
"additionalProperties": false
}| query |
| string |
| Funder name search query, e.g. "National Science Foundation" or "Wellcome Trust" |
| offset | integer | Zero-based offset into the name-query funder list. Pass the nextOffset value from the previous response to continue. Ignored when funder_doi is set, which resolves exactly one record. |
| funder_doi | any | Funder DOI for exact lookup — the full DOI "10.13039/100000001" (NSF) or the bare registry ID "100000001". Supersedes query when provided. |
| works_cursor | string | Cursor token for deep paging of the funded-works list when include_works is true. Pass "*" to start the walk at the most recently registered work, then pass the nextWorksCursor value from each response. A walk runs by the date each DOI was registered with Crossref, newest first, not by publication date — Crossref does not walk a publication-date sort by cursor. Has no offset ceiling and cannot be combined with works_offset. |
| works_offset | integer | Zero-based offset into the funded-works list when include_works is true. Pass the nextWorksOffset value from the previous response to continue. Capped at works_offset + rows = 10000; use works_cursor to read the whole list. Cannot be combined with works_cursor. |
| include_works | boolean | When true, also return a page of works funded by the matched funder. Requires an unambiguous funder — pass funder_doi when a name query matches more than one. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "integer",
"default": 10,
"maximum": 1000,
"minimum": 1,
"description": "Maximum funders to return for name queries, or works when include_works is true (1–100 per call, default 10). A larger value, up to 1000, returns 100 and says so in notice; nextOffset and nextWorksOffset continue after the records returned."
},
"query": {
"type": "string",
"description": "Funder name search query, e.g. \"National Science Foundation\" or \"Wellcome Trust\""
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based offset into the name-query funder list. Pass the nextOffset value from the previous response to continue. Ignored when funder_doi is set, which resolves exactly one record."
},
"funder_doi": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"type": "string",
"pattern": "^(?:(?:https?:\\/\\/(?:dx\\.)?doi\\.org\\/|doi:)?10\\.13039\\/)?\\d+$",
"description": "Funder registry ID or funder DOI, e.g. \"100000001\""
}
],
"description": "Funder DOI for exact lookup — the full DOI \"10.13039/100000001\" (NSF) or the bare registry ID \"100000001\". Supersedes query when provided."
},
"works_cursor": {
"type": "string",
"description": "Cursor token for deep paging of the funded-works list when include_works is true. Pass \"*\" to start the walk at the most recently registered work, then pass the nextWorksCursor value from each response. A walk runs by the date each DOI was registered with Crossref, newest first, not by publication date — Crossref does not walk a publication-date sort by cursor. Has no offset ceiling and cannot be combined with works_offset."
},
"works_offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based offset into the funded-works list when include_works is true. Pass the nextWorksOffset value from the previous response to continue. Capped at works_offset + rows = 10000; use works_cursor to read the whole list. Cannot be combined with works_cursor."
},
"include_works": {
"type": "boolean",
"default": false,
"description": "When true, also return a page of works funded by the matched funder. Requires an unambiguous funder — pass funder_doi when a name query matches more than one."
}
},
"additionalProperties": false
}| Journal title search query, e.g. "Nature" or "Journal of Machine Learning Research" |
| offset | integer | Zero-based offset into the title-query journal list. Pass the nextOffset value from the previous response to continue. Ignored when issn is set, which resolves exactly one record. |
| works_cursor | string | Cursor token for deep paging of the journal works list when include_works is true. Pass "*" to start the walk at the most recently registered work, then pass the nextWorksCursor value from each response. A walk runs by the date each DOI was registered with Crossref, newest first, not by publication date — Crossref does not walk a publication-date sort by cursor. Has no offset ceiling and cannot be combined with works_offset. |
| works_offset | integer | Zero-based offset into the journal works list when include_works is true. Pass the nextWorksOffset value from the previous response to continue. Capped at works_offset + rows = 10000; use works_cursor to read the whole list. Cannot be combined with works_cursor. |
| include_works | boolean | When true, also return a page of the journal's most recent works — newest published first on an offset page, newest registered first on a works_cursor walk. Requires an unambiguous journal — pass issn when a title query matches more than one. A journal with no ISSN registered has no addressable works list; the works lookup is then skipped and the notice enrichment says so. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"issn": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"type": "string",
"pattern": "^\\d{4}-?\\d{3}[\\dX]$",
"description": "ISSN, e.g. \"1234-5678\""
}
],
"description": "ISSN for exact single-journal lookup (print or electronic, with or without hyphen). Example: \"1234-5678\"."
},
"rows": {
"type": "integer",
"default": 10,
"maximum": 1000,
"minimum": 1,
"description": "Maximum number of journals to return for title queries, or works when include_works is true (1–100 per call, default 10). A larger value, up to 1000, returns 100 and says so in notice; nextOffset and nextWorksOffset continue after the records returned."
},
"query": {
"type": "string",
"description": "Journal title search query, e.g. \"Nature\" or \"Journal of Machine Learning Research\""
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based offset into the title-query journal list. Pass the nextOffset value from the previous response to continue. Ignored when issn is set, which resolves exactly one record."
},
"works_cursor": {
"type": "string",
"description": "Cursor token for deep paging of the journal works list when include_works is true. Pass \"*\" to start the walk at the most recently registered work, then pass the nextWorksCursor value from each response. A walk runs by the date each DOI was registered with Crossref, newest first, not by publication date — Crossref does not walk a publication-date sort by cursor. Has no offset ceiling and cannot be combined with works_offset."
},
"works_offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based offset into the journal works list when include_works is true. Pass the nextWorksOffset value from the previous response to continue. Capped at works_offset + rows = 10000; use works_cursor to read the whole list. Cannot be combined with works_cursor."
},
"include_works": {
"type": "boolean",
"default": false,
"description": "When true, also return a page of the journal's most recent works — newest published first on an offset page, newest registered first on a works_cursor walk. Requires an unambiguous journal — pass issn when a title query matches more than one. A journal with no ISSN registered has no addressable works list; the works lookup is then skipped and the notice enrichment says so."
}
},
"additionalProperties": false
}| order | any | Sort direction (asc or desc). Applies only alongside sort; without one it has no effect. |
| query | string | Free-text search query, e.g. "CRISPR gene editing" or "climate change adaptation" |
| cursor | string | 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. A walk with a query term runs by relevance unless sort is set; a walk with filters only runs in Crossref registration order. Relevance scores shift slightly between identical requests, so a relevance walk can repeat or skip a record at a page boundary — sort:"created" walks every match without repeats. Cannot be combined with offset, or with a publication-date sort (published, published-print, published-online), which Crossref does not walk by cursor. |
| fields | array | Fields to return (reduces payload). Names are case-sensitive, and each fills one output field: DOI → doi, title → title, type → type, author → authors and authorCount, published / published-print / published-online → published, container-title → containerTitle, publisher → publisher, is-referenced-by-count → isReferencedByCount, score → score, abstract → abstract, volume → volume, issue → issue, page → page, article-number → articleNumber, ISSN → issn, updated-by → updatedBy, update-to → updateTo. A selected field absent from a work means the record does not deposit it. DOI is always returned whether or not it is listed here, so every result stays resolvable by crossref_get_work, which also returns the fields this list does not cover (license, funder, references, and the rest of the record). |
| filter | object | 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"} |
| offset | integer | Zero-based result offset for offset-based paging. Cannot be used with cursor. Capped at ~10K; use cursor for deeper paging. |
| queryTitle | string | Match against work titles only, e.g. "Array programming with NumPy". |
| authorLimit | integer | Maximum number of authors to return per work (1–500 per call, default 25; a larger value, up to 100000, applies 500 and says so in notice). 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 | string | Match against author names only, e.g. "Charles R. Harris". |
| queryBibliographic | string | 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 | string | Match against the container title (journal or book name) only, e.g. "Nature". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "integer",
"default": 20,
"maximum": 1000,
"minimum": 1,
"description": "Number of results to return per page (1–100 per call, default 20). A larger value, up to 1000, returns 100 and says so in notice — on an offset page the notice also names the offset that continues after the records returned."
},
"sort": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"enum": [
"relevance",
"score",
"is-referenced-by-count",
"published",
"published-print",
"published-online",
"deposited",
"indexed",
"created",
"updated",
"references-count"
],
"type": "string",
"description": "Crossref sort field"
}
],
"description": "Sort field. Omitted, an offset page with a query term is ranked by relevance, and so is a cursor walk with one (sent as score). The publication-date sorts (published, published-print, published-online) work with offset paging only — Crossref refuses them alongside cursor; every other sort works with either."
},
"order": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction"
}
],
"description": "Sort direction (asc or desc). Applies only alongside sort; without one it has no effect."
},
"query": {
"type": "string",
"description": "Free-text search query, e.g. \"CRISPR gene editing\" or \"climate change adaptation\""
},
"cursor": {
"type": "string",
"description": "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. A walk with a query term runs by relevance unless sort is set; a walk with filters only runs in Crossref registration order. Relevance scores shift slightly between identical requests, so a relevance walk can repeat or skip a record at a page boundary — sort:\"created\" walks every match without repeats. Cannot be combined with offset, or with a publication-date sort (published, published-print, published-online), which Crossref does not walk by cursor."
},
"fields": {
"type": "array",
"items": {
"enum": [
"DOI",
"title",
"type",
"author",
"published",
"published-print",
"published-online",
"container-title",
"publisher",
"is-referenced-by-count",
"score",
"abstract",
"volume",
"issue",
"page",
"article-number",
"ISSN",
"updated-by",
"update-to"
],
"type": "string",
"description": "Crossref select name"
},
"description": "Fields to return (reduces payload). Names are case-sensitive, and each fills one output field: DOI → doi, title → title, type → type, author → authors and authorCount, published / published-print / published-online → published, container-title → containerTitle, publisher → publisher, is-referenced-by-count → isReferencedByCount, score → score, abstract → abstract, volume → volume, issue → issue, page → page, article-number → articleNumber, ISSN → issn, updated-by → updatedBy, update-to → updateTo. A selected field absent from a work means the record does not deposit it. DOI is always returned whether or not it is listed here, so every result stays resolvable by crossref_get_work, which also returns the fields this list does not cover (license, funder, references, and the rest of the record)."
},
"filter": {
"type": "object",
"description": "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\"}",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based result offset for offset-based paging. Cannot be used with cursor. Capped at ~10K; use cursor for deeper paging."
},
"queryTitle": {
"type": "string",
"description": "Match against work titles only, e.g. \"Array programming with NumPy\"."
},
"authorLimit": {
"type": "integer",
"default": 25,
"maximum": 100000,
"minimum": 1,
"description": "Maximum number of authors to return per work (1–500 per call, default 25; a larger value, up to 100000, applies 500 and says so in notice). 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": {
"type": "string",
"description": "Match against author names only, e.g. \"Charles R. Harris\"."
},
"queryBibliographic": {
"type": "string",
"description": "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": {
"type": "string",
"description": "Match against the container title (journal or book name) only, e.g. \"Nature\"."
}
},
"additionalProperties": false
}