OpenAlex Works Scraper
Search OpenAlex scholarly works or fetch one exact OpenAlex work by ID or DOI through the public OpenAlex API, returning normalized paper metadata, authors, institutions, publication venues, citation counts, open-access links, concepts, topics, and optional abstract text.
Overview
OpenAlex Works Scraper gives agents a public-API route into OpenAlex scholarly work metadata. Search by keyword with optional publication date, year, type, open-access, and raw OpenAlex filters, or fetch a known OpenAlex work ID, DOI, or DOI URL. The tool normalizes OpenAlex JSON into compact paper rows with OpenAlex IDs, DOI URLs, titles, publication dates, authors, ORCIDs, institutions, countries, venues, publishers, citation and reference counts, open-access status, landing pages, PDF URLs, concepts, topics, and reconstructed abstracts when requested. It is designed for literature discovery, bibliometric analysis, RAG corpus triage, open-access harvesting, institution research maps, citation monitoring, and research-agent workflows that need open scholarly metadata without publisher scraping.
Last validated: Jul 3, 2026
Playground
Input
mode"search" | "work"default: "search"Search OpenAlex works or fetch one exact work.
pageintegerdefault: 1OpenAlex search page number.
sort"relevance_score" | "cited_by_count:desc" | "publication_date:desc" | "publication_year:desc"default: "relevance_score"OpenAlex sort expression for search mode.
typestringOpenAlex work type such as article, preprint, book-chapter, or dataset.
querystringKeyword query for OpenAlex works search.
filterstringOptional raw OpenAlex filter expression, e.g. type:article,authorships.institutions.country_code:US.
work_idstringOpenAlex work ID, OpenAlex URL, DOI, DOI URL, or DOI-prefixed value, e.g. W2919115771, https://openalex.org/W2919115771, 10.1038/nature14539, or https://doi.org/10.1038/nature14539.
per_pageintegerdefault: 10Maximum works to return in search mode.
is_open_accessbooleanFilter search results to open-access or closed works.
include_abstractbooleandefault: trueReconstruct abstract text from OpenAlex inverted-index abstracts when available.
publication_yearintegerExact publication year filter.
to_publication_datestringLatest publication date filter in YYYY, YYYY-MM, or YYYY-MM-DD format.
from_publication_datestringEarliest publication date filter in YYYY, YYYY-MM, or YYYY-MM-DD format.
Output
modestringrequiredMode used for this run
countintegerrequiredNumber of returned works
querystringOpenAlex search query used
worksobject[]requiredStructured OpenAlex work records
work_idstringExact work identifier used
source_urlstringrequiredOpenAlex API URL fetched
total_matchesintegerTotal OpenAlex matches reported by the API
Examples
deep-learning-work
{
"mode": "work",
"work_id": "10.1038/nature14539"
}llm-search
{
"mode": "search",
"query": "large language models",
"per_page": 2,
"from_publication_date": "2024-01-01"
}Use cases
FAQ
Does OpenAlex Works Scraper require an API key?
No. Version 0.1 uses the public OpenAlex API and keeps each run to one bounded request. OpenAlex may enforce request budgets, so high-volume workflows should use OpenAlex's current authentication and pricing guidance directly.
Does it download PDFs or crawl publisher pages?
No. It returns metadata, landing-page URLs, open-access URLs, and PDF URLs when OpenAlex provides them. It does not download PDFs, parse full text, or scrape publisher websites.
Is this tool affiliated with OpenAlex?
No. OpenAlex is operated by OurResearch. This Better Fetch tool uses public OpenAlex API data and is not endorsed by or affiliated with OpenAlex or OurResearch.
Use it anywhere
MCP (Claude, Cursor, any client)
# Add the Better Fetch MCP connector (or paste the URL into # Claude → Settings → Connectors → Add custom connector): claude mcp add --transport http better-fetch https://betterfetch.co/api/mcp \ --header "Authorization: Bearer bf_your_key_here" # Then ask for the tool by name: openalex_works_scraper
REST
curl -sS -X POST "https://betterfetch.co/api/tools/openalex_works_scraper/run" \
-H "Authorization: Bearer bf_your_key_here" \
-H "Content-Type: application/json" \
-d '{"input": {"mode":"work","work_id":"10.1038/nature14539"}}'Run locally
git clone https://github.com/better-fetch/tools/tree/main/tools/openalex-works-scraper && cd openalex-works-scraper && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"mode":"work","work_id":"10.1038/nature14539"}'