papers-cli 0.1.1

CLI for searching academic research via OpenAlex
papers-cli-0.1.1 is not a library.

papers

A command-line interface for the OpenAlex academic research database. Query 240M+ scholarly works, authors, journals, institutions, topics, publishers, and funders.

Install

cargo install --path crates/papers-cli

Usage

Query the OpenAlex academic research database

Usage: papers <COMMAND>

Commands:
  work         Scholarly works: articles, preprints, datasets, and more
  author       Disambiguated researcher profiles
  source       Publishing venues: journals, repositories, conferences
  institution  Research organizations: universities, hospitals, companies
  topic        Research topic hierarchy (domain → field → subfield → topic)
  publisher    Publishing organizations (e.g. Elsevier, Springer Nature)
  funder       Grant-making organizations (e.g. NIH, NSF, ERC)
  domain       Research domains (broadest level of topic hierarchy, 4 total)
  field        Academic fields (second level of topic hierarchy, 26 total)
  subfield     Research subfields (third level of topic hierarchy, ~252 total)
  help         Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

Every command accepts --json to output raw JSON instead of formatted text.

Listing

List works with optional search/filter/sort

Usage: papers work list [OPTIONS]

Options:
  -s, --search <SEARCH>            Full-text search query
  -f, --filter <FILTER>            Filter expression (comma-separated AND conditions, pipe for OR)
      --sort <SORT>                Sort field with optional :desc (e.g. "cited_by_count:desc")
  -n, --per-page <PER_PAGE>        Results per page [default: 10]
      --page <PAGE>                Page number for offset pagination
      --cursor <CURSOR>            Cursor for cursor-based pagination (use "*" to start)
      --sample <SAMPLE>            Random sample of N results
      --seed <SEED>                Seed for reproducible sampling
      --json                       Output raw JSON instead of formatted text
      --author <AUTHOR>            Filter by author name or OpenAlex author ID
      --topic <TOPIC>              Filter by topic name or OpenAlex topic ID
      --domain <DOMAIN>            Filter by domain name or ID
      --field <FIELD>              Filter by field name or ID
      --subfield <SUBFIELD>        Filter by subfield name or ID
      --publisher <PUBLISHER>      Filter by publisher name or ID
      --source <SOURCE>            Filter by source (journal/conference) name or ID
      --institution <INSTITUTION>  Filter by institution name or ID
      --year <YEAR>                Filter by publication year (e.g. "2024", ">2008", "2008-2024")
      --citations <CITATIONS>      Filter by citation count (e.g. ">100", "10-50")
      --country <COUNTRY>          Filter by country code of author institutions (e.g. "US", "GB")
      --continent <CONTINENT>      Filter by continent of author institutions (e.g. "europe", "asia")
      --type <ENTITY_TYPE>         Filter by work type (e.g. "article", "preprint", "dataset")
      --open                       Filter for open access works only
  -h, --help                       Print help

Advanced filtering: https://docs.openalex.org/api-entities/works/filter-works

In addition to the base options above, each entity has filter aliases — shorthand flags that resolve to OpenAlex filter expressions so you don't need to remember the raw syntax. See Filter aliases below.

Getting

The get subcommand accepts any of these as its argument:

  • OpenAlex IDs: W2741809807, A5028826050, https://openalex.org/W2741809807
  • DOIs: https://doi.org/10.7717/peerj.4375, 10.7717/peerj.4375
  • ORCIDs: https://orcid.org/0000-0002-1825-0097
  • ROR IDs: https://ror.org/03vek6s52
  • PubMed IDs: pmid:12345678
  • ISSNs: 0028-0836 (for sources)
  • Hierarchy IDs: 3 (domains), 17 (fields), 1702 (subfields)
  • Search queries: any other string is resolved to the top result by citation count
$ papers work get "attention is all you need"
$ papers author get "yoshua bengio"
$ papers source get "nature"
$ papers institution get "MIT"

Examples

Search for works

$ papers work list -s "attention is all you need" -n 3
Found 1556581 results · page 1 (showing 3)

  1  Attention Is All You Need (2025)
     Ashish Vaswani · Noam Shazeer · Niki Parmar · Jakob Uszkoreit · Llion Jones · Aidan N. Gomez · Łukasz Kaiser · Illia Polosukhin
     preprint · 6488 citations · OA: Yes
     Topic: Natural Language Processing Techniques
     DOI: https://doi.org/10.65215/2q58a426

     The dominant sequence transduction models are based on complex recurrent or convolutional neural
     networks in an encoder-decoder configuration...

  2  Attention Is All You Need In Speech Separation (2021)
     Cem Subakan · Mirco Ravanelli · Samuele Cornell · Mirko Bronzi · Jianyuan Zhong
     article · 574 citations · OA: No
     Topic: Speech and Audio Processing
     DOI: https://doi.org/10.1109/icassp39728.2021.9413901
     ...

Filter with aliases

Instead of raw filter expressions, use shorthand flags:

$ papers work list --author "Yann LeCun" --year 2020-2024 --open -n 3
$ papers work list --topic "deep learning" --citations ">100" --sort cited_by_count:desc
$ papers work list --institution MIT --field "computer science" --year 2024
$ papers author list --institution harvard --country US --h-index ">50"
$ papers source list --publisher springer --type journal

Aliases can be combined with each other and with --search/--filter/--sort:

$ papers work list -s "transformer" --year 2024 --open --sort cited_by_count:desc -n 5

Filter with raw expressions

You can still use raw OpenAlex filter syntax via --filter:

$ papers work list -f "publication_year:2024,is_oa:true" --sort cited_by_count:desc -n 3
Found 6211989 results · page 1 (showing 3)

  1  Global cancer statistics 2022: GLOBOCAN estimates... (2024)
     Freddie Bray · Mathieu Laversanne · ...
     CA A Cancer Journal for Clinicians · article · 19449 citations · OA: Yes
     Topic: Global Cancer Incidence and Screening
     DOI: https://doi.org/10.3322/caac.21834
     ...

Get a single work

$ papers work get W2741809807
Work: The state of OA: a large-scale analysis of the prevalence and impact of Open Access articles
ID:   https://openalex.org/W2741809807
DOI:  https://doi.org/10.7717/peerj.4375
Year: 2018 · Type: book-chapter
OA:   Yes (gold) · https://doi.org/10.7717/peerj.4375
Citations: 1149
Topic: scientometrics and bibliometrics research (Statistics, Probability and Uncertainty → Decision Sciences → Social Sciences)

Authors:
   1. Heather Piwowar (first)  Impact Technology Development (United States)
   2. Jason Priem (middle)  Impact Technology Development (United States)
   3. Vincent Larivière (middle)  Université de Montréal
   ...

Abstract:
  Despite growing interest in Open Access (OA) to scholarly literature, there is an unmet need for
  large-scale, up-to-date, and reproducible studies assessing the prevalence and characteristics of OA...

You can also look up works by DOI or search query:

$ papers work get https://doi.org/10.7717/peerj.4375
$ papers work get "state of open access"

Author autocomplete

$ papers author autocomplete "yoshua bengio"
 1  Yoshua Bengio [authors/A5028826050]
    Mila - Quebec Artificial Intelligence Institute, Canada
    1270 citations
 2  Yoshua Bengio [authors/A5125732408]
    Mila - Quebec Artificial Intelligence Institute, Canada
    0 citations
...

List journals

$ papers source list -s "nature" -n 3
Found 278 results · page 1 (showing 3)

  1  Nature
     ISSN: 0028-0836 · journal · OA: No · h-index: 1822
     Publisher: Springer Nature

  2  Nature Communications
     ISSN: 2041-1723 · journal · OA: Yes · h-index: 719
     Publisher: Springer Nature

  3  Nature Genetics
     ISSN: 1061-4036 · journal · OA: No · h-index: 776
     Publisher: Springer Nature

JSON output

Append --json to any command to get machine-readable output:

$ papers work get W2741809807 --json
{
  "id": "https://openalex.org/W2741809807",
  "doi": "https://doi.org/10.7717/peerj.4375",
  "title": "The state of OA: a large-scale analysis...",
  "publication_year": 2018,
  "type": "book-chapter",
  "cited_by_count": 1149,
  "referenced_works": [...],
  ...
}

List responses in --json mode return a slim subset of fields (no referenced_works, counts_by_year, etc.) for conciseness. Use work get --json to retrieve the full record.

Semantic search (requires API key)

$ OPENALEX_KEY=<your-key> papers work find "transformer attention mechanism self-supervised learning" -n 5

Requires a polite pool API key with semantic search credits enabled.

Filter aliases

Shorthand flags that resolve to OpenAlex filter expressions. Entity-based aliases (like --author) accept either an OpenAlex ID or a search string that gets resolved to the top result by citation count.

work list

Flag Example Resolves to
--author "einstein", A5108093963 authorships.author.id:<id>
--topic "deep learning", T10320 topics.id:<id>
--domain "physical sciences", 3 topics.domain.id:<id>
--field "computer science", 17 topics.field.id:<id>
--subfield "artificial intelligence", 1702 topics.subfield.id:<id>
--publisher "acm", "acm|ieee" primary_location.source.publisher_lineage:<id>
--source "nature", S137773608 primary_location.source.id:<id>
--institution "mit", I136199984 authorships.institutions.lineage:<id>
--year 2024, >2008, 2008-2024 publication_year:<value>
--citations ">100", "10-50" cited_by_count:<value>
--country US, GB authorships.countries:<value>
--continent europe, asia authorships.continents:<value>
--type article, preprint type:<value>
--open (flag) is_oa:true

author list

Flag Example
--institution "harvard", "mit", I136199984
--country US, GB
--continent europe, asia
--citations ">1000", "100-500"
--works ">500", "100-200"
--h-index ">50", "10-20"

source list

Flag Example
--publisher "springer", P4310319798
--country US, GB
--continent europe
--type journal, repository, conference
--open (flag)
--citations ">10000"
--works ">100000"

institution list

Flag Example
--country US, GB
--continent europe, asia
--type education, healthcare, company
--citations ">100000"
--works ">100000"

topic list

Flag Example
--domain "life sciences", 3
--field "computer science", 17
--subfield "artificial intelligence", 1702
--citations ">1000"
--works ">1000"

Other entities

publisher list, funder list, field list, subfield list, and domain list also support relevant subsets of --country, --continent, --domain, --field, --citations, and --works.

Raw filter syntax

For cases not covered by aliases, use -f/--filter with the OpenAlex filter syntax:

Example Meaning
publication_year:2024 Published in 2024
is_oa:true Open access only
publication_year:2020|2021|2022 Published 2020, 2021, or 2022
authorships.author.id:A5028826050 Works by a specific author
primary_location.source.id:S137773608 Works in a specific journal
cited_by_count:>100 More than 100 citations

Combine filters with commas (AND): -f "publication_year:2024,is_oa:true"