Crossref Metadata Scraper
Search Crossref Works or fetch one DOI through the public Crossref REST API, returning normalized scholarly metadata with DOIs, titles, authors, ORCIDs, journals, dates, citation counts, references, licenses, funders, and URLs.
Overview
Crossref Metadata Scraper gives agents a compact public-API route into Crossref's scholarly DOI graph. Search the Works API by free-text citation, title, author, work type, date range, or Crossref filter string, or fetch an exact DOI such as 10.1038/nature14539. The tool returns normalized citation rows with DOI links, titles, authors, ORCIDs, container titles, publisher, publication dates, ISSN and ISBN identifiers, volume, issue, pages, subjects, citation and reference counts, funder labels, license URLs, optional abstracts, optional referenced DOIs, and Crossref indexing timestamps. It is built for literature discovery, DOI verification, citation enrichment, bibliometric analysis, academic lead research, library catalog cleanup, and research-agent workflows.
Last validated: Jul 3, 2026
Playground
Input
doistringDOI or DOI URL for exact lookup, e.g. 10.1038/nature14539.
mode"search" | "doi"default: "search"Search Crossref Works or fetch one exact DOI.
sort"relevance" | "published" | "updated" | "deposited" | "is-referenced-by-count"default: "relevance"Search ordering. Relevance uses Crossref's default ranking.
typestringOptional Crossref work type such as journal-article, book-chapter, posted-content, or dataset.
order"desc" | "asc"default: "desc"Sort order for non-relevance sorts.
querystringFree-text bibliographic query across titles, authors, journals, dates, and citation metadata.
filterstringOptional Crossref filter syntax, e.g. type:journal-article,from-pub-date:2024.
mailtostring (email)Optional contact email for Crossref polite pool routing.
max_resultsintegerdefault: 10Maximum Crossref works to return in search mode.
query_titlestringSearch specifically within work titles.
query_authorstringSearch specifically by author name.
from_pub_datestringOptional lower publication-date bound in YYYY, YYYY-MM, or YYYY-MM-DD format.
until_pub_datestringOptional upper publication-date bound in YYYY, YYYY-MM, or YYYY-MM-DD format.
include_abstractbooleandefault: falseInclude Crossref abstract text when a record exposes one.
include_referencesbooleandefault: falseInclude a bounded comma-separated list of referenced DOIs when a record exposes them.
Output
doistringNormalized DOI for exact DOI mode
modestringrequiredMode used for this run
countintegerrequiredNumber of returned work records
querystringNormalized query label for search mode
worksobject[]requiredStructured Crossref work records
source_urlstringrequiredCrossref REST API URL fetched
total_matchesintegerTotal Crossref matches reported for search mode
Examples
deep-learning-doi
{
"doi": "10.1038/nature14539",
"mode": "doi"
}machine-learning-search
{
"mode": "search",
"sort": "is-referenced-by-count",
"type": "journal-article",
"max_results": 3,
"query_title": "machine learning"
}Use cases
FAQ
Does Crossref Metadata Scraper require an API key?
No. Version 0.1 uses the public Crossref REST API through Better Fetch. It adds a mailto contact parameter by default because Crossref recommends it for polite API usage.
Can it fetch one DOI as well as search multiple works?
Yes. Provide doi or set mode to doi for an exact lookup, or use search mode with query, query_title, query_author, type, date filters, or a Crossref filter string.
Does it download full paper text?
No. It returns metadata registered with Crossref. Some records include abstracts or license links, but the tool does not bypass publisher sites or fetch full-text article bodies.
Use it anywhere
MCP (Claude, Cursor, any client)
# Add the Better Fetch MCP connector (or paste the URL into # Claude → Settings → Connectors → Add custom connector): claude mcp add --transport http better-fetch https://betterfetch.co/api/mcp \ --header "Authorization: Bearer bf_your_key_here" # Then ask for the tool by name: crossref_metadata_scraper
REST
curl -sS -X POST "https://betterfetch.co/api/tools/crossref_metadata_scraper/run" \
-H "Authorization: Bearer bf_your_key_here" \
-H "Content-Type: application/json" \
-d '{"input": {"doi":"10.1038/nature14539","mode":"doi"}}'Run locally
git clone https://github.com/better-fetch/tools/tree/main/tools/crossref-metadata-scraper && cd crossref-metadata-scraper && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"doi":"10.1038/nature14539","mode":"doi"}'