
Crossref 官方堆叠版标识(2015 年 11 月发布)。作者:Crossref;来源:Wikimedia Commons;许可:CC BY 4.0。
Crossref 的 REST API 无需注册即可调用:按 DOI 查单篇元数据,按资助机构 ID 或项目编号筛选论文,再通过 updated-by、update-to 字段识别更正与撤稿。本文依据 Crossref 官方文档,整理基本写法、5 个可直接复制的请求和结果判读要点,并说明资助标识向 ROR 过渡、更新标记依赖出版方与 Retraction Watch 提交等局限。
可检索的三类元数据
Crossref 是学术内容的 DOI 注册机构之一。按官方 REST API 文档,接口公开的是会员(出版机构等)为自己出版内容提交的元数据,并由 Retraction Watch 等可信来源补充;除书目信息外,还包括资助信息、许可、出版后更新、ORCID 与 ROR 标识和摘要,结果以 JSON 返回。官方说明几乎所有元数据不受版权限制、可用于任何目的,但部分摘要可能仍归出版方或作者所有。本文关注其中三类:
- DOI 记录:
/works/{doi}返回单条记录;/works/{doi}/agency可先确认该 DOI 由 Crossref 还是 DataCite 等其他机构注册。 - 资助信息:记录里的
funder数组列出资助机构名称、标识和项目编号(award)。机构标识原来使用 Open Funder Registry 的 Funder ID,写成前缀为10.13039的 DOI 形式;该注册表由 Elsevier 捐赠,官方称约每 4–6 周更新一次,可用/funders端点检索。 - 更正与撤稿标记:出版方为更正、撤稿等编辑上重要的变更登记单独的通知记录。Crossmark 规范接受 12 种更新类型:addendum、clarification、correction、corrigendum、erratum、expression_of_concern、new_edition、new_version、partial_retraction、removal、retraction、withdrawal。Crossref 于 2023 年 9 月从 Center for Scientific Integrity 获得 Retraction Watch 数据库并公开,其中许多撤稿并未由会员提交。
请求写法与使用限制
所有请求以 https://api.crossref.org/ 开头,在浏览器地址栏直接打开即可,装一个 JSON 格式化插件更易读。常用参数有五个:filter 做精确筛选,名称与值用冒号连接,多个条件用逗号分隔;query 以及 query.bibliographic、query.funder-name 等字段查询做关键词或模糊匹配;select 只返回需要的字段;rows 默认 20、最大 1000,设为 0 时只返回总数 total-results;结果超过一页时,首次请求加 cursor=*,再用返回的 next-cursor 翻页,游标 5 分钟不用即失效。
接口分三种访问方式:不带身份的公共池、在 mailto 参数或请求头中留邮箱的礼貌池(polite pool),以及付费的 Metadata Plus。官方文档列出的速率上限依次为 5、10、150,并发上限依次为 1、3 和不限,计算速率的时间窗口以响应头 x-rate-limit-interval 为准。超限会收到 HTTP 429,应降低频率后重试;被人工封禁则返回 403。官方建议所有请求都带 mailto 并缓存结果;要拉取几十万条以上记录,应先考虑年度公共数据文件。Retraction Watch 数据另有 CSV 版本,可用 git clone https://gitlab.com/crossref/retraction-watch-data 获取,每个工作日更新。
可直接复制的检索示例
以下请求均于 2026 年 10 月 18 日试运行,文中的返回数量只代表当时结果,会随元数据更新而变化。使用时把 you@example.org 换成自己的邮箱。
示例 1:查一篇论文是否被更正或撤稿
https://api.crossref.org/works/10.1016/S0140-6736(97)11096-0?mailto=you@example.org
在返回的 JSON 中找 updated-by。这篇 1998 年发表于 The Lancet 的论文有两条:一条 type 为 correction,日期 2004-03-06,通知 DOI 为 10.1016/s0140-6736(04)15715-2;另一条为 retraction,日期 2010-02-06,通知 DOI 为 10.1016/s0140-6736(10)60175-4。两条的 source 都是 retraction-watch,并附有 record-id;记录题名也以“RETRACTED:”开头。
示例 2:从原文反查更正、撤稿通知
https://api.crossref.org/works?filter=updates:10.1016/S0140-6736(97)11096-0&select=DOI,title,type,update-to&mailto=you@example.org
updates 过滤器返回对该 DOI 做出更新的通知记录,每条通知的 update-to 指回原文。试运行返回 2 条,正是示例 1 中的更正与撤稿通知,可据此打开通知原文核对具体理由。
示例 3:先查资助机构 ID,再统计某年的资助论文数
https://api.crossref.org/funders?query=national+natural+science+foundation+china&rows=3&mailto=you@example.org
https://api.crossref.org/works?filter=funder:10.13039/501100001809,type:journal-article,from-pub-date:2025-01-01,until-pub-date:2025-12-31&rows=0&mailto=you@example.org
第一条在资助机构列表中检索:国家自然科学基金委员会的 id 为 501100001809,alt-names 收录了中文名和 NSFC 等别名,replaces 列出已并入的旧 ID。第二条把 ID 补成 10.13039/501100001809 作为 funder 过滤条件,限定期刊论文和 2025 年出版日期,rows=0 只看总数,试运行的 total-results 为 449,577。
示例 4:按项目编号找论文
https://api.crossref.org/works?filter=award.number:2336840&select=DOI,title,funder&mailto=you@example.org
https://api.crossref.org/works?filter=award.number:2336840,award.funder:10.13039/100000001&rows=0&mailto=you@example.org
award.number 按编号精确匹配,第一条试运行返回 9 条;第二条加上 award.funder,限定美国国家科学基金会(NSF)的 Funder ID 后降为 5 条。差额需要打开 funder 数组逐条查看:同一编号可能挂在别的资助条目下,或所在条目只有名称、使用了其他标识。编号写法因出版方而异(如带不带 DEB- 前缀),查不到时应换几种写法再试。
示例 5:在某资助机构的论文中筛出已被更新的记录
https://api.crossref.org/works?filter=funder:10.13039/501100001809,type:journal-article,from-pub-date:2025-01-01,until-pub-date:2025-12-31,has-update:true&select=DOI,title,updated-by&rows=100&mailto=you@example.org
has-update:true 只保留被其他 DOI 更新过的原文,试运行有 3,630 条,前几条的 updated-by 类型是 correction 和 erratum。这个过滤器不区分更新类型;update-type:retraction 作用于通知记录本身,不能直接用来筛被撤稿的原文。要找撤稿,应在本地按 updated-by 中 type 为 retraction 或 partial_retraction 再筛一遍,数量大时配合 cursor 翻页。
结果判读与覆盖局限
判读更新标记时先分清方向:原文记录中的 updated-by 列出指向它的通知,通知记录中的 update-to 指回被更新的原文。source 为 publisher 表示由出版方提交,为 retraction-watch 表示来自 Retraction Watch 数据库;按官方说明,后者对撤稿收录较全,对关注声明、更正等类型并不全面。出版方只需为影响解读或署名的变更登记通知,拼写、格式等小改动可以直接修改正文;也有出版方采用原地更正,让通知与原文共用一个 DOI,官方明确这不是最佳做法。试运行 update-type:retraction 时,就见到 update-to 指向自身 DOI 的记录,以及同一条更新重复出现两次的情况。因此,没有更新标记不等于没有被撤稿,重要引用仍需到出版方页面或通过 Crossmark 按钮核对。

原文记录与更正、撤稿通知之间的双向字段关系:通知的 update-to 指向原文,原文的 updated-by 列出通知;type 标明更新类型,source 标明数据来自出版方还是 Retraction Watch。AI 生成示意图。
资助数据同样取决于出版方提交了什么。funder 条目可能只有名称没有标识,doi-asserted-by 为 publisher 或 crossref,表明标识由谁指定。Open Funder Registry 正在并入 ROR:2025 年 3 月 5 日起,会员可以在原本填 Funder ID 的位置改填 ROR ID,JSON 中以完整网址和 id-type: ROR 表示;2026 年 9 月 15 日起,Crossref 为新增或更新、只写了资助机构名称的记录自动匹配 ROR ID,既有记录不变,原有 Funder ID 也不会被替换。所以只用 funder:10.13039/… 统计,会漏掉仅以 ROR ID 标识资助方的记录;可以补查 filter=ror-id: 加 ROR 网址,但该过滤器同时匹配作者机构和资助方的 ROR ID,结果要回到 funder 字段确认。示例 3 的检索结果里还有 Youth Science Fund Project 等单独编号的条目,是否计入需要事先定好口径,可参考 /funders/{id} 返回的下属机构列表。
覆盖范围上,REST API 只收录 Crossref 注册的 DOI,DataCite 注册的数据集等 DOI 不在其中,可先用 /agency 确认。各会员提交资助、更新政策等字段的比例差别很大,/members/{id} 与 /journals/{issn} 返回的 coverage 字段以及官方 Participation Reports 可以用来估计缺口。日期过滤也要选对:from-pub-date 按出版日期,from-update-date 按出版方变更元数据的日期,后者并非撤稿发生的日期。分面(facet)计数是近似值,一条记录有两次更正时会被重复计数。