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.

POST/v1/paper-search/*

Google Scholar Search

POST/v1/paper-search/google

Search Google Scholar via ScrapingDog API. Returns citation counts, PDF links, and resource links unique to Google Scholar. Max 20 results per request.

Parameters

ParameterTypeRequiredDescription
querystringRequiredSearch keywords (1-300 chars)
max_resultsintegerOptional (default: 20)Number of results (1-20)
offsetintegerOptional (default: 0)Pagination offset
date_fromstringOptionalStart year, e.g. '2020'
date_tostringOptionalEnd year, e.g. '2025'
authorstringOptionalAuthor name filter
journalstringOptionalJournal name filter
languagestringOptional'english', '中文', or empty

Wanfang Search

POST/v1/paper-search/wanfang

Search Wanfang Data for Chinese academic journals, theses, and conference papers. Returns keywords, volume, pages, and source database info.

Parameters

ParameterTypeRequiredDescription
querystringRequiredSearch keywords (1-300 chars)
max_resultsintegerOptional (default: 50)Number of results (1-100)
date_fromstringOptionalStart year filter
date_tostringOptionalEnd year filter

PubMed Search

POST/v1/paper-search/pubmed

Search PubMed/MEDLINE via NCBI E-utilities. Returns MeSH terms, PMC IDs, journal details, and publication types for biomedical literature.

Parameters

ParameterTypeRequiredDescription
querystringRequiredSearch keywords, supports PubMed query syntax (1-300 chars)
max_resultsintegerOptional (default: 50)Number of results (1-200)
offsetintegerOptional (default: 0)Pagination offset
date_fromstringOptionalStart date, 'YYYY' or 'YYYYMMDD'
date_tostringOptionalEnd date, 'YYYY' or 'YYYYMMDD'
authorstringOptionalAuthor name filter
journalstringOptionalJournal name filter
sortstringOptional'relevance', 'date', 'pubdate', 'fauth', 'jour'

ArXiv Search

POST/v1/paper-search/arxiv

Search ArXiv preprints via OAI API. Returns categories, publication/update dates, comments, journal references, and PDF links for physics, math, CS, and biology papers.

Parameters

ParameterTypeRequiredDescription
querystringRequiredSearch keywords, supports ArXiv syntax like 'cat:cs.AI' (1-300 chars)
max_resultsintegerOptional (default: 50)Number of results (1-100)
offsetintegerOptional (default: 0)Pagination offset
date_fromstringOptionalStart date, 'YYYY' or 'YYYYMMDD'
date_tostringOptionalEnd date, 'YYYY' or 'YYYYMMDD'
authorstringOptionalAuthor name filter (ArXiv au: query)
journalstringOptionalJournal filter (ArXiv jr: query)
sortstringOptional'relevance', 'lastUpdatedDate', 'submittedDate'

Paper Analysis

POST/v1/paper-search/analyze

AI-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

ParameterTypeRequiredDescription
titlestringRequiredPaper title (1-1024 chars)
authorsstring[]RequiredList of author names
abstractstringOptionalPaper abstract (max 10000 chars)
doistringOptionalDOI identifier
source_urlstringOptionalPaper page URL
pdf_urlstringOptionalDirect PDF link (highest priority)
languagestringOptional (default: 中文)Output language: '中文' or 'en'

At least one of abstract, source_url, or pdf_url must be provided.

Response

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)

POST/v1/paper-search/agent_search

Multi-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

ParameterTypeRequiredDescription
querystringRequiredNatural language search query in Chinese or English (1-500 chars)
languagestringOptional (default: 中文)Response language: '中文' or 'English'
sourcesstring[]OptionalDatabases 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

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())