# OpenCitations API
> Scholarly citations as open data — powered by OpenCitations (COCI), the open citation index. Unlike a metadata lookup, OpenCitations treats every citation as a first-class object: given a DOI you can list the papers that cite it (incoming citations) and the papers it references (outgoing), each annotated with its OpenCitations Identifier (OCI), the date the citation was created, the timespan between the two works, and whether it is a journal- or author-self-citation. Plus quick citation and reference counts for any DOI. It is built for citation-network and bibliometric work — research-impact analysis, self-citation detection, citation-timespan studies and science mapping — and is distinct from scholarly-metadata services (Crossref, OpenAlex). From a single paper to a whole reference graph, ideal for bibliometrics, research-analytics and reference-management tools. Open data from OpenCitations (CC0).

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/opencitations-api/..."
```

## Pricing
- **Free** (Free) — 2,800 calls/Mo, 2 req/s
- **Starter** ($8/Mo) — 58,000 calls/Mo, 8 req/s
- **Pro** ($24/Mo) — 270,000 calls/Mo, 20 req/s
- **Mega** ($63/Mo) — 950,000 calls/Mo, 50 req/s

## Endpoints

### Citations

#### `GET /v1/citations` — Papers that cite a DOI (incoming)

**Parameters:**
- `doi` (query, optional, string) — A DOI Example: `10.1186/1756-8722-6-59`
- `limit` (query, optional, string) — Max results (1-200, default 50)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/opencitations-api/v1/citations?doi=10.1186%2F1756-8722-6-59"
```

**Response:**
```json
{
    "data": {
        "doi": "10.1186/1756-8722-6-59",
        "count": 50,
        "total": 208,
        "citations": [
            {
                "doi": "10.1016/j.molstruc.2025.142829",
                "oci": "06010196038-06190834283",
                "creation": "2025-10",
                "timespan": "P12Y1M",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1038/leu.2016.153",
                "oci": "061402001255-06190834283",
                "creation": "2016-05-25",
                "timespan": "P2Y9M6D",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1186/s13045-015-0188-3",
                "oci": "06190834059-06190834283",
                "creation": "2015-08-01",
                "timespan": "P1Y11M13D",
                "author_self_citation": false,
                "journal_self_citation": true
            },
            {
                "doi": "10.1016/j.chemolab.2024.105145",
                "oci": "06280609678-06190834283",
                "creation": "2024-07",
                "timespan": "P10Y10M",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1021/acs.jmedchem.0c00702",
                "oci": "06180245555-06190834283",
                "creation": "2020-
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/count` — Citation & reference counts for a DOI

**Parameters:**
- `doi` (query, optional, string) — A DOI Example: `10.1186/1756-8722-6-59`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/opencitations-api/v1/count?doi=10.1186%2F1756-8722-6-59"
```

**Response:**
```json
{
    "data": {
        "doi": "10.1186/1756-8722-6-59",
        "cited_by_count": 208,
        "reference_count": 72
    },
    "meta": {
        "timestamp": "2026-06-01T16:23:08.515Z",
        "request_id": "68c949d8-2bc2-4406-9f74-97d3412cc8d7"
    },
    "status": "ok",
    "message": "Counts retrieved",
    "success": true
}
```

#### `GET /v1/references` — Papers a DOI references (outgoing)

**Parameters:**
- `doi` (query, optional, string) — A DOI Example: `10.1186/1756-8722-6-59`
- `limit` (query, optional, string) — Max results (1-200, default 50)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/opencitations-api/v1/references?doi=10.1186%2F1756-8722-6-59"
```

**Response:**
```json
{
    "data": {
        "doi": "10.1186/1756-8722-6-59",
        "count": 50,
        "total": 72,
        "direction": "outgoing",
        "references": [
            {
                "doi": "10.1056/nejmoa1306220",
                "oci": "06190834283-061402105792",
                "creation": "2013-08-19",
                "timespan": "P0Y0M11D",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1074/jbc.m006952200",
                "oci": "06190834283-068086329",
                "creation": "2013-08-19",
                "timespan": "P12Y8M",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1186/2162-3619-1-36",
                "oci": "06190834283-06601781882",
                "creation": "2013-08-19",
                "timespan": "P0Y8M21D",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1016/s0006-2952(98)00122-1",
                "oci": "06190834283-06903851902",
                "creation": "2013-08-19",
                "timespan": "P15Y",
                "author_self_citation": false,
                "journal_self_citation": false
            },
            {
                "doi": "10.1074/jbc.274.14.9587",
                "oci": "06190834283-0625078255",
                
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Endpoint catalogue & notes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/opencitations-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "OpenCitations publishes scholarly citations as open data — each citation is a first-class object with its own OpenCitations Identifier (OCI), the citing and cited DOI, the date the citation was created, the timespan between the two works and whether it is a journal- or author-self-citation. /v1/citations?doi=10.1186/1756-8722-6-59 = the papers that CITE this DOI (incoming citations), each with citing DOI, OCI, creation date, timespan and self-citation flags; /v1/references?doi=10.1186/1756-8722-6-59 = the papers this DOI REFERENCES (outgoing), in the same shape; /v1/count?doi=10.1186/1756-8722-6-59 = the citation count (how often it is cited) and reference count (how many works it cites). Pass any DOI as doi=10.xxxx/yyyy (limit 1-200 on the lists; timespan is an ISO-8601 duration like P0Y0M11D). Data from OpenCitations (CC0). A citation-network / bibliometrics tool — incoming citations, self-citation detection and citation timespan, distinct from scholarly-metadata lookups (Crossref, OpenAlex). Ideal for bibliometrics, research-impact, science-mapping and reference-management tools.",
        "source": "OpenCitations — the open citation index, COCI (opencitations.net)",
        "endpoints": [
            "/v1/citations",
            "/v1/references",
            "/v1/count",
            "/v1/meta"
        ]
    },
    "meta": {
        "timestamp": "2026-06-01T16:23:10.603Z",
        "request_id": "19d1c43c-79b7-442a-9844-90227fe193ca"
 
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/opencitations-api
OpenAPI spec: https://www.oanor.com/api/opencitations-api/openapi.json
