Next free-source hunt
We check for new free data every weekday.
Datasets / Research & Grey Literature
help.openalex.org/

OpenAlex API

Freemiumauth: none for basic use; free API key raises the daily budget 10xCC0-1.0#research-grey-literature#papers#citations#historical-data✓ verified Nov 3, 2026

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.

Use in your agent

Load OpenAlex works for a search into pandas and Parquet. Checked against the provider's documentation on Nov 3, 2026.

Raw skill file (/skills/openalex-api.md)Also in our MCP server: call get_ingestion_skill with {"slug": "openalex-api"}.

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

bash
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.

python
"""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

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