Skill Tracer
Skills › Scientific Agent Skills › paper-lookup › core.md

core.md

159 lines · skills/paper-lookup/references/core.md at 5f2bc03

Open on GitHub
1# CORE API
2
3CORE aggregates open access research from 15,000+ repositories worldwide. It provides **full text** for 37M+ articles and metadata for 368M+ papers.
4

CORE API

CORE aggregates open access research from 15,000+ repositories worldwide. It provides full text for 37M+ articles and metadata for 368M+ papers.

Raw lines 1 to 4
5## Base URL
6
7```
8https://api.core.ac.uk/v3
9```
11**Important:** GET search paths require a **trailing slash** (e.g., `/v3/search/works/` not `/v3/search/works`).

Base URL

https://api.core.ac.uk/v3

Important: GET search paths require a trailing slash (e.g., /v3/search/works/ not /v3/search/works).

Raw lines 5 to 12
13## Authentication
15- **Header:** `Authorization: Bearer YOUR_API_KEY`
16- **Query param:** `?api_key=YOUR_API_KEY`
17- Register at: https://core.ac.uk/services/api
19**Without auth:** Basic metadata queries work, but full text is NOT available (returns "Not available for public API users").

Authentication

  • Header: Authorization: Bearer YOUR_API_KEY
  • Query param: ?api_key=YOUR_API_KEY
  • Register at: https://core.ac.uk/services/api

Without auth: Basic metadata queries work, but full text is NOT available (returns "Not available for public API users").

Raw lines 13 to 20
21## Rate Limits (token-based)
23| User Type | Daily Tokens | Per-Minute Max |
24|-----------|-------------|----------------|
25| Unauthenticated | 100/day | 10/min |
26| Registered Personal | 1,000/day | 25/min |
27| Registered Academic | 5,000/day | 10/min |
29Simple queries cost 1 token; complex queries typically cost 3-5. Inspect `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Retry-After`; quotas and costs may vary under load.

Rate Limits (token-based)

User TypeDaily TokensPer-Minute Max
Unauthenticated100/day10/min
Registered Personal1,000/day25/min
Registered Academic5,000/day10/min

Simple queries cost 1 token; complex queries typically cost 3-5. Inspect X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Retry-After; quotas and costs may vary under load.

Raw lines 21 to 30
31## Key Endpoints

Key Endpoints

Raw lines 31 to 32
33### 1. Search works
35```
36GET /v3/search/works/?q={query}&limit={n}&offset={n}
37```
39| Parameter | Default | Description |
40|-----------|---------|-------------|
41| `q` | required | Search query (supports field lookups, boolean operators) |
42| `limit` | 10 | Requested page size; use a bounded size such as 10 or 100 |
43| `offset` | 0 | Pagination offset |
45**POST alternative** (for complex queries):
46```
47POST /v3/search/works
48Content-Type: application/json
50{"q": "machine learning", "limit": 10, "offset": 0}
51```
53**Example:**
54```
55https://api.core.ac.uk/v3/search/works/?q=CRISPR+gene+therapy&limit=10
56```

1. Search works

GET /v3/search/works/?q={query}&limit={n}&offset={n}
ParameterDefaultDescription
qrequiredSearch query (supports field lookups, boolean operators)
limit10Requested page size; use a bounded size such as 10 or 100
offset0Pagination offset

POST alternative (for complex queries):

POST /v3/search/works
Content-Type: application/json

{"q": "machine learning", "limit": 10, "offset": 0}

Example:

https://api.core.ac.uk/v3/search/works/?q=CRISPR+gene+therapy&limit=10
Raw lines 33 to 57
58### 2. Query language
60| Operator | Example | Description |
61|----------|---------|-------------|
62| AND | `title:"AI" AND authors:"Smith"` | Both conditions |
63| OR | `title:"AI" OR fullText:"Deep Learning"` | Either condition |
64| Grouping | `(title:"AI" OR title:"ML") AND yearPublished>"2020"` | Precedence |
65| Field lookup | `title:"Machine Learning"` | Search specific field |
66| Range | `yearPublished>2018` | Numeric comparison |
67| Exists | `_exists_:fullText` | Field must exist |
68| Phrase | `title:"Attention is all you need"` | Exact phrase |
70**Searchable fields:** `abstract`, `arxivId`, `authors`, `contributors`, `createdDate`, `dataProviders`, `depositedDate`, `documentType`, `doi`, `fullText`, `id`, `language`, `license`, `oai`, `title`, `yearPublished`

2. Query language

OperatorExampleDescription
ANDtitle:"AI" AND authors:"Smith"Both conditions
ORtitle:"AI" OR fullText:"Deep Learning"Either condition
Grouping(title:"AI" OR title:"ML") AND yearPublished>"2020"Precedence
Field lookuptitle:"Machine Learning"Search specific field
RangeyearPublished>2018Numeric comparison
Exists_exists_:fullTextField must exist
Phrasetitle:"Attention is all you need"Exact phrase

Searchable fields: abstract, arxivId, authors, contributors, createdDate, dataProviders, depositedDate, documentType, doi, fullText, id, language, license, oai, title, yearPublished

Raw lines 58 to 71
72### 3. Get work by ID
74```
75GET /v3/works/{id}
76```
78`id` is a CORE Work ID (integer). Example: `/v3/works/267312`

3. Get work by ID

GET /v3/works/{id}

id is a CORE Work ID (integer). Example: /v3/works/267312

Raw lines 72 to 79
80### 4. Get output by ID
82```
83GET /v3/outputs/{id}
84```

4. Get output by ID

GET /v3/outputs/{id}
Raw lines 80 to 85
86### 5. Download full text
88```
89GET /v3/outputs/{id}/download
90```
92Returns a binary PDF when available to the caller. Prefer a returned `downloadUrl` first; direct CORE downloads cost quota. Never send the CORE bearer token to a repository or publisher download URL.
94```
95GET /v3/works/tei/{id}
96```
98Returns TEI XML format.

5. Download full text

GET /v3/outputs/{id}/download

Returns a binary PDF when available to the caller. Prefer a returned downloadUrl first; direct CORE downloads cost quota. Never send the CORE bearer token to a repository or publisher download URL.

GET /v3/works/tei/{id}

Returns TEI XML format.

Raw lines 86 to 99
100### 6. Search outputs
102```
103GET /v3/search/outputs/?q={query}&limit={n}&offset={n}
104```
106Search by DOI: `q=doi:10.1038/nature12373`

6. Search outputs

GET /v3/search/outputs/?q={query}&limit={n}&offset={n}

Search by DOI: q=doi:10.1038/nature12373

Raw lines 100 to 107
108## Response Format

Response Format

Raw lines 108 to 109
110### Search response
111```json
113 "totalHits": 2281337,
114 "limit": 10,
115 "offset": 0,
116 "results": [...]
118```

Search response

{
  "totalHits": 2281337,
  "limit": 10,
  "offset": 0,
  "results": [...]
}
Raw lines 110 to 119
120### Work object (key fields)
121```json
123 "id": 8848131,
124 "title": "Attention Is All You Need",
125 "authors": [{"name": "Ashish Vaswani"}, ...],
126 "abstract": "The dominant sequence...",
127 "doi": "10.48550/arXiv.1706.03762",
128 "arxivId": "1706.03762",
129 "yearPublished": 2017,
130 "downloadUrl": "https://core.ac.uk/download/...",
131 "fullText": "Full text content (when authenticated)...",
132 "language": {"code": "en", "name": "English"},
133 "documentType": "research",
134 "citationCount": 145678,
135 "dataProviders": [{"name": "arXiv"}],
136 "links": [{"type": "download", "url": "..."}]
138```

Work object (key fields)

{
  "id": 8848131,
  "title": "Attention Is All You Need",
  "authors": [{"name": "Ashish Vaswani"}, ...],
  "abstract": "The dominant sequence...",
  "doi": "10.48550/arXiv.1706.03762",
  "arxivId": "1706.03762",
  "yearPublished": 2017,
  "downloadUrl": "https://core.ac.uk/download/...",
  "fullText": "Full text content (when authenticated)...",
  "language": {"code": "en", "name": "English"},
  "documentType": "research",
  "citationCount": 145678,
  "dataProviders": [{"name": "arXiv"}],
  "links": [{"type": "download", "url": "..."}]
}
Raw lines 120 to 139
140## Pagination
142- **Standard:** `offset` + `limit` (max 10,000 results)
143- The current v3 reference mentions scroll as an expensive operation, but its
144 search parameter schema no longer specifies a `scroll` / `scrollId` contract.
145 Do not assume the old recipe works. For larger sets, follow CORE's current
146 linked bulk examples or partition the query and reconcile overlapping IDs.
147- GET/POST searches document `q`, `limit`, `offset`, and optional `stats`; the
148 example schema uses `total_hits`, while the unauthenticated GET smoke response
149 on 2026-09-30 returned `totalHits` and camelCase work fields as shown here.
150 Inspect the actual response before selecting a naming convention. No
151 authenticated download or scroll walk was tested in this review.

Pagination

  • Standard: offset + limit (max 10,000 results)
  • The current v3 reference mentions scroll as an expensive operation, but its search parameter schema no longer specifies a scroll / scrollId contract. Do not assume the old recipe works. For larger sets, follow CORE's current linked bulk examples or partition the query and reconcile overlapping IDs.
  • GET/POST searches document q, limit, offset, and optional stats; the example schema uses total_hits, while the unauthenticated GET smoke response on 2026-09-30 returned totalHits and camelCase work fields as shown here. Inspect the actual response before selecting a naming convention. No authenticated download or scroll walk was tested in this review.
Raw lines 140 to 152
153## Error Handling
155Under heavy load, the API may return partial shard failure messages. These are transient -- retry after a brief wait.

Error Handling

Under heavy load, the API may return partial shard failure messages. These are transient -- retry after a brief wait.

Raw lines 153 to 156
157## Official sources reviewed 2026-09-30
159- https://api.core.ac.uk/docs/v3

Official sources reviewed 2026-09-30

  • https://api.core.ac.uk/docs/v3
Raw lines 157 to 159