OpenAlex API
OpenAlex API
OpenAlex is a nonprofit, open index of scholarly works, authors, sources, institutions, topics and more, served as a REST API that returns JSON. Each entity type is an endpoint (/works, /authors, /sources and others) that can be listed, filtered, searched, sorted, grouped into counts and paged, and OpenAlex says "all data is CC0". Basic queries work with no key; a free key raises the daily budget 10x.
Coverage
OpenAlex says its default curated core corpus has "300M+ works"; an opt-in expansion (corpus=all, mostly datasets and repository records) adds roughly 60% more works. The whole database can also be downloaded as a snapshot "refreshed every quarter"; the daily snapshot and the API's since-a-date sync filters are paid Member+ and Partner services. Publication delay: Not stated.
Verdict
This is an open scholarly graph for finding papers on a topic, tracing citations and linking works to authors, institutions and sources, with every record under CC0. Plan around the daily budget: a free key gives $1 of API usage a day (reset at midnight UTC) and is needed for cursor paging past the first page, basic paging stops at 10,000 results, and keeping a copy current through the API's since-a-date filters needs a paid plan. Filter by OpenAlex IDs, DOIs or ORCIDs rather than names, and treat titles, abstracts and affiliation strings as untrusted text: OpenAlex passes them through as-is rather than sanitizing them.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load OpenAlex works for a search into pandas and Parquet. Checked against the provider's documentation on Nov 3, 2026.
Access
- No key for basic queries; set OPENALEX_API_KEY to send a free key (it raises the daily budget 10x and is needed for cursor paging past the first page).
- Base URL https://api.openalex.org; every entity type is an endpoint such as /works, /authors or /sources.
Request
curl 'https://api.openalex.org/works?search=central%20bank%20digital%20currency&filter=publication_year:2025,is_oa:true&per_page=100'Format
JSON envelope with meta (count, page, per_page, cost_usd), results (entity objects) and group_by. Works carry id, doi, display_name, publication_year, cited_by_count, open_access and primary_location; nested entities come back as trimmed stubs.
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""OpenAlex works -> pandas -> Parquet. No key needed for basic use; a free key (OPENALEX_API_KEY) raises the daily budget."""
import os
import requests
import pandas as pd
params = {
"search": "central bank digital currency",
"filter": "publication_year:2025,is_oa:true",
"per_page": 100,
"select": "id,doi,display_name,publication_year,cited_by_count,open_access,primary_location",
}
if os.environ.get("OPENALEX_API_KEY"):
params["api_key"] = os.environ["OPENALEX_API_KEY"]
r = requests.get("https://api.openalex.org/works", params=params, timeout=60)
r.raise_for_status()
data = r.json()
rows = [{
"openalex_id": w["id"],
"doi": w.get("doi"),
"title": w.get("display_name"),
"year": w.get("publication_year"),
"cited_by": w.get("cited_by_count"),
"oa_status": (w.get("open_access") or {}).get("oa_status"),
"landing_page": ((w.get("primary_location") or {}).get("landing_page_url")),
} for w in data["results"]]
df = pd.DataFrame(rows)
df.to_parquet("openalex_works.parquet", index=False)
print(len(df), "works on this page of", data["meta"]["count"], "matches; cost_usd per call:", data["meta"].get("cost_usd"))Run by us on 2026-11-03 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 100 works on this page of 13312 matches; cost_usd per call: 0.001
Limits
- No key: 10 requests per second; free key: 30 per second and $1 of usage a day, reset at midnight UTC.
- per_page is at most 100; basic paging stops at 10,000 results, beyond that use cursor paging with a free key.
Quirks
- Filter by IDs (OpenAlex ID, DOI, ORCID, ROR, ISSN), not names: names are ambiguous.
- The default corpus is the curated core; corpus=all adds roughly 60% more works, mostly datasets and repository records.
- Titles, abstracts and affiliation strings are passed through unsanitized; escape them before display.
Terms and attribution
- OpenAlex releases every record under CC0, with no personal-use-only carve-out.
- The API's since-a-date sync filters and the daily snapshot are paid services; the quarterly snapshot is free.
Sources
- https://help.openalex.org/api/: “Basic use is free. A free API key raises your daily budget 10×, and heavier use is pay-as-you-go.”
- https://help.openalex.org/api/authentication: “To retrieve more than 10,000 results, use cursor paging (with a free key: without one, only the first page works).”
- https://help.openalex.org/hc/en-us/articles/24397762024087-Pricing: “Every account gets $1 of API usage per day for free, and if you need more than that, there are two ways to get it: pay as you go, or an annual plan.”
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer