CiNii Research APIで論文・研究データを横断検索する
CiNii Research(国立情報学研究所)は、論文・図書・博士論文に加えて、KAKEN(科研費)の研究課題や機関リポジトリの研究データまでを横断して検索できる、日本の学術情報のハブです。2022年にCiNii Articlesが統合され、国内の論文検索はここに一本化されました。OpenSearch形式のAPIが公開されていて、キーワードから書誌情報を引けます。ただし返ってくるのは素直なJSONではなくJSON-LDで、しかもフィールドの有無がレコードごとに違うという癖があります。このガイドでは、実際に叩いて確認した仕様と注意点を整理します。
CiNii Researchで検索できるもの
検索対象は種別ごとに分かれており、articles(論文)、books(図書)、dissertations(博士論文)、projects(KAKEN研究課題)、data(研究データ)などがあります。用途に応じてエンドポイントを使い分ける形です。
収録規模は、書誌が1,000万件超、論文が900万件超とされています(NIIの発表による概数で、現在の正確な値は未確認です)。2022年4月にCiNii ArticlesがCiNii Researchへ統合され、論文検索の窓口はCiNii Researchに一本化されました。古い記事がCiNii Articlesを前提に書かれていることがあるので注意してください。
実際に叩いてみると、「機械学習」で16,527件、「量子コンピュータ」で1,960件がヒットしました(2026年7月時点)。
APIの叩き方
論文検索のエンドポイントは `https://cir.nii.ac.jp/opensearch/articles` です。`q` に検索語、`format=json` でJSON形式を指定し、`count` で件数を指定します。count は1〜200の範囲で、デフォルトは20です。
ページングは `start`(取得開始位置)で行い、公式仕様では最大10000まで指定できます。count の上限が200なので、それより多く集めたい場合は start を進めながら繰り返すことになります。
0件だったかどうかは、HTTPステータスでは判別できません。正常応答が返り、本文の `opensearch:totalResults` が 0、`items` が空配列になります。件数判定は必ず本文を見てください。
appidは「必須」と書かれているが、実際には無くても通る
公式のAPI仕様書には、アプリケーションID(appid)が「必須です」と明記されています。ところが実際に appid を付けずに叩いたところ、エラーにならず、16,527件のヒットを含む正常なレスポンスが返ってきました。ドキュメントの記述と実運用が食い違っている状態です。
ただしこれを「appidは不要」と受け取るのは危険です。低頻度のアクセスだから黙認されているだけで、高頻度の利用や商用利用では制限される可能性があります(この理由の部分は推測です)。継続的に使うサービスを作るなら、素直にappidを取得して付けておくほうが安全でしょう。
レート制限の具体的な数値や、商用利用の可否といった利用条件については、公式ドキュメント上に明記が見当たりませんでした。大量取得を計画しているなら、事前に問い合わせておくのが確実です。
返ってくるのはJSON-LD(フィールドが一定しない)
`format=json` を指定しても、返るのは素朴なJSONではなくJSON-LDです。RSS 1.0・Dublin Core・PRISM といった語彙をJSON-LDで表現した形になっており、キーにコロンが含まれます。件数は `opensearch:totalResults` / `opensearch:startIndex` / `opensearch:itemsPerPage`、本体は `items` 配列で、各要素に `dc:creator`(著者)、`dc:publisher`(出版者)、`prism:publicationName`(掲載誌名)などが入ります。コロン付きのキーは、多くの言語でドット記法では読めないので、文字列キーとしてアクセスする必要があります。
そして最大の注意点が、**フィールドの有無がレコードごとに違う**ことです。実測では、`title` キー自体が存在しないアイテムがありました。`dc:creator` が無いアイテムもあります。`item.title` に決め打ちでアクセスするコードは、あっさり undefined になります。
識別子(`dc:identifier`)はさらに厄介で、レコードごとに構造が違います。NAIDだけのもの、NDL_BIB_ID と URI と NAID が並ぶもの、DOIだけのもの、といった具合です。DOIが取れるのは比較的新しい論文が中心で、全件に付いているわけではありません。「DOIをキーに他のデータベースと突き合わせる」という設計をするなら、DOIが無いレコードが相当数あることを前提にしてください。
J-STAGEとの使い分け
CiNii Research は全分野を横断し、論文・図書・博士論文・KAKEN研究課題・研究データまでを統合して検索できる「広く」型です。「この研究テーマで何が行われてきたか」を面で押さえたいときに向いています。
一方 J-STAGE は、学協会が発行するジャーナルに収録範囲が限られる代わりに、本文へのリンクとDOIに直結する「深く」型です。特定の論文の全文にたどり着きたいならJ-STAGEが早い、という住み分けになります。両方を叩いて突き合わせると、CiNiiで見つけた論文の全文がJ-STAGEにある、といった導線が作れます。
実際に叩いてみる(CiNii Research・登録不要)
CiNii Research の OpenSearch は登録不要(appid無しでも実測では通る)で、論文・図書・博士論文・研究課題を横断検索できます。format=json を付けると JSON-LD(@context 付き)で返り、フィールドが資料種別ごとに一定しない点に注意します。
curl -s "https://cir.nii.ac.jp/opensearch/articles?q=AI&count=1&format=json"
# 実際のレスポンス(抜粋・JSON-LD)
{
"@context": { "@vocab": "http://purl.org/rss/1.0/", "dc": "http://purl.org/dc/elements/1.1/", ... },
"@graph": [{
"items": [ { "title": "…", "dc:creator": "…", "prism:publicationName": "…" } ]
}]
}出典
元システムエンジニア。Web系アプリ開発6年+ソリューション9年、IT実務およそ15年。個人開発者として、政府オープンデータや各府省のAPIを実際に叩いて検証し、「何が取れるか」「実装時にどこで詰まるか」「どう活用するか」を一次検証にもとづいて記録しています。
運営者・検証方針について →