Crossref DOI Lookup — Canonical Citation Metadata API avatar

Crossref DOI Lookup — Canonical Citation Metadata API

Pricing

from $2.40 / 1,000 successful lookups

Go to Apify Store
Crossref DOI Lookup — Canonical Citation Metadata API

Crossref DOI Lookup — Canonical Citation Metadata API

Look up DOIs against Crossref's official metadata API — the canonical source publishers register citation data with. Get title, full author list with ORCID and affiliation, journal, publisher, ISSN, license, and reference/citation counts. Pay only for DOIs that resolve.

Pricing

from $2.40 / 1,000 successful lookups

Rating

0.0

(0)

Developer

Adrian Voss

Adrian Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Crossref DOI Lookup

Look up any DOI against Crossref's official metadata API — the canonical registration agency publishers submit citation data to. Get title, full author list (with ORCID and affiliation when registered), journal, publisher, ISSN, license, and reference/citation counts. No API key, no scraping — this hits the official public API directly.

Features

  • DOI → full citation record. Title, work type, publisher, journal/container title, ISSN, published date, volume, issue, page range.
  • Full author list. Name, ORCID, and affiliation for every listed author, not just the first.
  • Citation metrics. Reference count (works this DOI cites) and cited-by count (works citing this DOI, as tracked by Crossref).
  • Pay only for hits. DOIs that don't resolve cost nothing — see Pricing.
  • One row per DOI or per author. Optionally expand each author into its own output row without paying more.

How to use Crossref DOI Lookup — Canonical Citation Metadata API

  1. In the Apify Console. Open the actor page and click Start — the dois field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~crossref-doi-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"dois":["10.1038/nature12373"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Input

{
"dois": [
"10.1038/nature12373"
]
}

One DOI or doi.org URL per line. Accepted formats: 10.1038/nature12373, https://doi.org/10.1038/nature12373.

{
"dois": ["10.1038/nature12373"],
"testRun": false,
"onlyFound": false,
"expandRows": false,
"maxConcurrency": 5
}

dois is a list of DOIs, accepted either as a bare DOI (10.1038/nature12373) or a doi.org URL — the actor extracts the DOI pattern automatically. One dataset row is returned per DOI; rows with "found": false are never charged. Turn on testRun to try your list against just the first 5 DOIs before running the full batch. Turn on expandRows to get one row per author instead of one row per DOI — you're still only charged once per DOI no matter how many author rows it produces. Optional includeKeywords / excludeKeywords filter rows by content, maxResults caps the run early, and columns lets you pick which fields to return.

Output

queryfoundstatustitledoitypepublisherjournalissnpublishedDatevolumeissuepagereferenceCountisReferencedByCountlicenseauthorsauthorCounturlscrapedAt
10.1038/nature12373trueOKNanometre-scale thermometry in a living cell10.1038/nature12373journal-articleSpringer Science and Business Media LLCNature0028-08362013-7-31500746054-58301806http://www.springer.com/tdm[{"name":"G. Kucsko","orcid":null,"affiliation":null},{"name":"P. C. Maurer","orcid":null,"affiliation":null},{"name":"N. Y. Yao","orcid":null,"affiliation":null},{"name":"M. Kubo","orcid":null,"affiliation":null},{"name":"H. J. Noh","orcid":null,"affiliation":null},{"name":"P. K. Lo","orcid":null,"affiliation":null},{"name":"H. Park","orcid":null,"affiliation":null},{"name":"M. D. Lukin","orcid":null,"affiliation":null}]8https://doi.org/10.1038/nature123732026-08-23T21:03:06.962Z

One row per DOI, for example:

{
"query": "10.1038/nature12373",
"found": true,
"status": "OK",
"doi": "10.1038/nature12373",
"title": "A mesoscale connectome of the mouse brain",
"type": "journal-article",
"publisher": "Springer Science and Business Media LLC",
"journal": "Nature",
"issn": "0028-0836",
"publishedDate": "2014-1",
"volume": "508",
"issue": "7495",
"page": "207-214",
"referenceCount": 45,
"isReferencedByCount": 1382,
"license": "https://www.springer.com/tdm",
"authors": [
{ "name": "Seung Wook Oh", "orcid": null, "affiliation": "Allen Institute for Brain Science" }
],
"authorCount": 12,
"url": "http://dx.doi.org/10.1038/nature12373",
"scrapedAt": "2026-08-21T10:00:00.000Z"
}

DOIs that don't resolve still get a row ("found": false, "status": "NOT_FOUND", with a plain-English message), so you always get one row per input — but you're never charged for those.

Use cases

  • Reference list enrichment — turn a bare list of DOIs from a bibliography or citation manager into full title/author/journal metadata.
  • Citation impact tracking — pull isReferencedByCount in bulk to monitor how a set of papers is being cited over time.
  • Author & affiliation mapping — expand rows per author to build an author-to-institution dataset from a corpus of DOIs.
  • Publisher & license auditing — check publisher and license across a collection to confirm open-access or reuse terms.

Pricing

$4 per 1,000 DOIs, plus a $0.005 start fee. Misses (found:false) are never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~crossref-doi-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"dois":["10.1038/nature12373"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~crossref-doi-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"dois":["10.1038/nature12373"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~crossref-doi-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"dois":["{{DOI}}"]}, mapping the row's DOI into the dois array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Crossref API — DOI to Citation Metadata" — the agent will find and run this actor.

FAQ

Do I need a Crossref API key? No. The Crossref REST API is free and public — this actor calls it directly, with no credentials required on your end.

What counts as "not found"? A well-formed DOI with no Crossref record returns "found": false" with

"status": "NOT_FOUND"
. Crossref only covers works registered with it as the DOI registration agency — DOIs registered elsewhere (e.g. DataCite) will also come back as not found.

Can I paste a doi.org URL instead of a bare DOI? Yes. The actor extracts the 10.xxxx/... pattern from whatever you paste, so https://doi.org/10.1038/nature12373, a bare DOI, or a DOI with trailing punctuation all normalize to the same lookup.

Are all authors always registered with ORCID and affiliation? No — orcid and affiliation are only populated when the publisher included them in the Crossref submission. Many records only have author names. Author order matches Crossref's own listing.

Can I get one row per author instead of one row per DOI? Yes — turn on expandRows. Each author becomes its own dataset row, but billing is still per DOI found, not per author row.

Can I run this against thousands of DOIs at once? Yes. Turn on testRun first to sanity-check your list against just 5 DOIs, then run the full batch — maxConcurrency controls how many requests run in parallel.