Research API endpoint
Return paper records including titles, abstracts when available, authors, publication dates and verified identifier aliases. Europe PMC resolution is limited to MED-backed PMID, PMCID and DOI records; no full-text body is fetched.
/research/papers/metadataReturns metadata for arXiv identifiers and supported MED-backed Europe PMC records. Europe PMC resolves PMID, PMCID, and DOI identifiers and preserves verified aliases; unsupported or ambiguous source evidence is an explicit failure. Requires the x-api-key header.
Query parameter:
paper_id: required, up to 4096 characters. Accepted forms include arxiv:1706.03762, a bare arXiv ID, a PMID or PMCID, a DOI, a Europe PMC primary ID such as europepmc:MED:17299597, or a paper:<canonical-id> value. Europe PMC resolution is limited to MED-backed records.Response enum values:
paper.identifiers[].namespace: arxiv, doi, pmid, pmcid.paper.content_level: metadata, abstract, full_text.coverage[].status: ok, failed, not_indexed, unsupported.coverage[].failure.reason: invalid_url, unsupported_content_type, blocked, not_found, rate_limited, timeout, upstream_error, internal_error, out_of_scope, robots_disallowed, duplicate, limit_reached, unsupported_filter, unknown_source, idempotency_conflict, invalid_cursor, result_expired, full_text_unavailable, budget_exhausted.warnings[].code: source_failed, source_not_indexed, discovery_truncated, ranking_window_limit, imprecise_date_excluded, content_unavailable, cached_source_stale.Example request:
GET /api/v1/research/papers/metadata?paper_id=arxiv%3A1706.03762
Example query for a Europe PMC record: GET /api/v1/research/papers/metadata?paper_id=pmid%3A17299597.
Metadata inspection costs 1 credit. Europe PMC search is not enabled; the Europe PMC registry entry covers identifier metadata resolution and the separately documented read and citation operations.
Returned europepmc:MED:<id> / europepmc:PMC:<pmcid> primary IDs and public https://europepmc.org/article/MED/<id> / article/PMC/<id> URLs can be reused as paper identifiers. Other Europe PMC source codes are outside this resolver.
| Field | Filled in, of 4 checked | Values in the sample |
|---|---|---|
| name | 4 | “Tenaillon O” and 3 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| paper_id | string | Yes | arXiv identifier, PMID, PMCID, DOI, Europe PMC primary ID or canonical paper ID | 17299597 |
curl -X GET "https://api.crawlora.net/api/v1/research/papers/metadata?paper_id=17299597" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"paper": {
"paper_id": "paper:arxiv:1706.03762",
"primary_id": "arxiv:1706.03762",
"identifiers": [
{
"namespace": "arxiv",
"value": "1706.03762"
}
],
"title": "Attention Is All You Need",
"abstract": "The dominant sequence transduction models are based on complex recurrent or convolutional neural networks...",
"authors": [
{
"name": "Ashish Vaswani"
}
],
"content_level": "abstract",
"source_urls": [
"https://arxiv.org/abs/1706.03762"
],
"retrieved_at": "2026-10-09T04:00:00Z"
},
"coverage": [
{
"source_id": "arxiv",
"status": "ok"
}
],
"warnings": [],
"usage": {
"search_requests": 0,
"fetch_attempts": 1,
"fetched_urls": 1,
"browser_renders": 0,
"input_tokens": 0,
"output_tokens": 0,
"credits_reserved": 0,
"credits_charged": 1,
"credits_released": 0,
"settlement_pending": false
}
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | researchretrieval.PaperMetadataResponse | No | ||||
| data.coverage | array | No | PaperSourceCoverage record, 10 fields: corpus_revision, failure, indexed_at, retrieved_at, source_id, status. Described under Read a research paper API. | |||
| data.paper | researchretrieval.Paper | No | Paper record, 16 fields: abstract, authors, content_level, identifiers, paper_id, primary_id, publication_year, published_at, retrieved_at, source_urls, title, updated_at. Described under Read a research paper API. | |||
| data.usage | retrievaltypes.Usage | No | Usage record, 10 fields: browser_renders, credits_charged, credits_released, credits_reserved, fetch_attempts, fetched_urls, input_tokens, output_tokens, search_requests, settlement_pending. Described under Read a research paper API. | |||
| data.warnings | array | No | ||||
| data.warnings[].code | string | No | source_failed, source_not_indexed, discovery_truncated, ranking_window_limit, imprecise_date_excluded, content_unavailable, cached_source_stale | |||
| data.warnings[].message | string | No | ||||
| data.warnings[].source_id | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 401 | Unauthorized | #/definitions/app.Response |
| 402 | Payment Required | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/research/papers/metadata?paper_id=17299597" \
-H "x-api-key: $CRAWLORA_API_KEY"