Better Fetch

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.

Researchv0.1.1~1 credit/runSource on GitHub

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

DOI or DOI URL for exact lookup, e.g. 10.1038/nature14539.

Search Crossref Works or fetch one exact DOI.

Search ordering. Relevance uses Crossref's default ranking.

Optional Crossref work type such as journal-article, book-chapter, posted-content, or dataset.

Sort order for non-relevance sorts.

Free-text bibliographic query across titles, authors, journals, dates, and citation metadata.

Optional Crossref filter syntax, e.g. type:journal-article,from-pub-date:2024.

Optional contact email for Crossref polite pool routing.

Maximum Crossref works to return in search mode.

Search specifically within work titles.

Search specifically by author name.

Optional lower publication-date bound in YYYY, YYYY-MM, or YYYY-MM-DD format.

Optional upper publication-date bound in YYYY, YYYY-MM, or YYYY-MM-DD format.

Include Crossref abstract text when a record exposes one.

Include a bounded comma-separated list of referenced DOIs when a record exposes them.

Sign in to run this tool

~1 credit per run · runs against your account

Input

doistring

DOI 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.

typestring

Optional Crossref work type such as journal-article, book-chapter, posted-content, or dataset.

order"desc" | "asc"default: "desc"

Sort order for non-relevance sorts.

querystring

Free-text bibliographic query across titles, authors, journals, dates, and citation metadata.

filterstring

Optional Crossref filter syntax, e.g. type:journal-article,from-pub-date:2024.

mailtostring (email)

Optional contact email for Crossref polite pool routing.

max_resultsintegerdefault: 10

Maximum Crossref works to return in search mode.

query_titlestring

Search specifically within work titles.

query_authorstring

Search specifically by author name.

from_pub_datestring

Optional lower publication-date bound in YYYY, YYYY-MM, or YYYY-MM-DD format.

until_pub_datestring

Optional upper publication-date bound in YYYY, YYYY-MM, or YYYY-MM-DD format.

include_abstractbooleandefault: false

Include Crossref abstract text when a record exposes one.

include_referencesbooleandefault: false

Include a bounded comma-separated list of referenced DOIs when a record exposes them.

Output

doistring

Normalized DOI for exact DOI mode

modestringrequired

Mode used for this run

countintegerrequired

Number of returned work records

querystring

Normalized query label for search mode

worksobject[]required

Structured Crossref work records

source_urlstringrequired

Crossref REST API URL fetched

total_matchesinteger

Total 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

DOI verification

Fetch exact Crossref metadata for a DOI and confirm the title, authors, publication venue, publisher, publication date, DOI URL, citation count, and reference count.

Literature discovery

Search by citation text, title, author, work type, or date range and return compact records that can seed a literature review, bibliography, or research queue.

Bibliometric enrichment

Attach Crossref citation counts, reference counts, subjects, funders, license URLs, ISSN values, ISBN values, and ORCIDs to existing research datasets.

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"}'