openalex
Search and retrieve scholarly metadata from the OpenAlex API — a free, open catalog of 270M+ works, 90M+ authors, and 100K+ sources. Use this skill whenever the user wants to query OpenAlex for works, authors, institutions, sources, topics, publishers, or funders. Trigger on phrases like "search OpenAlex for X", "find papers in OpenAlex", "OpenAlex works by author Y", "get institution metadata from OpenAlex", "look up this DOI in OpenAlex", "how many works does institution X have in OpenAlex", or any request that specifically involves the OpenAlex API or database. Also trigger when the user pastes an OpenAlex ID (like W1234567890 or A5023888391) or mentions OpenAlex by name in any research context. This skill complements the semantic-scholar skill — use OpenAlex when the user asks for it specifically, when they need institution/funder/topic data that Semantic Scholar doesn't cover, or when they want open-access filtering and aggregation features unique to OpenAlex.
Best use case
openalex is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Search and retrieve scholarly metadata from the OpenAlex API — a free, open catalog of 270M+ works, 90M+ authors, and 100K+ sources. Use this skill whenever the user wants to query OpenAlex for works, authors, institutions, sources, topics, publishers, or funders. Trigger on phrases like "search OpenAlex for X", "find papers in OpenAlex", "OpenAlex works by author Y", "get institution metadata from OpenAlex", "look up this DOI in OpenAlex", "how many works does institution X have in OpenAlex", or any request that specifically involves the OpenAlex API or database. Also trigger when the user pastes an OpenAlex ID (like W1234567890 or A5023888391) or mentions OpenAlex by name in any research context. This skill complements the semantic-scholar skill — use OpenAlex when the user asks for it specifically, when they need institution/funder/topic data that Semantic Scholar doesn't cover, or when they want open-access filtering and aggregation features unique to OpenAlex.
Teams using openalex should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/openalex/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How openalex Compares
| Feature / Agent | openalex | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Search and retrieve scholarly metadata from the OpenAlex API — a free, open catalog of 270M+ works, 90M+ authors, and 100K+ sources. Use this skill whenever the user wants to query OpenAlex for works, authors, institutions, sources, topics, publishers, or funders. Trigger on phrases like "search OpenAlex for X", "find papers in OpenAlex", "OpenAlex works by author Y", "get institution metadata from OpenAlex", "look up this DOI in OpenAlex", "how many works does institution X have in OpenAlex", or any request that specifically involves the OpenAlex API or database. Also trigger when the user pastes an OpenAlex ID (like W1234567890 or A5023888391) or mentions OpenAlex by name in any research context. This skill complements the semantic-scholar skill — use OpenAlex when the user asks for it specifically, when they need institution/funder/topic data that Semantic Scholar doesn't cover, or when they want open-access filtering and aggregation features unique to OpenAlex.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# OpenAlex API Skill
Query the [OpenAlex](https://openalex.org) open scholarly metadata catalog via its REST API using curl.
**Base URL:** `https://api.openalex.org`
**Auth:** API key required (free at https://openalex.org/settings/api). Pass as `?api_key=KEY`.
Store in env var `OPENALEX_API_KEY` and use `api_key=$OPENALEX_API_KEY` in queries.
---
## Entity Endpoints
| Endpoint | Description |
|----------|-------------|
| `/works` | Scholarly documents (articles, books, datasets) |
| `/authors` | Researcher profiles with disambiguated identities |
| `/sources` | Journals, repositories, conferences |
| `/institutions` | Universities, research organizations |
| `/topics` | Subject classifications (3-level hierarchy) |
| `/publishers` | Publishing organizations |
| `/funders` | Funding agencies |
| `content.openalex.org/works/{id}.pdf` | PDF download ($0.01 each) |
Singleton lookups are free (e.g., `/works/W2741809807`). List/filter queries cost $0.0001; search queries cost $0.001.
---
## Critical: Two-Step ID Resolution
Names are ambiguous — never filter by display name directly. Resolve to an OpenAlex ID first, then use that ID in filters.
```bash
# WRONG
/works?filter=author_name:Einstein
# CORRECT — two steps
# 1. Search for author → get ID
curl "https://api.openalex.org/authors?search=Einstein&api_key=$OPENALEX_API_KEY"
# Response includes: id = "A5012345678"
# 2. Filter works by that ID
curl "https://api.openalex.org/works?filter=authorships.author.id:A5012345678&api_key=$OPENALEX_API_KEY"
```
This applies to all entities: authors, institutions, sources, topics, publishers, funders.
---
## Query Parameters
```
api_key= Required. Free key from openalex.org/settings/api
filter= Filter results (see syntax below)
search= Full-text search across title/abstract/fulltext
sort= Sort results (e.g., cited_by_count:desc)
per_page= Results per page (default 25, max 100)
page= Page number
sample= Random sample size (max 10,000)
seed= Reproducible sampling seed
select= Limit returned fields (e.g., select=id,title,publication_year)
group_by= Aggregate results by a field
```
All parameters use **snake_case**.
---
## Filter Syntax
```bash
# Single filter
?filter=publication_year:2024
# Multiple filters (AND) — comma-separated
?filter=publication_year:2024,is_oa:true
# Multiple values (OR) — pipe-separated, up to 100 values
?filter=type:article|book|dataset
# Negation
?filter=type:!paratext
# Comparison operators
?filter=cited_by_count:>100
?filter=publication_year:<2020
?filter=publication_year:2020-2024
```
---
## Common Filter Fields
### Works
```
authorships.author.id Author's OpenAlex ID
authorships.institutions.id Institution's OpenAlex ID
primary_location.source.id Journal/source OpenAlex ID
topics.id Topic ID
publication_year Year (integer)
cited_by_count Citation count (integer)
is_oa Open access (boolean)
type article, book, dataset, etc.
has_fulltext Has searchable fulltext (boolean)
```
### Authors
```
last_known_institutions.id Current institution
works_count Number of works
cited_by_count Total citations
```
---
## Common Patterns with curl Examples
### Find works by author (two-step)
```bash
# 1. Find the author
curl -s "https://api.openalex.org/authors?search=Heather+Piwowar&api_key=$OPENALEX_API_KEY" | jq '.results[0] | {id, display_name, works_count}'
# 2. Get their works
curl -s "https://api.openalex.org/works?filter=authorships.author.id:A5023888391&per_page=10&select=id,title,publication_year,cited_by_count&api_key=$OPENALEX_API_KEY" | jq '.results[] | "\(.publication_year) [\(.cited_by_count)] \(.title)"'
```
### Find works from an institution
```bash
# 1. Find the institution
curl -s "https://api.openalex.org/institutions?search=MIT&api_key=$OPENALEX_API_KEY" | jq '.results[0] | {id, display_name}'
# 2. Get highly-cited works
curl -s "https://api.openalex.org/works?filter=authorships.institutions.id:I63966007,cited_by_count:>100&sort=cited_by_count:desc&per_page=10&select=id,title,publication_year,cited_by_count&api_key=$OPENALEX_API_KEY" | jq '.results[]'
```
### Bulk DOI lookup (up to 100)
```bash
curl -s "https://api.openalex.org/works?filter=doi:10.1234/a|10.1234/b|10.1234/c&per_page=100&api_key=$OPENALEX_API_KEY"
```
### Random sample with seed
```bash
curl -s "https://api.openalex.org/works?sample=100&seed=42&select=id,title,publication_year&api_key=$OPENALEX_API_KEY"
```
### Aggregate by field
```bash
curl -s "https://api.openalex.org/works?filter=publication_year:2024&group_by=topics.id&api_key=$OPENALEX_API_KEY"
```
### Single work by OpenAlex ID
```bash
curl -s "https://api.openalex.org/works/W2741809807?api_key=$OPENALEX_API_KEY" | jq '{title, publication_year, cited_by_count, type}'
```
---
## Limits
| Limit | Value |
|-------|-------|
| OR values per filter | 100 |
| `per_page` max | 100 |
| `sample` max | 10,000 |
| Basic paging limit | 10,000 results |
For larger result sets, use cursor-based pagination (pass `cursor=*` on the first request, then use the returned `next_cursor` value).
---
## Error Handling
Implement exponential backoff for 429 (rate limit) and 500 (server error) responses. A simple retry pattern:
```bash
# In practice, just retry the curl command after a brief pause if you get a non-200 response.
# For scripting, use the Python pattern:
# response = requests.get(url, timeout=30)
# if response.status_code in [429, 500]: time.sleep(2 ** attempt)
```
---
## Deprecated Features (Avoid)
| Old | Replacement |
|-----|-------------|
| Concepts | Topics |
| `/text` endpoint | Do not use |
| `host_venue` | `primary_location` |
| `grants` | `funders` and `awards` |
---
## Choosing Between OpenAlex and Semantic Scholar
Both are academic metadata APIs. Choose based on what the user needs:
| Need | Best choice |
|------|-------------|
| Institution/funder/topic metadata | **OpenAlex** (S2 doesn't have these) |
| Open access filtering (`is_oa`) | **OpenAlex** |
| Aggregation (`group_by`) | **OpenAlex** |
| Citation graphs (who cites whom) | **Semantic Scholar** (dedicated endpoints) |
| Abstract text in results | **Semantic Scholar** (richer abstract coverage) |
| Boolean search (AND/OR/NOT in query) | **Semantic Scholar** bulk search |
| Author h-index | **Semantic Scholar** |
| User says "OpenAlex" | **OpenAlex** |
| User says "Semantic Scholar" or "S2" | **Semantic Scholar** |
When in doubt and the user doesn't specify, prefer Semantic Scholar for paper search and OpenAlex for institutional/funder/topic analytics.
---
## Workflow Tips
- Use `select=` to request only the fields you need — smaller responses, lower cost.
- Set `per_page=100` when you need more than the default 25 results.
- For "papers about X" queries, combine `search=` with `filter=cited_by_count:>50` to surface impactful work.
- When displaying results, format as a table with title, year, and citation count.
- Batch DOI lookups with the pipe operator instead of making one request per DOI.Related Skills
semantic-scholar
Search and retrieve research paper metadata using the Semantic Scholar Academic Graph API via curl. Use this skill whenever the user wants to find academic papers, look up citations, get paper details by DOI/arXiv ID/title, explore an author's publications, or fetch reference/citation lists. Trigger on phrases like "find papers on X", "look up this paper", "how many citations does X have", "papers citing X", "search for research about X", "get metadata for arxiv:...", or any request to explore academic literature. Always use this skill when the task involves academic paper search or metadata retrieval — even if the user just pastes a DOI or arXiv link and wants info about it.
keine-update-maps
Use this skill when creating or editing a topic map in the Keine knowledge base. Trigger after ingesting a set of related entries on a topic, or when asked to summarize, compare, survey, or give an overview of a subject area. Also use when a user asks a broad question and you want to leave a synthesized overview for future agents or readers. Maps are different from entries — they synthesize rather than document.
keine-update-entries
Use this skill when creating a new knowledge entry or editing an existing one in the Keine knowledge base. Trigger when asked to add, ingest, document, or update any piece of knowledge — a URL, PDF, book, concept, note, or research finding. Use this skill even when the user doesn't say "entry" — if they want to capture or update knowledge, this is the skill.
keine-research
Use this skill only when the user explicitly requests deep research or a detailed report on a topic — phrases like "research X", "give me a detailed report on X", "deep dive into X", "I want a thorough analysis of X", or "write me a research report on X". Do NOT trigger for casual questions, quick lookups, or requests to add/edit entries. This is a heavyweight, multi-step workflow that mines the knowledge base, fills gaps with web research, creates new KB entries along the way, and produces a long-form, citation-rich research report saved to reports/.
keine-manage
Always use this skill before creating, editing, or tagging any document in the knowledge base. Use it when asked to add, ingest, find, link, or manage any entry.
keine-chat
Use this skill whenever the user wants to discuss, explore, or ask questions about a topic using the local knowledge base as grounding. Trigger on phrases like "what do you know about X", "let's talk about X", "explain X", "I'm trying to understand X", "discuss X with me", "what does the KB have on X", "help me think through X", "tell me about X", or any conversational question about a concept or idea. Also trigger when the user asks a question that could be answered from stored knowledge, even if they don't explicitly say "knowledge base". This is the default skill for knowledge-grounded conversation — prefer it over answering from memory alone whenever the KB might have relevant content. Do NOT trigger for: deep research reports (use keine-research), adding new entries (use keine-update-entries), or creating maps (use keine-update-maps).
openalex-database
Query and analyze scholarly literature using the OpenAlex database. This skill should be used when searching for academic papers, analyzing research trends, finding works by authors or institutions, tracking citations, discovering open access publications, or conducting bibliometric analysis across 240M+ scholarly works. Use for literature searches, research output analysis, citation analysis, and academic database queries.
openalexandria
Query and submit artifacts to the OpenAlexandria federated knowledge protocol (reference node by default).
swe-cli-skills
Senior engineer CLI expertise for AI agents — workflows, safety guardrails, gotchas, and anti-patterns across cloud, IaC, containers, databases, dev tools, and platforms
PicoClaw Fleet
Orchestrate a fleet of remote PicoClaw workers over SSH for fast, ephemeral one-shot tasks.
VibeCollab — Setup Instructions for AI Assistants
You are helping a user set up VibeCollab in their project.
raycast-extension-docs
Guidance for building, debugging, and publishing Raycast extensions using the Raycast documentation set. Use when Codex needs to create or modify Raycast extensions (React/TypeScript/Node), consult Raycast API reference or UI components, build AI extensions, handle manifest/lifecycle/preferences, troubleshoot issues, or prepare/publish extensions to the Raycast Store or Teams.