Research Papers API for Agents
Pricing
from $0.01 / 1,000 results
Research Papers API for Agents
Search OpenAlex, arXiv and Crossref in one unified, token-efficient JSON schema built for AI research agents.
Research Papers API for Agents
Pricing
from $0.01 / 1,000 results
Search OpenAlex, arXiv and Crossref in one unified, token-efficient JSON schema built for AI research agents.
You can access the Research Papers API for Agents programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "5VYWP3LHVEd88NeYu" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/westerly_breaker~research-papers-api/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-westerly_breaker-research-papers-api", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/westerly_breaker~research-papers-api/runs": { "post": { "operationId": "runs-sync-westerly_breaker-research-papers-api", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/westerly_breaker~research-papers-api/run-sync": { "post": { "operationId": "run-sync-westerly_breaker-research-papers-api", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "query" ], "properties": { "query": { "title": "Search query", "type": "string", "description": "The main search keyword(s) or phrase, e.g. \"large language models\", \"CRISPR gene editing\". Required. Matched as a phrase/topic search against each requested source (title/abstract/full-text depending on the source)." }, "sources": { "title": "Sources", "type": "array", "description": "Which open scholarly API(s) to query. \"openalex\" (richest: citations, concepts, open-access links, DOI) is the default. Add \"arxiv\" for preprints (no citation data) and/or \"crossref\" (strong DOI/venue coverage, abstracts rare). When multiple sources are requested, results are round-robin mixed across them before max_items is applied, not just filled from the first-listed source. Papers found in more than one source are deduplicated by DOI within a run.", "items": { "type": "string", "enum": [ "openalex", "arxiv", "crossref" ], "enumTitles": [ "OpenAlex", "arXiv", "Crossref" ] }, "default": [ "openalex" ] }, "year_from": { "title": "Published from year", "minimum": 1900, "maximum": 2100, "type": "integer", "description": "Only return papers published in or after this year, e.g. 2020. Omit to skip this filter entirely (no lower bound)." }, "min_citations": { "title": "Minimum citations", "minimum": 0, "type": "integer", "description": "Only return papers with at least this many citations. Note: arXiv exposes no citation data at all, so with this filter set, arXiv-sourced results will always be excluded (their citation count is always unknown, not zero). Omit to skip this filter entirely." }, "open_access_only": { "title": "Open access only", "type": "boolean", "description": "If true, only return papers with a usable open-access PDF link (`oa_pdf_url` non-null). Crossref rarely has a reliable open-access signal (see README), so this filter mostly narrows OpenAlex/arXiv results.", "default": false }, "fields": { "title": "Output fields", "type": "array", "description": "Which output fields to include per paper, for token efficiency (e.g. omit 'concepts' and 'abstract' if you only need titles/authors/citations). Leave empty to return every field. 'source' and 'title' are always included regardless of this setting.", "items": { "type": "string", "enum": [ "source", "title", "authors", "year", "venue", "citations", "doi", "abstract", "oa_pdf_url", "concepts", "url" ], "enumTitles": [ "source", "title", "authors", "year", "venue", "citations", "doi", "abstract", "oa_pdf_url", "concepts", "url" ] }, "default": [] }, "include_abstract": { "title": "Include abstract", "type": "boolean", "description": "Whether to fetch/return the abstract at all. Abstracts are the most token-expensive field in the output — set this to false if you only need titles/metadata. When false, 'abstract' is always null regardless of the 'fields' setting.", "default": true }, "max_items": { "title": "Max items", "minimum": 1, "maximum": 200, "type": "integer", "description": "Maximum number of UNIQUE papers to return in total, across all requested sources combined (after cross-source DOI deduplication). Must be between 1 and 200. Each paper returned bills one 'paper-result' event, so lowering this caps cost.", "default": 25 } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Research Papers API for Agents from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: