openalex
OpenAlex CLI Skill
Use the openalex CLI to retrieve academic metadata from the OpenAlex API.
When to Use
Invoke this skill when the user needs to:
- Search for academic papers or scholarly works
- Find information about authors, institutions, or journals
- Track citations (who cited a paper, what a paper references)
- Discover related works or research topics
- Look up metadata by DOI, ORCID, or OpenAlex ID
- Analyze publication trends or research metrics
Initial Setup
First time using this skill? Read references/setup.md for installation and API key configuration.
Prerequisites
The CLI must be built and available. Check with:
openalex --help
If openalex is not installed yet, install it first:
npm install -g openalex-skill
openalex --help
For installation, persistent API key setup, and first-run verification, see references/setup.md.
Core Commands
Entity Types
OpenAlex organizes data into 8 entity types:
works- research papers, articles, preprintsauthors- researchers and their profilessources- journals, conferences, repositoriesinstitutions- universities, research centerstopics- research areas and subjectspublishers- academic publishersfunders- funding organizationsconcepts- (legacy) subject classifications
OpenAlex ID Format
ID format: OpenAlex IDs start with W (e.g., W2626778328). The summary format displays reusable IDs on a secondary line:
- Attention Is All You Need (2017 | cited 6519)
id: W2741809807 | authors: Vaswani et al | doi: https://doi.org/10.48550/arXiv.1706.03762
Get ID from search results:
openalex works search "paper title" --per-page 1
# Copy the `id: Wxxxx` from the output
⚠️ ID usage restrictions:
cited-by,references, andrelatedsupport both DOI and OpenAlex ID- bare DOIs like
10.1038/nature12373anddoi:10.1038/nature12373are normalized automatically for work lookups and helpers - OpenAlex IDs are still the most reusable follow-up identifiers when chaining multiple commands
Common Operations
Search for papers:
openalex works search "your query" --per-page 5
Get specific work by ID or DOI:
openalex works get W2741809807
openalex works get https://doi.org/10.1038/nature12373
openalex works get 10.1038/nature12373
Find author:
openalex authors search "Author Name" --per-page 3
Get author by ORCID:
openalex authors get https://orcid.org/0000-0002-3141-5845
Track citations:
# Papers that cite this work
openalex works cited-by W2741809807 --per-page 5
openalex works cited-by 10.1038/nature12373 --per-page 5
openalex works cited-by https://doi.org/10.1038/nature12373 --per-page 5
# Papers this work references
openalex works references W2741809807 --per-page 5
openalex works references https://doi.org/10.1038/nature12373 --per-page 5
# Related works
openalex works related W2741809807 --per-page 5
openalex works related https://doi.org/10.1038/nature12373 --per-page 5
Filter and sort:
openalex works list \
--filter publication_year:2024 \
--filter is_oa:true \
--sort cited_by_count:desc \
--per-page 10
Autocomplete (for non-works entities):
openalex institutions autocomplete "tsinghua"
openalex authors autocomplete "einstein"
Group by field:
openalex works group --by publication_year \
--filter author.id:A5070829652
Download full-text PDF:
# Download the best available open access PDF for a work
openalex works download https://doi.org/10.48550/arXiv.1706.03762
openalex works download 10.48550/arXiv.1706.03762
# Specify output filename
openalex works download W2741809807 -o paper.pdf
# Overwrite existing file
openalex works download W2741809807 --overwrite
The download command tries multiple sources in order:
primary_location.pdf_urlbest_oa_location.pdf_urlopen_access.oa_urlprimary_location.landing_page_urlbest_oa_location.landing_page_url- Any
locations[].pdf_urlorlocations[].landing_page_url
Default filename is based on DOI or OpenAlex ID (sanitized for filesystem safety).
Output Formats
The CLI defaults to summary format. For detailed format options, see references/output-formats.md.
Quick reference:
summary(default) - Concise one-line format, ~2KB for 5 resultsdetail- Human-readable with inline lists for repeated fieldsjson- Full structured payload, ~40KB-268KB per querybibtex- BibTeX entries for work records--field <path>- Client-side projection to extract specific fields--select <field>- Server-side selection to reduce network payload
Common patterns:
# Extract specific fields
openalex works get W2741809807 --field title --field abstract
# Export a work as BibTeX
openalex works get 10.1038/nature12373 --format bibtex
# Combine server-side + client-side for efficiency
openalex works search "crispr" --select title --select cited_by_count \
--field title --field cited_by_count
Note: --field abstract and --select don't combine well; use --field abstract alone when you need abstract text.
Workflow Patterns
Pattern 1: Quick Paper Search
# Start with summary to browse
openalex works search "graph neural networks" --per-page 5
# If user wants details on a specific paper, use detail format
openalex works get W2741809807 --format detail
# Or extract specific fields with inline author display
openalex works get W2741809807 \
--format detail \
--field title --field abstract --field authorships.author.display_name
Pattern 2: Author Research
# Find author
openalex authors search "Jacob Andreas" --per-page 3
# Get author details by ORCID to resolve stable identifier
openalex authors get https://orcid.org/0000-0002-3141-5845
# Then use author.orcid filter to get their works
openalex works list --filter author.orcid:0000-0002-3141-5845 \
--sort cited_by_count:desc --per-page 10
# Or use resolved author.id if available
openalex works list --filter author.id:A5070829652 \
--sort cited_by_count:desc --per-page 10
Pattern 3: Citation Analysis
# Search for a paper, note the ID from the secondary line
openalex works search "attention is all you need" --per-page 3
# Use the ID (e.g., W2741809807) or DOI for citation commands
openalex works cited-by W2741809807 --per-page 10
openalex works references W2741809807 --per-page 10
If cited-by or references returns a 404, verify the work first with openalex works get <id-or-doi>.
A valid-looking W... id can still be missing upstream.
Pattern 4: Topic Exploration
# Search for survey papers on a topic
openalex works search "LLM tool use survey" \
--filter publication_year:>2023 \
--filter type:review \
--sort cited_by_count:desc \
--per-page 5
Pattern 5: Field Discovery and Extraction
# First, discover available fields
openalex works fields
# Then extract exactly what you need with detail format
openalex works search "retrieval augmented generation" --per-page 3 \
--format detail \
--field title \
--field abstract \
--field publication_year \
--field cited_by_count \
--field authorships.author.display_name
Pattern 6: Handling Noisy or Empty Results
Search too broad? Add filters:
openalex works search "self-adaptive agent framework" \
--filter publication_year:>2022 \
--filter type:article \
--per-page 5
Have a DOI? Use direct lookup:
openalex works get https://doi.org/10.1038/nature12373
Pattern 7: Download Full-Text Papers
# Download by DOI or OpenAlex ID
openalex works download https://doi.org/10.48550/arXiv.1706.03762
openalex works download W2626778328 -o paper.pdf --overwrite
Download tries multiple sources in order: primary_location.pdf_url, best_oa_location.pdf_url, open_access.oa_url, then landing pages.
--select caveats:
- OpenAlex
selectonly supports root-level fields groupandautocompletedo not supportselectabstractandabstract_inverted_indexare not selectable upstream
ORCID format matters:
# Wrong: using full ORCID URL in filter
openalex works list --filter author.orcid:https://orcid.org/0000-0002-3141-5845
# Correct: bare ORCID value
openalex works list --filter author.orcid:0000-0002-3141-5845
# But ORCID URL works for 'authors get'
openalex authors get https://orcid.org/0000-0002-3141-5845
Tips
- Default format is
summary- no need to specify unless you want something else - Use
<entity> fieldscommand to discover available field paths before querying - Use
--fieldprojection to extract specific data efficiently - Use
--selectfor network efficiency when you know which fields you need - Combine
--selectand--fieldfor optimal performance and presentation - Use
--per-pageto control result count (default varies by endpoint) - Use
--allto auto-follow cursor pagination for list-style commands - Filters use
:syntax:field:value,field:>value,field:<value - Sort uses
:syntax:field:ascorfield:desc - DOIs and OpenAlex IDs are interchangeable in most commands
- ORCID filters use bare ORCID value, not the
https://orcid.org/URL form - If author work lookup returns nothing, use
author.orcidinstead ofauthor.id - If
cited-byorreferencesfails with 404, verify the work first withworks get - For some preprint or repository records, the queried DOI and the record DOI may differ; use
detailorjsonwhen provenance matters - Check rate limits with:
openalex rate-limit
Configuration Commands
The CLI supports persistent configuration for API keys and other settings.
View current configuration:
openalex config show
Set API key (recommended):
openalex config set api-key your_key_here
Other config options:
openalex config set base-url https://api.openalex.org
openalex config set mailto you@example.com
View config file path:
openalex config path
Remove a setting:
openalex config unset api-key
Configuration is stored in ~/.openalex-skill/config.json. Environment variables (OPENALEX_API_KEY, OPENALEX_BASE_URL, OPENALEX_MAILTO) override stored config.
Common Filters
For works:
publication_year:2024orpublication_year:>2020is_oa:true(open access)type:articleortype:reviewauthor.id:A5070829652author.orcid:0000-0002-3141-5845- institution-related filters are passed through as-is; verify the exact OpenAlex path with
--format jsonif needed primary_location.source.id:S123456(journal)
For authors:
last_known_institutions.id:I123456works_count:>100
Error Handling
If a command fails:
- Check the entity type is correct (
works,authors, etc.) - Verify ID format (OpenAlex IDs start with W/A/S/I/T/P/F/C)
- Check filter syntax (use
:not=) - Try with
--format jsonto see full error details - If search results are empty, retry with broader keywords
- If author lookup fails, verify ORCID format (bare value, not URL)
- Use DOI direct lookup when you know the exact paper
- If a work helper 404s, the identifier may be valid in shape but absent in OpenAlex