# Research Paper Search API - Academic Papers, Studies, Citations (`nabeelbaghoor/academic-research-papers-search-api`) Actor

Search 400M+ academic research papers and scientific studies with the Consensus API: filter by year, study type (RCT, meta-analysis, systematic review), field, journal quartile, sample size and citations, or ask research questions and get cited answers. Bring your own key.

- **URL**: https://apify.com/nabeelbaghoor/academic-research-papers-search-api.md
- **Developed by:** [Nabeel Hassan](https://apify.com/nabeelbaghoor) (community)
- **Categories:** AI, Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 paper returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Research Paper Search API - Academic Papers, Studies, Citations

Search academic research papers and scientific studies with study design filters, or ask a research question and get a cited, evidence based answer, through the Consensus API with your own API key, as one clean dataset row per paper or answer.

Consensus is an AI academic search engine over more than 400 million scholarly records, built on Semantic Scholar, OpenAlex, PubMed, arXiv and its own crawl, and enriched with study type, sample size, population, journal quartile and a one line takeaway per paper. Its REST API on api.consensus.app serves paper search and the Threads research agent. This actor wraps both: give questions or keyword queries and get deduplicated rows you can download as JSON, CSV or Excel, schedule, or feed into literature reviews, evidence tables, RAG pipelines, AI agents, Google Sheets and internal research tools. Bring your own API key.

BYOK, not live-tested: every path, parameter and enum comes from the Consensus OpenAPI document (docs.consensus.app/openapi.json), and the API was probed with an invalid key (each wrapped route answers 401, an invented route answers 404), but the actor has not been run against a live Consensus key.

### What it does

- **Paper search**: papers for each research question or keyword query, ranked by relevance, with title, authors, year and publish date, journal, publisher, volume, pages, DOI, Consensus link, citation count, influential citation count, study type, sample size, number of studies in a meta-analysis, population (human or animal), countries of study, study duration, institutions and the abstract and takeaway.
- **Study filters**: year and month range, study types (RCT, meta-analysis, systematic review, cohort, case-control, cross-sectional and 17 more), human or controlled studies only, minimum sample size, minimum citations, study duration, SCImago journal quartile, peer reviewed only, open access only, clinical guidelines only, fields of study, countries of study, publishers and a preferred journal.
- **Medical mode, relevance scores and full text excerpts**: search only top medical journals and guidelines, add the semantic score, or add up to three query relevant full text passages per paper (paid Consensus plans).
- **Research questions with cited answers**: the Consensus research agent reads about 20 papers (Pro) or about 50 (Deep) and returns a markdown answer whose markers cite numbered papers and their verbatim quotes, plus counts of papers retrieved, screened and included. Several questions run side by side.
- **Research skills**: literature review, citation snowballing, find citations and verify citations workflows in Deep mode.
- **Follow-ups and history**: continue a thread with follow-up questions, read any earlier answer by thread ID, and list your threads with an answer preview.
- **Pay only for results**: refused, empty and unfinished lookups are recorded as a free row that says why, never charged.

### How to get an API key

Sign in to Consensus, open the API and MCP dashboard and create a key. The free plan includes 30 calls a month; Pro and Teams include 500 and Deep 2,000, and paid plans can turn on metered overage at 0.05 USD per call. Paste the key into the API key field, or set the DATA_API_KEY secret. The key is sent only to api.consensus.app in the x-api-key header, never in the URL, and is removed from everything the actor logs.

### Input

| Field | Modes | Description |
| --- | --- | --- |
| `mode` | all | `search` (default), `research`, `followUp`, `getThread` or `listThreads` |
| `queries` | search | Questions or keyword queries, one per line, up to 50 |
| `resultsPerQuery` | search | Papers per query, 1 to 1,000 (default 20) |
| `medicalMode`, `includeSemanticScore`, `includeFullTextChunks` | search | Medical corpus, relevance score, full text excerpts |
| `questions`, `researchBrief` | research, followUp | Research questions (up to 20) and one long brief |
| `agentMode`, `skill` | research, followUp | `pro` or `deep`; a named skill (Deep only) |
| `paperIds`, `collectionIds` | research, followUp | Papers or Library collections to focus on |
| `maxWaitSeconds`, `includeTrace` | research, followUp | Wait per answer (default 600 s), agent trace |
| `threadId` | followUp | The thread to continue |
| `threadIds`, `interactionId` | getThread | Threads to read, optionally one earlier answer |
| `titleQuery` | listThreads | Title substring |
| `yearMin`, `yearMax`, `monthMin`, `monthMax` | search, research | Publication date range |
| `studyTypes`, `fieldsOfStudy` | search, research | Study designs and academic fields |
| `humanOnly`, `controlledOnly`, `excludePreprints`, `openAccessOnly`, `clinicalGuidelinesOnly` | search, research | Yes or no filters |
| `sampleSizeMin`, `citationMin`, `durationMinDays`, `durationMaxDays` | search, research | Numeric filters |
| `journalQuartileBest`, `journalQuartileWorst` | search, research | SCImago quartile range, 1 is top |
| `countries`, `publisherNames`, `journalName` | search, research | Country of study, publishers, preferred journal |
| `maxResults` | all | Row ceiling for the run (default 100) |
| `requestsPerMinute` | all | Pacing, default 50 |
| `apiKey` | all | Your Consensus API key (or the DATA_API_KEY secret) |

Example: randomized trials and meta-analyses on creatine and memory since 2015, top quartile journals only.

```json
{
    "mode": "search",
    "queries": ["does creatine improve memory"],
    "studyTypes": ["rct", "meta-analysis"],
    "yearMin": 2015,
    "humanOnly": true,
    "journalQuartileWorst": "1",
    "resultsPerQuery": 50
}
```

Example: two research questions answered with citations.

```json
{
    "mode": "research",
    "questions": [
        "What does the evidence say about vitamin D supplementation and depression in adults?",
        "Is intermittent fasting more effective than continuous calorie restriction for weight loss?"
    ],
    "agentMode": "pro",
    "excludePreprints": true
}
```

### Example output

An illustrative paper row, shaped like the documented response (values are an example, not real data).

```json
{
    "mode": "search",
    "modeLabel": "Paper search",
    "recordType": "paper",
    "query": "does creatine improve memory",
    "rank": 1,
    "id": "10.1000/example.2023.001",
    "title": "Effects of creatine supplementation on memory in healthy individuals: a systematic review and meta-analysis",
    "authors": ["A. Example", "B. Example"],
    "year": 2023,
    "publishDate": "2023-03-14",
    "journalName": "Example Nutrition Reviews",
    "publisherName": "Example Press",
    "doi": "10.1000/example.2023.001",
    "url": "https://consensus.app/papers/example",
    "citationCount": 120,
    "influentialCitationCount": 9,
    "studyType": "meta-analysis",
    "sampleSize": 225,
    "studyCount": 10,
    "populationType": "human",
    "journalQuartile": 1,
    "isPreprint": false,
    "takeaway": "Creatine supplementation may improve memory performance in healthy individuals, especially older adults.",
    "abstract": "...",
    "fullTextChunks": null,
    "found": true,
    "retrievedAt": "2026-10-22T12:00:00.000Z",
    "note": null
}
```

A research answer row carries `threadId`, `interactionId`, `threadTitle`, `threadUrl`, `status`, `agentMode`, `skill`, `question`, `answer` (markdown with markers such as `[2.1]` for quote 1 of paper 2), `citations` (each with `n`, `paperId`, `title`, `authors`, `year`, `journal`, `doi`, `url` and `snippets` of `marker`, `quote` and `section`), `citedPapers`, `papersRetrieved`, `papersScreened`, `papersIncluded` and, when asked for, `agentTrace`. A thread row carries `threadId`, `threadTitle`, `status`, `preview`, `interactionCount` and `lastActivityAt`.

### FAQ

#### What is the Consensus API?

It is the REST API of Consensus, an AI search engine for peer reviewed research. GET /v1/search returns papers with study metadata and filters, and the Threads endpoints run the Consensus research agent, which writes cited answers. It authenticates with an x-api-key header and is documented at docs.consensus.app.

#### Do I need my own Consensus API key?

Yes. This is a bring-your-own-key actor: it calls Consensus with your key, under your plan and terms. A missing or rejected key ends the run cleanly with a status message that explains what to change, and nothing is charged.

#### How do I find randomized controlled trials or meta-analyses on a topic?

Choose Paper search, enter the topic as a question, and pick rct, meta-analysis or systematic review under Study types. Add Human studies only, a minimum sample size or a journal quartile to narrow it further.

#### How is a research question different from a paper search?

Paper search returns the ranked papers themselves. A research question hands the question to the Consensus research agent, which searches, screens and reads papers and returns a written answer where every claim cites a numbered paper and a verbatim quote. It takes from about one to ten minutes per question.

#### What if a research answer is not ready in time?

Each question waits up to the Wait for answer limit (600 seconds by default). A run still going is saved as a free row with its thread ID; run Get thread with that ID later to collect the answer. Keep the actor run timeout above the wait limit.

#### How many Consensus calls does a run use?

Search is billed by Consensus at one call per 100 papers, rounded up, so this actor asks for pages of up to 100. A research thread is billed by the work the agent does. Polling, Get thread and List threads are reads. The run log reports the exact request count.

#### What are the plan limits?

Paging past the first page of a search, full text excerpts, Deep mode and skills need a paid plan; the page size is capped at your plan's maximum, and no query returns more than 1,000 papers. The API allows about one request a second per plan.

#### What do I pay?

Pay per result: 0.005 USD per paper, 0.02 USD per finished research answer and 0.005 USD per listed thread. Refused, empty and unfinished lookups are never charged. Your Consensus plan is billed separately by Consensus, including any overage at 0.05 USD per call.

### Pricing

| Event | Price | Charged for |
| --- | --- | --- |
| `paper-result` | 0.005 USD | Each paper returned by a search |
| `research-answer` | 0.02 USD | Each finished research answer with citations |
| `thread-record` | 0.005 USD | Each earlier research thread listed |

### Keyword map

Research paper search API, academic search API, scientific papers API, scholarly literature search, peer reviewed studies API, systematic review search, meta-analysis finder, randomized controlled trial search, evidence based answers API, citation API, literature review automation, research agent API, RAG for research papers, Consensus API, Consensus app API, academic research data.

### Terms and data use

Consensus describes its API as a way to bring Consensus results into your internal tools, workflows and agents, and its Terms of Service grant a personal, non transferable, non sublicensable licence. Treat the results as for your own internal research use: do not resell or republish them as a dataset without written permission from Consensus. The docs encourage caching on the full parameter set with a short refresh time so new literature still appears, and ask you to keep each excerpt with its paper's DOI and link. Paper abstracts and excerpts remain the copyright of their publishers. This actor is not affiliated with or endorsed by Consensus.

# Actor input Schema

## `apiKey` (type: `string`):

Your own Consensus API key, the value sent in the x-api-key header. Create one in the API and MCP dashboard of your Consensus account; the free plan includes 30 calls a month. Optional only when the DATA_API_KEY secret is set on the actor; otherwise the run ends with an explanation and nothing is charged.

## `mode` (type: `string`):

Paper search returns academic papers for each query, with study filters. Research question asks the Consensus research agent and returns a cited answer. Follow-up question continues an earlier thread. Get thread reads an earlier answer by thread ID. List threads lists your earlier research threads.

## `queries` (type: `array`):

Paper search only. One research question or keyword query per line, up to 50. Plain language questions work best.

## `resultsPerQuery` (type: `integer`):

Paper search only. The most papers to return for each query, up to the 1,000 Consensus allows. Consensus bills one call per 100 papers, and paging past the first page needs a paid plan.

## `medicalMode` (type: `boolean`):

Paper search only. Search only top medical journals and clinical guidelines, about 8 million documents.

## `includeSemanticScore` (type: `boolean`):

Paper search only. Add the relevance score to each of the top 50 papers.

## `includeFullTextChunks` (type: `boolean`):

Paper search only. Add up to 3 query relevant full text passages per paper. Needs a paid Consensus plan (Pro, Deep, Teams or Enterprise).

## `questions` (type: `array`):

Research question and Follow-up question. One question per line, up to 20; each starts its own research run (follow-ups are asked in order in the same thread). The agent asks nothing back, so make each one a complete brief.

## `researchBrief` (type: `string`):

Research question and Follow-up question. One longer brief of up to 10,000 characters, asked in addition to the lines above.

## `agentMode` (type: `string`):

Research question and Follow-up question. Pro reads about 20 papers and suits almost every question. Deep reads about 50 papers, writes a structured report and needs a paid plan.

## `skill` (type: `string`):

Research question and Follow-up question. Run a named research workflow instead of the agent plan. Needs agent depth Deep.

## `paperIds` (type: `array`):

Research question and Follow-up question. Up to 50 Consensus paper IDs (paperId in a research answer citation) to focus the research on.

## `collectionIds` (type: `array`):

Research question and Follow-up question. Up to 10 numeric Consensus Library collection IDs to focus the research on.

## `maxWaitSeconds` (type: `integer`):

Research question and Follow-up question. How long to wait for each answer. Consensus suggests about 180 seconds for Pro and 600 for Deep. A run still going is saved as a free row with its thread ID, to collect later with Get thread.

## `includeTrace` (type: `boolean`):

Research question, Follow-up question and Get thread. Add the plain English list of searches and papers the agent read.

## `threadId` (type: `string`):

Follow-up question only. The threadId of an earlier research answer, from a research row or List threads.

## `threadIds` (type: `array`):

Get thread only. One thread ID per line, up to 100.

## `interactionId` (type: `string`):

Get thread only. Read this answer of the thread instead of the latest one.

## `titleQuery` (type: `string`):

List threads only. Only threads whose title contains this text, case insensitive.

## `yearMin` (type: `integer`):

Paper search and research questions. Exclude papers published before this year.

## `yearMax` (type: `integer`):

Paper search and research questions. Exclude papers published after this year.

## `monthMin` (type: `integer`):

Paper search and research questions. First month within the from year (needs From year).

## `monthMax` (type: `integer`):

Paper search and research questions. Last month within the to year (needs To year).

## `studyTypes` (type: `array`):

Paper search and research questions. Only include these study designs.

## `fieldsOfStudy` (type: `array`):

Paper search and research questions. Only include these academic fields. Research questions take the first one.

## `humanOnly` (type: `boolean`):

Paper search and research questions.

## `controlledOnly` (type: `boolean`):

Paper search and research questions.

## `excludePreprints` (type: `boolean`):

Paper search and research questions. Exclude preprints.

## `openAccessOnly` (type: `boolean`):

Paper search and research questions.

## `clinicalGuidelinesOnly` (type: `boolean`):

Paper search and research questions. Only papers classified as clinical guidelines.

## `sampleSizeMin` (type: `integer`):

Paper search and research questions. Exclude studies with fewer participants.

## `citationMin` (type: `integer`):

Paper search and research questions. Exclude papers cited fewer times.

## `durationMinDays` (type: `integer`):

Paper search and research questions.

## `durationMaxDays` (type: `integer`):

Paper search and research questions.

## `journalQuartileBest` (type: `string`):

Paper search and research questions. SCImago journal rank: exclude journals ranked better than this quartile. Usually left at Any.

## `journalQuartileWorst` (type: `string`):

Paper search and research questions. SCImago journal rank: exclude journals ranked below this quartile. Q1 keeps top quartile journals only.

## `countries` (type: `array`):

Paper search and research questions. Two letter ISO 3166 codes of where the study was run, such as us, gb or de.

## `publisherNames` (type: `array`):

Paper search and research questions. Publisher display names, one per line. Research questions take the first one.

## `journalName` (type: `string`):

Paper search and research questions. A journal name such as Nature. Search ranks it higher without excluding other journals.

## `maxResults` (type: `integer`):

The most rows this run returns across all queries. Each row with data is charged once.

## `requestsPerMinute` (type: `integer`):

Pacing ceiling for calls to the Consensus API, which allows about one request a second per plan.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "does creatine improve memory"
  ],
  "resultsPerQuery": 20,
  "medicalMode": false,
  "includeSemanticScore": false,
  "includeFullTextChunks": false,
  "agentMode": "pro",
  "skill": "none",
  "maxWaitSeconds": 600,
  "includeTrace": false,
  "humanOnly": false,
  "controlledOnly": false,
  "excludePreprints": false,
  "openAccessOnly": false,
  "clinicalGuidelinesOnly": false,
  "journalQuartileBest": "any",
  "journalQuartileWorst": "any",
  "maxResults": 100,
  "requestsPerMinute": 50
}
```

# Actor output Schema

## `records` (type: `string`):

One row per record returned for the chosen mode.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "does creatine improve memory"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nabeelbaghoor/academic-research-papers-search-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["does creatine improve memory"] }

# Run the Actor and wait for it to finish
run = client.actor("nabeelbaghoor/academic-research-papers-search-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "does creatine improve memory"
  ]
}' |
apify call nabeelbaghoor/academic-research-papers-search-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/academic-research-papers-search-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7bK2Iti7ITPz27jtv/builds/Fsu4dwiimQVUaJfVv/openapi.json
