Next free-source hunt
We check for new free data every weekday.
Datasets / Research & Grey Literature
crossref.org/

Crossref REST API

Freeauth: none (add mailto for the polite pool)Provider terms#research-grey-literature#papers#citations#historical-data✓ verified Nov 3, 2026

Crossref REST API

Crossref's public REST API exposes the scholarly metadata that Crossref members and trusted sources deposit: bibliographic records plus funding data, licence information, post-publication updates, ORCID and ROR IDs and, for some records, abstracts. Works, journals, members, funders, prefixes, types and licences can be searched, filtered, faceted or sampled, with results in JSON; no sign-up is required.

Coverage

The metadata is deposited directly by Crossref's members, who publish the content each record represents, and is complemented by trusted sources such as Retraction Watch. Record types (journal-article, monograph, grant and others) are listed at the /types endpoint. Publication delay: Not stated.

Verdict

Use it to resolve a DOI to its title, journal, dates, funders and licence, or to pull new works by filter for a literature, funding or retraction pipeline. Crossref says almost none of the metadata is subject to copyright and it may be used for any purpose, but some abstracts may be under publishers' or authors' copyright. Add a mailto parameter to use the polite pool, keep to the concurrency limit and read the x-rate-limit headers on each response; higher limits come with Crossref's paid Metadata Plus service.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load Crossref works for a search into pandas and Parquet. Checked against the provider's documentation on Nov 3, 2026.

Raw skill file (/skills/crossref-rest-api.md)Also in our MCP server: call get_ingestion_skill with {"slug": "crossref-rest-api"}.

Access

  • No sign-up or key. Put your email address in the mailto parameter (or the User-Agent) to use the polite pool.
  • Base URL https://api.crossref.org; /works takes query, filter, rows, select and cursor parameters.

Request

bash
curl 'https://api.crossref.org/works?query.bibliographic=monetary+policy+transmission&filter=from-pub-date:2025-01-01,type:journal-article&rows=100&mailto=you@example.org'

Format

JSON with status, message-type and message; message carries total-results and items, each item a work with DOI, title (a list), container-title, published date-parts, is-referenced-by-count, publisher, and optional funder, license and abstract fields.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""Crossref works metadata -> pandas -> Parquet. No sign-up; add mailto for the polite pool."""
import requests
import pandas as pd

params = {
    "query.bibliographic": "monetary policy transmission",
    "filter": "from-pub-date:2025-01-01,type:journal-article",
    "rows": 100,
    "select": "DOI,title,container-title,published,is-referenced-by-count,publisher",
    "mailto": "you@example.org",  # replace with your own contact address
}
r = requests.get("https://api.crossref.org/works", params=params, timeout=60)
r.raise_for_status()
msg = r.json()["message"]
rows = [{
    "doi": it["DOI"],
    "title": (it.get("title") or [None])[0],
    "journal": (it.get("container-title") or [None])[0],
    "published": "-".join(str(p) for p in (it.get("published", {}).get("date-parts") or [[None]])[0] if p is not None),
    "cited_by": it.get("is-referenced-by-count"),
    "publisher": it.get("publisher"),
} for it in msg["items"]]
df = pd.DataFrame(rows)
df.to_parquet("crossref_works.parquet", index=False)
print(len(df), "works on this page of", msg["total-results"], "matches")

Run by us on 2026-11-03 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 100 works on this page of 140686 matches

Limits

  • Crossref's table: public pool 5 with concurrency 1, polite pool 10 with concurrency 3; on 2026-11-03 the headers showed 1 and 3 per 1s, so read x-rate-limit-limit and x-rate-limit-interval.
  • A 429 means slow down; a manual block returns 403, which is why Crossref asks for a mailto in every request.

Quirks

  • title and container-title are lists; take the first element.
  • Dates come as date-parts arrays such as [[2025, 3, 14]], sometimes with only a year.
  • Use cursor=* for deep paging instead of large offsets.

Terms and attribution

  • Crossref says almost none of the metadata is subject to copyright and it may be used for any purpose.
  • Some abstracts in the metadata may be under publishers' or authors' copyright.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer