# Academic Paper Search – Google Scholar Alternative (API) (`gazidev/academic-paper-search`) Actor

Search 150M+ research papers by keyword, author, journal or DOI: title, authors, ORCID, journal, year, abstract, citation count, open-access PDF link (Unpaywall), APA and BibTeX citations. Sort by relevance, newest or most cited. Official Crossref API. $1 per 1,000 papers.

- **URL**: https://apify.com/gazidev/academic-paper-search.md
- **Developed by:** [Cemal Atakli](https://apify.com/gazidev) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 papers

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

## Academic Paper Search – Google Scholar Alternative (Crossref API + Open-Access PDFs)

Search **150+ million research papers** by keyword, author, journal or DOI and get clean, structured metadata: **title, authors (with ORCID and affiliations), journal, year, volume/pages, abstract, citation count, subjects, funders**, plus a **legal free PDF link** when one exists (Unpaywall) and ready-made **APA and BibTeX citations**.

It uses the official **Crossref REST API** and **Unpaywall**, so there is no Google Scholar blocking, no CAPTCHA and no proxy. **$1 per 1,000 papers.** Not-found DOIs and filtered papers are free.

### What it does

- **Keyword search** across journal articles, conference papers, preprints, books, chapters, dissertations, reports and datasets.
- **Sort by relevance, most cited, newest or oldest.** "Most cited" keeps only works whose title or abstract contains every query word, so famous papers rise to the top instead of loosely related ones.
- **Author search** (`author`), alone or combined with keywords; every listed author name must match. **Journal / conference filter** (`journal`).
- **DOI lookup** in bulk (`10.1038/...`, `https://doi.org/...` and `doi:` prefixes are accepted).
- **Filters:** year range, work type, minimum citations, only papers with an abstract, **only open access**.
- **Open access (Unpaywall):** `isOpenAccess`, `oaStatus` (gold, green, hybrid, bronze), a direct **free PDF link**, landing page, version and license.
- **Citations:** APA 7 string and a BibTeX entry for every paper.
- **Alerts:** `onlyNew` + sort `newest` on a schedule returns only papers you have not seen before.
- **Optional OpenAlex enrichment** with your free OpenAlex key: topics, keywords, author institutions and countries, FWCI and the OpenAlex citation count.

### Use cases

- **Literature reviews and systematic reviews:** export every paper on a topic with abstracts and DOIs to a spreadsheet or reference manager (BibTeX).
- **Research monitoring:** weekly alerts for new papers in your field or by specific authors.
- **AI and RAG pipelines:** feed abstracts and open-access PDF links to LLMs.
- **Bibliometrics:** citation counts, journals, funders and publication trends.
- **Sales and recruiting in science:** find active researchers by topic, with ORCID and affiliations.

### Input example

```json
{
  "queries": ["large language models"],
  "sort": "mostCited",
  "yearFrom": 2023,
  "maxResultsPerQuery": 50,
  "includeOpenAccess": true
}
```

Author alert:

```json
{ "author": "Geoffrey Hinton", "sort": "newest", "maxResultsPerQuery": 20, "onlyNew": true }
```

### Output example

```json
{
  "doi": "10.1038/nature12373",
  "title": "Nanometre-scale thermometry in a living cell",
  "authors": ["G. Kucsko", "P. C. Maurer", "N. Y. Yao", "..."], "firstAuthor": "G. Kucsko",
  "journal": "Nature", "publisher": "Springer Science and Business Media LLC", "type": "journal-article",
  "publishedDate": "2013-07-31", "year": 2013, "volume": "500", "issue": "7460", "pages": "54-58",
  "citationCount": 1849,
  "isOpenAccess": true, "oaStatus": "bronze",
  "oaPdfUrl": "https://www.nature.com/articles/nature12373.pdf",
  "citationApa": "Kucsko, G., Maurer, P. C., … (2013). Nanometre-scale thermometry in a living cell. Nature, 500(7460), 54-58. https://doi.org/10.1038/nature12373",
  "doiUrl": "https://doi.org/10.1038/nature12373"
}
```

### Pricing (pay per event)

| Event | Price |
|---|---|
| Paper (metadata + open-access lookup + citations) | **$0.001** |
| Actor start | $0.00005 |

Invalid or not-found DOIs, filtered papers and `onlyNew` repeats are **free**. Set a *maximum cost per run* and the Actor stops cleanly at that limit.

| Actor | Price |
|---|---|
| **This Actor** | **$0.001 per paper** |
| themineworks/academic-research-mcp | $0.0625 per search call |

Competitor price from the Apify Store on 2026-10-18.

### FAQ

**Is this the same as Google Scholar?** No. It searches Crossref, the DOI registry used by almost all journals, publishers and many preprint servers. It has no Google Scholar data and does not access Google. Citation counts are Crossref's (citations between Crossref-registered works), which are usually lower than Google Scholar's.

**Why do some papers have no abstract?** Abstracts are included when the publisher deposits them with Crossref, which covers a large share of recent papers but not all.

**Are the PDF links legal?** Yes. Unpaywall only lists free copies hosted by publishers or repositories.

**DOIs that are "not found"?** DOIs from DataCite (datasets, Zenodo, some repositories) are not in Crossref. They are returned free.

### Data sources

Crossref REST API (metadata is free to reuse), Unpaywall (open-access locations), and optionally OpenAlex (CC0). Not affiliated with Crossref, Unpaywall, OpenAlex or Google.

### Use with AI agents (Apify MCP)

Works as a tool in the [Apify MCP server](https://mcp.apify.com): "Find the 20 most cited papers on retrieval-augmented generation since 2023 with free PDFs."

# Actor input Schema

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

Keywords or a title, e.g. 'large language models', 'microplastics drinking water'. Each query is searched separately.

## `dois` (type: `array`):

Look up papers by DOI (10.1038/nature12373, https://doi.org/... or doi: prefixes are fine).

## `author` (type: `string`):

Restrict to an author name (combined with queries, or alone to list an author's papers).

## `journal` (type: `string`):

Restrict to a journal or conference name, e.g. 'Nature' or 'NeurIPS'.

## `yearFrom` (type: `integer`):

Published in or after this year.

## `yearTo` (type: `integer`):

Published in or before this year.

## `types` (type: `array`):

Leave empty for all types.

## `sort` (type: `string`):

Most cited uses the Crossref citation count.

## `maxResultsPerQuery` (type: `integer`):

0 = no limit (careful: broad queries match millions of works).

## `minCitations` (type: `integer`):

Skip papers cited fewer times (free).

## `onlyWithAbstract` (type: `boolean`):

Crossref has abstracts for a large share of recent papers, depending on the publisher.

## `includeOpenAccess` (type: `boolean`):

Adds isOpenAccess, oaStatus (gold/green/hybrid/bronze), a free PDF link and its license when one exists.

## `onlyOpenAccess` (type: `boolean`):

Keep only papers with a legal free full-text copy.

## `includeCitations` (type: `boolean`):

Ready-to-paste reference strings for each paper.

## `openAlexApiKey` (type: `string`):

Free key from openalex.org/settings/api. Adds topics, keywords, author institutions, countries, FWCI and the OpenAlex citation count. Not required.

## `onlyNew` (type: `boolean`):

For scheduled alerts: skip papers earlier runs with the same state key already returned (free). Use with sort 'newest'.

## `stateKey` (type: `string`):

Separate alerts keep separate 'seen' lists.

## Actor input object example

```json
{
  "queries": [
    "large language models"
  ],
  "sort": "relevance",
  "maxResultsPerQuery": 20,
  "minCitations": 0,
  "onlyWithAbstract": false,
  "includeOpenAccess": true,
  "onlyOpenAccess": false,
  "includeCitations": true,
  "onlyNew": false,
  "stateKey": "default"
}
```

# Actor output Schema

## `papers` (type: `string`):

No description

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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": [
        "large language models"
    ],
    "maxResultsPerQuery": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("gazidev/academic-paper-search").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": ["large language models"],
    "maxResultsPerQuery": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("gazidev/academic-paper-search").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": [
    "large language models"
  ],
  "maxResultsPerQuery": 20
}' |
apify call gazidev/academic-paper-search --silent --output-dataset

```

## MCP server setup

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

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/vTr2R1TFH3jS0huFa/builds/dMelpi8Lz9RVRiIRJ/openapi.json
