Crossref DOI Lookup — Canonical Citation Metadata API
Pricing
from $2.40 / 1,000 successful lookups
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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
- In the Apify Console. Open the actor page and click Start — the
doisfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - 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"]}'
- 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
| query | found | status | title | doi | type | publisher | journal | issn | publishedDate | volume | issue | page | referenceCount | isReferencedByCount | license | authors | authorCount | url | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10.1038/nature12373 | true | OK | Nanometre-scale thermometry in a living cell | 10.1038/nature12373 | journal-article | Springer Science and Business Media LLC | Nature | 0028-0836 | 2013-7-31 | 500 | 7460 | 54-58 | 30 | 1806 | http://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}] | 8 | https://doi.org/10.1038/nature12373 | 2026-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
isReferencedByCountin 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
publisherandlicenseacross 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"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.