paper-search-cli
A CLI tool for searching and downloading academic papers from 20+ sources. Also works as a Claude Code Skill for AI-assisted research.
Features
- 20+ academic sources: arXiv, PubMed, Semantic Scholar, CrossRef, OpenAlex, CORE, bioRxiv, medRxiv, and more
- Concurrent search: searches multiple sources in parallel with automatic deduplication
- Smart download: multi-stage fallback chain (source -> OA repositories -> Unpaywall -> Sci-Hub)
- PDF text extraction: download and extract text from papers in one step
- JSON output: machine-readable output for scripting and AI integration
- Claude Code Skill: use as a slash command in Claude Code
Installation
pip
pip install paper-search-cli
uv
uv tool install paper-search-cli
From source
git clone https://github.com/openags/paper-search-cli.git
cd paper-search-cli
uv sync
Docker
docker build -t paper-search .
docker run paper-search search "transformer architecture"
Usage
Search papers
# Search all sources
paper-search search "transformer architecture"
# Search specific sources
paper-search search "quantum computing" --sources arxiv,semantic --max-results 5
# Filter by year (Semantic Scholar)
paper-search search "large language models" --sources semantic --year 2023-2024
# JSON output (for scripting / AI tools)
paper-search search "CRISPR" --json
Download a paper
paper-search download 2106.12345 --source arxiv
paper-search download 2106.12345 --source arxiv --output-dir ./papers
Download with fallback chain
paper-search download-fallback 2106.12345 --source arxiv \
--doi 10.48550/arXiv.2106.12345 --title "Paper Title"
Read (download + extract text)
paper-search read 2106.12345 --source arxiv
List available sources
paper-search sources
Claude Code Skill
This tool can be used as a Claude Code Skill for AI-assisted academic research.
Setup
Copy the skill file to your project:
mkdir -p .claude/commands
cp claude-skill/paper-search.md .claude/commands/paper-search.md
Or for global access (all projects):
mkdir -p ~/.claude/commands
cp claude-skill/paper-search.md ~/.claude/commands/paper-search.md
Then in Claude Code, use:
/paper-search transformer architecture in NLP
Available Sources
| Source | Search | Download | Read | Notes |
|---|---|---|---|---|
| arXiv | yes | yes | yes | Open API, reliable |
| PubMed | yes | no | no | Metadata only |
| bioRxiv | yes | yes | yes | Category-based search |
| medRxiv | yes | yes | yes | Category-based search |
| Google Scholar | limited | no | no | Bot-detection active |
| IACR | yes | yes | yes | Cryptography focus |
| Semantic Scholar | yes | OA | OA | Year filter support |
| CrossRef | yes | no | no | DOI metadata |
| OpenAlex | yes | no | no | Broad metadata |
| PMC | yes | OA | OA | Open access only |
| CORE | yes | yes | yes | API key recommended |
| Europe PMC | yes | OA | OA | Open access only |
| dblp | yes | no | no | CS bibliography |
| OpenAIRE | yes | no | no | EU research |
| CiteSeerX | limited | yes | limited | Intermittent |
| DOAJ | yes | limited | limited | Open access journals |
| BASE | limited | yes | yes | OAI-PMH based |
| Zenodo | yes | yes | yes | Record-dependent |
| HAL | yes | yes | yes | French archives |
| SSRN | limited | limited | limited | Metadata only |
| Unpaywall | DOI | no | no | DOI lookup only |
| Sci-Hub | limited | yes | no | Optional fallback |
| IEEE | key | key | key | Requires API key |
| ACM | key | key | key | Requires API key |
Environment Variables
All environment variables are optional. Set them in a .env file or export them.
| Variable | Purpose |
|---|---|
PAPER_SEARCH_UNPAYWALL_EMAIL |
Required for Unpaywall DOI resolution |
PAPER_SEARCH_CORE_API_KEY |
Better rate limits for CORE |
PAPER_SEARCH_SEMANTIC_SCHOLAR_API_KEY |
Better rate limits for Semantic Scholar |
PAPER_SEARCH_ZENODO_ACCESS_TOKEN |
Access embargoed Zenodo records |
PAPER_SEARCH_DOAJ_API_KEY |
Higher rate limits for DOAJ |
PAPER_SEARCH_GOOGLE_SCHOLAR_PROXY_URL |
Proxy for Google Scholar |
PAPER_SEARCH_IEEE_API_KEY |
Enable IEEE Xplore |
PAPER_SEARCH_ACM_API_KEY |
Enable ACM Digital Library |
Legacy PAPER_SEARCH_MCP_* prefix is also supported for backward compatibility.
License
MIT
Release files for paper-search-cli 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paper_search_cli-1.0.3.tar.gz | 125.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| paper_search_cli-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 229.8 kB
Release files / paper_search_cli-1.0.3.tar.gz
| Download URL | paper_search_cli-1.0.3.tar.gz |
|---|---|
| Size | 125.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e417e306090b8f41b9ab53004ff21d2e59060d443859dc46d41d6ff4caaaccb3
|
|
BLAKE2b-256 checksum How to use checksums |
da6cdef5287f22164dfa63aa4fc4dafc1f62ef8fdcefd2c3f50401fa5ec25401
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.
Transparency logRelease files / paper_search_cli-1.0.3-py3-none-any.whl
| Download URL | paper_search_cli-1.0.3-py3-none-any.whl |
|---|---|
| Size | 104.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4da8a98f501fa34807fae697fb58148203b4132031f7ece81805429449e9f8f9
|
|
BLAKE2b-256 checksum How to use checksums |
ed4891fb05a5bfd2b989b723dce9d4e6ae3e10d8f0758f09c3f34ef46183e4eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 23, 2026.
Transparency log