OpenCitations API
Free OpenCitations API with no key: open citation data linking DOIs — who cites whom, with timespans. An open alternative to proprietary citation indexes. Tested.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
What is the OpenCitations API?
OpenCitations is a free, key-free API providing open citation data — which publications cite which others, identified by DOI, with the timespan between them — as an open alternative to proprietary citation databases.
Citation data has historically been locked inside expensive commercial products like Web of Science and Scopus. OpenCitations publishes it as open data under a CC0 waiver, which is a genuinely significant thing for open scholarship.
The API is DOI-centric and symmetrical: `/references/{doi}` gives what a paper cites, `/citations/{doi}` gives what cites it. Between them you can walk a citation graph in either direction without a subscription.
Quick facts
- Base URL
https://api.opencitations.net/index/v1- Authentication
- No API key required. A free token raises rate limits for heavy use.
- Rate limit
- No published hard limit for reasonable use; heavy consumers should request a token.
- Pricing
- Free. Citation data is released under a CC0 public domain waiver.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the OpenCitations API
Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch the references of a paper
GET https://api.opencitations.net/index/v1/references/10.1186/1756-8722-6-59
curl 'https://api.opencitations.net/index/v1/references/10.1186/1756-8722-6-59'const res = await fetch("https://api.opencitations.net/index/v1/references/10.1186/1756-8722-6-59");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.opencitations.net/index/v1/references/10.1186/1756-8722-6-59", timeout=20)
res.raise_for_status()
print(res.json())[
{
"oci": "06190834283-06703097368",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1016/s0006-291x(02)02643-8",
"creation": "2013-08-19",
"timespan": "P10Y8M",
"journal_sc": "no",
"author_sc": "no"
},
{
"oci": "06190834283-062501781527",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1182/blood.v120.21.187.187",
"creation": "2013-08-19",
"timespan": "P0Y9M3D",
"journal_sc": "no",
"author_sc": "no"
},
{
"oci": "06190834283-0614089124",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1002/ajh.23433",
"creation": "2013-08-19",
"timespan": "P0Y4M22D",
"journal_sc": "no",
"author_sc": "no"
},
{
"oci": "06190834283-06901809082",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1182/blood-2011-10-386417",
"creation": "2013-08-19",
"timespan": "P1Y6M17D",
"journal_sc": "no",
"author_sc": "no"
},
{
"oci": "06190834283-0625078255",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1074/jbc.274.14.9587",
"creation": "2013-08-19",
"timespan": "P14Y4M",
"journal_sc": "no",
"author_sc": "no"
},
{
"oci": "06190834283-062101350134",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1016/0014-5793(94)00783-7",
"creation": "2013-08-19",
"timespan": "P18Y11M28D",
"journal_sc": "no",
"author_sc": "no"
},
{
"oci": "06190834283-06150171289",
"citing": "10.1186/1756-8722-6-59",
"cited": "10.1002/eji.1830231210",
"creation": "2013-08-19",
"timespan": "P19Y8M",
"journal_sc": "no"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
references/<doi> | path | Optional | What this DOI cites. references/10.1186/1756-8722-6-59 |
citations/<doi> | path | Optional | What cites this DOI. citations/10.1186/... |
citation-count/<doi> | path | Optional | Just the citation count. citation-count/10.1186/... |
metadata/<doi> | path | Optional | Bibliographic metadata for a DOI. metadata/10.1186/... |
Response fields
ocistring- Open Citation Identifier for this citation link.
citingstring- DOI of the citing publication.
citedstring- DOI of the cited publication.
creationstring- Date the citing work was published.
timespanstring- ISO 8601 duration between cited and citing publication.
journal_sc / author_scstring- Whether it is a journal or author self-citation.
What you can build with the OpenCitations API
- Build citation network visualisations without a subscription
- Calculate citation counts from open data
- Analyse self-citation rates in a field
- Support open bibliometrics research
Common errors and how to fix them
Empty array
No citation data indexed for that DOI.
Fix: Coverage is good but not complete — it depends on publishers depositing open references.
Slow responses
Highly cited papers return large arrays.
Fix: Use /citation-count when you only need the number.
Old URL 404s
The service moved to api.opencitations.net.
Fix: Use the api. subdomain; older opencitations.net/index paths redirect.
OpenCitations API — frequently asked questions
Is OpenCitations free?
Yes, free with no API key, and the citation data is released under a CC0 public domain waiver.
Why does open citation data matter?
Citation indexes have historically been proprietary and expensive. OpenCitations makes the underlying who-cites-whom data freely available, which enables bibliometrics research without a subscription.
Is coverage complete?
No. It depends on publishers depositing open reference lists with Crossref. Coverage is substantial and growing but not universal, so counts may be lower than commercial indexes.
How do I just get a citation count?
Use /citation-count/{doi}, which returns the number without the full array — much faster for highly cited papers.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
Alternatives to OpenCitations API
If OpenCitations does not fit, these science & space apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| NASA APOD | Free NASA Astronomy Picture of the Day API. Daily space images with expert explanations, HD URLs and archive access back to 1995. Tested curl example. | Key | Yes | 19 Aug 2026 |
| Open Notify ISS | Free API returning the International Space Station's live latitude and longitude. No key, updates in real time. Tested curl example and live JSON response. | No key | Yes | 19 Aug 2026 |
| USGS Earthquake | Free USGS earthquake API with no key: live global seismic events as GeoJSON, filterable by magnitude, time and location. Tested curl example and live response. | No key | Yes | 19 Aug 2026 |
| Launch Library 2 | Free rocket launch API with no key: upcoming and past launches from every space agency, with rockets, missions, pads and live stream links. Tested example. | No key | Yes | 19 Aug 2026 |
| OPSIN | Free OPSIN web service at EMBL-EBI with no key: parse systematic IUPAC chemical names into SMILES, InChI or CML algorithmically. Open source, deterministic, no lookup table. | No key | Yes | 21 Aug 2026 |
| ORCID | Free ORCID public API with no key: researcher profiles, publications, affiliations and funding by persistent researcher identifier. Tested curl example. | No key | Yes | 20 Aug 2026 |
OpenCitations is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.