Paper Search API
Search academic papers from multiple sources (Google Scholar, PubMed, ArXiv, Wanfang), perform AI-powered paper analysis, and use intelligent agent search with natural language queries.
/v1/paper-search/*Google Scholar Search
/v1/paper-search/googleSearch Google Scholar via ScrapingDog API. Returns citation counts, PDF links, and resource links unique to Google Scholar. Max 20 results per request.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Required | Search keywords (1-300 chars) |
max_results | integer | Optional (default: 20) | Number of results (1-20) |
offset | integer | Optional (default: 0) | Pagination offset |
date_from | string | Optional | Start year, e.g. '2020' |
date_to | string | Optional | End year, e.g. '2025' |
author | string | Optional | Author name filter |
journal | string | Optional | Journal name filter |
language | string | Optional | 'english', '中文', or empty |
Wanfang Search
/v1/paper-search/wanfangSearch Wanfang Data for Chinese academic journals, theses, and conference papers. Returns keywords, volume, pages, and source database info.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Required | Search keywords (1-300 chars) |
max_results | integer | Optional (default: 50) | Number of results (1-100) |
date_from | string | Optional | Start year filter |
date_to | string | Optional | End year filter |
PubMed Search
/v1/paper-search/pubmedSearch PubMed/MEDLINE via NCBI E-utilities. Returns MeSH terms, PMC IDs, journal details, and publication types for biomedical literature.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Required | Search keywords, supports PubMed query syntax (1-300 chars) |
max_results | integer | Optional (default: 50) | Number of results (1-200) |
offset | integer | Optional (default: 0) | Pagination offset |
date_from | string | Optional | Start date, 'YYYY' or 'YYYYMMDD' |
date_to | string | Optional | End date, 'YYYY' or 'YYYYMMDD' |
author | string | Optional | Author name filter |
journal | string | Optional | Journal name filter |
sort | string | Optional | 'relevance', 'date', 'pubdate', 'fauth', 'jour' |
ArXiv Search
/v1/paper-search/arxivSearch ArXiv preprints via OAI API. Returns categories, publication/update dates, comments, journal references, and PDF links for physics, math, CS, and biology papers.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Required | Search keywords, supports ArXiv syntax like 'cat:cs.AI' (1-300 chars) |
max_results | integer | Optional (default: 50) | Number of results (1-100) |
offset | integer | Optional (default: 0) | Pagination offset |
date_from | string | Optional | Start date, 'YYYY' or 'YYYYMMDD' |
date_to | string | Optional | End date, 'YYYY' or 'YYYYMMDD' |
author | string | Optional | Author name filter (ArXiv au: query) |
journal | string | Optional | Journal filter (ArXiv jr: query) |
sort | string | Optional | 'relevance', 'lastUpdatedDate', 'submittedDate' |
Paper Analysis
/v1/paper-search/analyzeAI-powered structured analysis of a single paper. Outputs research objective, methodology, key findings, and limitations. Content is extracted from PDF, web page, or abstract (in that priority order).
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Required | Paper title (1-1024 chars) |
authors | string[] | Required | List of author names |
abstract | string | Optional | Paper abstract (max 10000 chars) |
doi | string | Optional | DOI identifier |
source_url | string | Optional | Paper page URL |
pdf_url | string | Optional | Direct PDF link (highest priority) |
language | string | Optional (default: 中文) | Output language: '中文' or 'en' |
At least one of abstract, source_url, or pdf_url must be provided.
Response
{
"success": true,
"message": "Paper analysis completed successfully",
"paper_title": "Attention Is All You Need",
"analysis": {
"研究目标": "提出一种新的简单网络架构 Transformer...",
"方法论": "设计了多头自注意力机制和位置编码...",
"主要发现": "Transformer 在机器翻译任务上取得了 SOTA 结果...",
"研究限制": "主要在机器翻译任务上验证..."
},
"usage": {
"tokens_usage": {
"gpt-4": [
[
1500,
800,
2300
]
]
}
},
"content_sources": [
"pdf"
]
}Agent Search (SSE Streaming)
/v1/paper-search/agent_searchMulti-agent intelligent paper search with natural language queries. Automatically plans search strategy, iterates across databases, reflects on progress, and filters results. Returns SSE streaming events. Max 50 papers, max 3 search iterations.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Required | Natural language search query in Chinese or English (1-500 chars) |
language | string | Optional (default: 中文) | Response language: '中文' or 'English' |
sources | string[] | Optional | Databases to search: 'google', 'wanfang', 'arxiv', 'pubmed'. null = all |
SSE Event Types
start — Search initiated
node_start / node_complete — Agent phase updates
reflection — Progress analysis
result_data — Final paper results
complete — Search completed
error — Error occurred
Response
{
"success": true,
"message": "Google Scholar search completed successfully",
"query": "deep learning",
"results": {
"total": 10,
"source": "Google Scholar"
},
"data": [
{
"source": "Google Scholar",
"title": "Deep Residual Learning for Image Recognition",
"authors": [
"K He",
"X Zhang",
"S Ren",
"J Sun"
],
"abstract": "Deeper neural networks are more difficult to train...",
"publication_year": "2016",
"publication_journal": "Proceedings of the IEEE conference on computer vision",
"source_url": "https://openaccess.thecvf.com/content_cvpr_2016/...",
"pdf_url": "https://openaccess.thecvf.com/.../pdf",
"doi": "",
"cited_by_count": 220000
}
]
}Examples
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.qinyanai.com"
# Google Scholar search
response = requests.post(
f"{BASE_URL}/v1/paper-search/google",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"query": "large language model",
"max_results": 10,
"date_from": "2020",
"date_to": "2025"
}
)
data = response.json()
for paper in data["data"]:
print(f"{paper['title']} ({paper['publication_year']})")
# PubMed search
response = requests.post(
f"{BASE_URL}/v1/paper-search/pubmed",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"query": "cancer immunotherapy",
"max_results": 30,
"author": "Zhang Wei"
}
)
# Paper analysis
response = requests.post(
f"{BASE_URL}/v1/paper-search/analyze",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"title": "Attention Is All You Need",
"authors": ["Ashish Vaswani", "Noam Shazeer"],
"abstract": "The dominant sequence transduction models...",
"language": "中文"
}
)
result = response.json()
print(result["analysis"])
# Agent search (streaming)
response = requests.post(
f"{BASE_URL}/v1/paper-search/agent_search",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"query": "帮我查找最近5年的脑机接口领域引用量超过200的论文",
"language": "中文"
},
stream=True
)
for line in response.iter_lines():
if line:
print(line.decode())