Google Scholar MCP server
Registry name: io.github.johnisanerd/google-scholar. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).
What it does
Search papers, get citation formats (MLA, APA, Chicago, BibTeX), author profiles with h-index and i10-index, an author’s publications, per-article citation history and co-author networks.
Academic literature and citation data in one server with six modes. Use it for research assistants, literature reviews and citation lookups.
Paid service on Apify’s hosted endpoint
This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/google-scholar-api for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.
| Charge | Price (USD) | What it covers |
|---|---|---|
| Setup | $0.005 | One-time setup fee per Actor run. Covers instance setup and API provisioning costs. |
| Search API query executed | $0.015 | Fee per query executed against the upstream search API. Charged once per page on paginated modes (search, author_articles) and once per call on single-shot modes (cite, author_profile, author_citation, author_co_authors… |
Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00001, $0.00001). Prices change from time to time; the Actor’s page on Apify shows the current ones.
Data source and terms
Google Scholar public pages, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.
Endpoint
- Transport: Streamable HTTP
- URL:
https://mcp.apify.com/?tools=johnvc/google-scholar-api - Auth: Apify OAuth, or
Authorization: Bearer <APIFY_TOKEN>
Setup
Claude Code
claude mcp add --transport http google-scholar "https://mcp.apify.com/?tools=johnvc/google-scholar-api"
VS Code (.vscode/mcp.json)
{
"servers": {
"google-scholar": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/google-scholar-api"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"google-scholar": {
"url": "https://mcp.apify.com/?tools=johnvc/google-scholar-api"
}
}
}
Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"google-scholar": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=johnvc/google-scholar-api"
]
}
}
}
Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.
Tools
| Tool | What it does |
|---|---|
johnvc--google-scholar-api |
Runs the Actor with the parameters below and returns the result rows. |
get-actor-run |
Status of a run started by the tool, for long runs. |
get-dataset-items |
Pages through a run’s full output by datasetId when it is larger than the inline result. |
get-key-value-store-record |
Reads a record a run stored, such as a run report. |
abort-actor-run |
Stops a run. |
Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.
Parameters of johnvc--google-scholar-api
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mode |
string: search, cite, author_profile, author_articles, author_citation, author_… | yes | "search" |
Which Google Scholar operation to run. Each mode uses different required fields. Defaults to ‘search’. |
q |
string | "machine learning" |
Free-text query for mode=search. Supports advanced operators like author:smith or source:nature. Required for mode=search unless ‘cites’ or ‘cluster’ is provided. | |
cites |
string | For mode=search only. Article identifier used to look up papers that cite this article. Combine with ‘q’ to search within citing papers. Mutually exclusive with ‘cluster’. | ||
cluster |
string | For mode=search only. Article cluster identifier used to fetch all versions of a paper. Mutually exclusive with ‘q’ and ‘cites’. | ||
result_id |
string | For mode=cite only. The result_id (cluster id) of the Google Scholar paper to fetch citation formats for. Obtain from an organic_results entry of mode=search. | ||
author_id |
string | For mode=author_profile, author_articles, author_citation, and author_co_authors. The Google Scholar author identifier (e.g., ‘LSsXyncAAAAJ’). Obtain from a publication_info.authors entry of mode=search or from a Google… | ||
citation_id |
string | For mode=author_citation only. The citation_id of the specific article in the author’s profile (obtain from articles[].citation_id of mode=author_articles). | ||
hl |
string: en, es, fr, de, it, pt … | "en" |
Language for the user interface and result display. Applies to all modes. Optional. | |
lr |
string | For mode=search only. Restrict results to specific languages. Use ‘lang_xx’ codes separated by ‘|’, e.g. ‘lang_en’ or ‘lang_en|lang_fr’. | ||
as_ylo |
integer | For mode=search only. Earliest publication year to include (e.g., 2010). | ||
as_yhi |
integer | For mode=search only. Latest publication year to include (e.g., 2024). | ||
scisbd |
string: 0, 1, 2 | "0" |
For mode=search only. Recency sort: 0 = relevance (default), 1 = abstracts only from the last year sorted by date, 2 = everything from the last year sorted by date. | |
as_sdt |
string: 0, 7, 4 | "0" |
For mode=search only. Controls what types of results to include. Common values: ‘0’ exclude patents (default), ‘7’ include patents, ‘4’ case law (US courts). | |
safe |
string: active, off | For mode=search only. Safe search filter. Use ‘active’ to enable or ‘off’ to disable. | ||
filter |
string: 0, 1 | "1" |
For mode=search only. 1 = enable the similar/omitted-results filter (default), 0 = disable it. | |
as_vis |
string: 0, 1 | "0" |
For mode=search only. 0 = include citations in results (default), 1 = exclude citations. | |
as_rr |
string: 0, 1 | "0" |
For mode=search only. 1 = restrict to review articles, 0 = all article types (default). | |
sort |
string: title, pubdate | For mode=author_profile and author_articles. ‘title’ sorts alphabetically, ‘pubdate’ sorts by publication date (newest first). Omit for the default citation-count sort. | ||
max_pages |
integer | 1 |
For mode=search and author_articles only. Maximum number of result pages to fetch. Use 0 for no limit. Defaults to 1. | |
num |
integer | For mode=search (1-20) and mode=author_articles (1-100). Page size for paginated modes. Defaults to 10 for search, 20 for author_articles. |
Example arguments:
{
"helloWorld": 123
}
Output
The tool returns JSON rows with these fields.
| Field | Type | Description |
|---|---|---|
_mode |
string | Mode |
_query_index |
integer | Page Number or Call Index |
search_parameters |
object | Search Parameters |
search_parameters.mode |
string | Mode |
search_parameters.q |
string | Query |
search_parameters.author_id |
string | Author ID |
search_parameters.result_id |
string | Result ID |
search_parameters.citation_id |
string | Citation ID |
search_parameters.cites |
string | Cites |
search_parameters.cluster |
string | Cluster |
search_parameters.hl |
string | UI Language |
search_parameters.lr |
string | Language Restriction |
search_parameters.as_ylo |
integer | Min Year |
search_parameters.as_yhi |
integer | Max Year |
search_parameters.scisbd |
string | Sort By Date |
search_parameters.as_sdt |
string | Search Filter |
search_parameters.safe |
string | Safe Search |
search_parameters.filter |
string | Filter Similar |
search_parameters.as_vis |
string | Include Citations |
search_parameters.as_rr |
string | Review Only |
search_parameters.sort |
string | Sort |
search_parameters.max_pages |
integer | Max Pages |
search_parameters.num |
integer | Per Page |
search_metadata_status |
string | API Response Status |
search_timestamp |
string | Search Timestamp |
position |
integer | Position On Page |
result_id |
string | Paper Result ID |
paper_title |
string | Paper Title |
link |
string | Paper URL |
snippet |
string | Snippet |
case_id |
string | Case ID |
publication_info |
object | Publication Info |
publication_info.summary |
string | Summary |
publication_info.authors |
array | Authors |
resources |
array | Resource Links |
inline_links |
object | Inline Links |
inline_links.cited_by_total |
integer | Cited By Total |
inline_links.cited_by_link |
string | Cited By URL |
inline_links.cited_by_cites_id |
string | Cites ID |
inline_links.versions_total |
integer | Versions Total |
inline_links.versions_link |
string | Versions URL |
inline_links.versions_cluster_id |
string | Cluster ID |
inline_links.related_pages_link |
string | Related Pages URL |
inline_links.cached_page_link |
string | Cached Page URL |
style |
string | Citation Style |
text |
string | Formatted Citation Text |
export_links |
array | Bibliography Export Links |
author |
object | Author |
author.name |
string | Name |
author.affiliations |
string | Affiliations |
author.email |
string | Email Domain |
author.website |
string | Website |
author.thumbnail |
string | Photo URL |
author.interests |
array | Interests |
cited_by_summary |
object | Citation Metrics |
cited_by_summary.citations_all |
integer | Citations (All) |
cited_by_summary.citations_recent |
integer | Citations (Recent) |
cited_by_summary.h_index_all |
integer | h-index (All) |
cited_by_summary.h_index_recent |
integer | h-index (Recent) |
cited_by_summary.i10_index_all |
integer | i10-index (All) |
cited_by_summary.i10_index_recent |
integer | i10-index (Recent) |
cited_by_summary.recent_since_year |
integer | Recent Window Start Year |
cited_by_graph |
array | Citations Per Year |
public_access |
object | Public Access |
public_access.link |
string | Mandate URL |
public_access.available |
integer | Articles Available |
public_access.not_available |
integer | Articles Not Available |
co_authors_preview |
array | Co-Authors Preview |
articles_preview |
array | Articles Preview |
article_position |
integer | Article Position |
citation_id |
string | Citation ID |
authors |
string | Authors String |
publication |
string | Publication Venue |
year |
string | Year |
cited_by_value |
integer | Cited By Count |
cited_by_link |
string | Cited By URL |
publication_date |
string | Publication Date |
journal |
string | Journal |
volume |
string | Volume |
issue |
string | Issue |
16 more fields are listed in the Actor’s dataset schema on Apify.
Links
- Actor on Apify: johnvc/google-scholar-api
- Data source page on AlphaOSINT: /sources/google-scholar/
- All AlphaOSINT MCP servers: /mcp/