REST API · JSON · through RapidAPI
Scholarly Paper Search (OpenAlex): DOI, year, venue, citations, open-access link API
Search the OpenAlex index of scholarly works by keyword, year range and open-access status, and get each paper's title, DOI, year, venue, type, citation count and open-access link.
Read from the official source when you call (api.openalex.org); no personal data. GET /v1/scholarly-search answers {"product", "count", "items", "fetched_at"}.
Source: OpenAlex, under CC0. Every answer carries this attribution in its sources field.
Get a key on RapidAPI plans and pricing are on the listing; one key covers every endpoint.
Parameters
| Parameter | Type | What it does | Example |
|---|---|---|---|
query | string | Keywords to search for in titles, abstracts and full text. | "graph neural networks" |
year_from | integer | First publication year to include. | 2020 |
year_to | integer | Last publication year to include. | 2026 |
oa_status | string | Keep only works with this open-access status (empty: all works). One of: , gold, green, hybrid, bronze, diamond, closed. | "green" |
limit | integer | At most this many results (1–1000, default 100). | 20 |
What each result holds
| Field | Type |
|---|---|
openalex_id | url |
title | text |
doi | text |
year | integer |
publication_date | date |
venue | text |
type | text |
cited_by_count | integer |
is_open_access | bool |
oa_status | text |
open_access_url | url |
language | text |
Call it
With curl:
curl -G "https://scholarly-paper-search-api-openalex-doi-citations.p.rapidapi.com/v1/scholarly-search" \ --data-urlencode 'query=graph neural networks' \ --data-urlencode year_from=2020 \ --data-urlencode year_to=2026 \ --data-urlencode oa_status=green \ --data-urlencode limit=20 \ -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \ -H "X-RapidAPI-Host: scholarly-paper-search-api-openalex-doi-citations.p.rapidapi.com"
With Python (pip install requests):
import os, requests
r = requests.get(
"https://scholarly-paper-search-api-openalex-doi-citations.p.rapidapi.com/v1/scholarly-search",
params={'query': 'graph neural networks',
'year_from': 2020,
'year_to': 2026,
'oa_status': 'green',
'limit': 20},
headers={"X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"], "X-RapidAPI-Host": "scholarly-paper-search-api-openalex-doi-citations.p.rapidapi.com"},
timeout=120,
)
for item in r.json()["items"]:
print(item)
For code and AI agents that pick tools at run time, GET /v1/products lists every endpoint with its parameters and fields.
Questions
How fresh is it? Each call reads the official source then; an identical query within 15 minutes is answered from a cache.
What if the source is down? The answer says so: a 502, or "partial": true when only some of its requests failed.