Search Semantic Scholar for academic papers across all disciplines with citation graph analysis. Use when: (1) finding papers across disciplines, (2) citation/reference graph traversal, (3) author search, (4) paper recommendations, (5) large-scale bibliometric analysis. NOT for: specific database access (use pubmed for biomedical, arxiv for preprints).
Search 200M+ papers across all disciplines with citation graph, author profiles, and recommendations via the Semantic Scholar API.
curl -s -H "x-api-key: ${S2_API_KEY}" "https://api.semanticscholar.org/graph/v1/paper/search?query=example"
curl -s "https://api.semanticscholar.org/graph/v1/paper/search?query=machine+learning+drug+discovery&limit=5&fields=title,authors,year,abstract,citationCount,url"
Parameters: query= (required), limit= (max 100), offset=, fields=,
year= (e.g. 2020-2024), (e.g. , ),
, .
fieldsOfStudy=Computer ScienceMedicineopenAccessPdfminCitationCount=Bulk search (up to 10M results, token-based pagination):
curl -s "https://api.semanticscholar.org/graph/v1/paper/search/bulk?query=CRISPR+gene+editing&fields=title,year,citationCount"
# DOI
curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1038/s41586-021-03819-2?fields=title,abstract,authors,year,citationCount"
# arXiv ID
curl -s "https://api.semanticscholar.org/graph/v1/paper/ARXIV:2301.07041?fields=title,abstract,year"
# PubMed ID
curl -s "https://api.semanticscholar.org/graph/v1/paper/PMID:34265844?fields=title,abstract,year"
# Papers that cite a given paper
curl -s "https://api.semanticscholar.org/graph/v1/paper/ARXIV:2301.07041/citations?fields=title,year,citationCount&limit=20"
# Papers cited by a given paper
curl -s "https://api.semanticscholar.org/graph/v1/paper/ARXIV:2301.07041/references?fields=title,year,citationCount&limit=20"
# Search by name
curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=yann+lecun&fields=name,hIndex,paperCount,citationCount"
# Author papers
curl -s "https://api.semanticscholar.org/graph/v1/author/1688681/papers?fields=title,year,citationCount&limit=20"
# Single-paper
curl -s "https://api.semanticscholar.org/recommendations/v1/papers/forpaper/ARXIV:2301.07041?fields=title,year,citationCount&limit=10"
# Multi-paper (POST)
curl -s -X POST "https://api.semanticscholar.org/recommendations/v1/papers/" \
-H "Content-Type: application/json" \
-d '{"positivePaperIds": ["ARXIV:2301.07041", "ARXIV:2302.13971"], "negativePaperIds": []}'
Paper: paperId, title, abstract, year, venue, citationCount,
referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf,
fieldsOfStudy, publicationTypes, publicationDate, journal, url,
externalIds, tldr
Nested: authors.name, authors.authorId, citations.title, references.title
curl -s "https://api.semanticscholar.org/graph/v1/paper/search?\
query=YOUR+TOPIC&limit=10&year=2023-2025&minCitationCount=10&\
fields=title,authors,year,citationCount,influentialCitationCount,tldr,venue,isOpenAccess,openAccessPdf,externalIds" \
| python3 -c "
import sys, json
data = json.load(sys.stdin)
print(f'Found {data[\"total\"]} papers')
for i, p in enumerate(data['data']):
authors = ', '.join(a['name'] for a in (p.get('authors') or [])[:3])
tldr = (p.get('tldr') or {}).get('text', 'N/A')[:120]
doi = (p.get('externalIds') or {}).get('DOI', 'N/A')
print(f'[{i+1}] {p[\"title\"]}')
print(f' {authors} ({p.get(\"year\")}) {p.get(\"venue\",\"\")} Cited:{p[\"citationCount\"]}')
print(f' TLDR: {tldr}')
print(f' DOI: {doi}')
print()
"
PAPER_ID="DOI:10.1038/s41586-021-03819-2" # or ARXIV:2301.07041 or S2 ID
# Who cites this?
curl -s "https://api.semanticscholar.org/graph/v1/paper/${PAPER_ID}/citations?\
fields=title,year,citationCount,venue&limit=20" | python3 -c "
import sys,json; data=json.load(sys.stdin)
print(f'{len(data[\"data\"])} citing papers:')
for c in sorted(data['data'], key=lambda x: x['citingPaper'].get('citationCount',0), reverse=True)[:10]:
p=c['citingPaper']
print(f' [{p.get(\"year\",\"?\")}] {p[\"title\"][:80]} (cited:{p.get(\"citationCount\",0)})')
"
curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.xxxx/xxxxx?\
fields=title,isOpenAccess,openAccessPdf" | python3 -c "
import sys,json; p=json.load(sys.stdin)
pdf = p.get('openAccessPdf',{})
if pdf: print(f'OA PDF: {pdf[\"url\"]}')