# Google Scholar Scraper (`solidcode/google-scholar-scraper`) Actor

\[💰 $2.0 / 1K] Extract academic papers, author profiles, h-index, i10-index, citation counts, abstracts, and PDF links from Google Scholar. Batch search queries and author IDs, filter by year range, sort by relevance or date.

- **URL**: https://apify.com/solidcode/google-scholar-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Automation, Developer tools, AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Scholar Scraper

Pull academic papers, author profiles, and citation data from Google Scholar at scale — complete with h-index, i10-index, citation counts, BibTeX entries, and formatted MLA/APA/Chicago/Harvard/Vancouver citations. Built for researchers, analysts, and content teams who need a clean, structured academic dataset without wrestling with Scholar's HTML one page at a time.

### Why This Scraper?

- **Papers, authors, and citations in one actor** — search Scholar by keywords, pull complete author profiles by ID, and follow the "Cited by" graph. One run, one dataset.
- **Batch everything** — many queries and many author IDs in a single invocation. Pay once for the setup, get all your results in one place.
- **Up to 1,000 papers per query** — hits Google Scholar's own upper bound with smooth pagination and no duplicates.
- **Year range and date-sorted results** — narrow to a publication window or sort by most-recent-first to surface the latest literature.
- **BibTeX and formatted citations on demand** — enrich every paper with a ready-to-paste BibTeX entry and MLA, APA, Chicago, Harvard, and Vancouver citation strings.
- **20+ languages and 40+ countries** — localize results with language and country controls for regional coverage.
- **No API key, no sign-up** — Google Scholar has no public API. This is the fastest path from a keyword to a clean academic dataset.

### Use Cases

**Academic Research & Literature Reviews**
- Build a ranked reading list for a new research topic in minutes
- Track the citation graph of a seminal paper to find follow-up work
- Discover adjacent researchers via the "Cited by" chain

**Competitive & Industry Intelligence**
- Monitor what research labs or university groups are publishing on a topic
- Benchmark academic output of competing institutions by author ID
- Detect emerging sub-fields from a burst of recent publications

**Grant Writing & Funding Prep**
- Assemble a bibliography of prior work to justify a new grant proposal
- Quantify a lab's impact with total citations, h-index, and i10-index
- Identify gaps in the literature to frame a novel research question

**Bibliometrics & Research Analytics**
- Build citation-count time series for meta-analysis or scientometrics
- Analyze author productivity trends across years
- Map co-author networks from author profile data

**SEO & Content Research**
- Back marketing claims with peer-reviewed sources
- Find credible experts to quote or interview for long-form content
- Surface studies that competitors cite to match their evidence depth

**Education & Curriculum Design**
- Compile course reading lists from the most-cited papers in a field
- Discover open-access PDF versions of academic texts
- Track which textbook chapters or papers are cited in recent syllabi

### Getting Started

#### Basic Keyword Search

The simplest possible run — one topic, 50 papers:

```json
{
    "searchQueries": ["quantum error correction"],
    "maxResults": 50
}
````

#### Filtered Search (Year + Language + Country)

Narrow to recent papers and localize for a European audience:

```json
{
    "searchQueries": ["large language models healthcare"],
    "yearFrom": 2023,
    "yearTo": 2025,
    "sortBy": "date",
    "language": "de",
    "country": "de",
    "maxResults": 100
}
```

#### Author Profile Lookup

Pull a complete profile by Scholar author ID — metrics, research interests, co-authors, and the full publication list. Paste either the ID or the full URL:

```json
{
    "authorIds": [
        "JicYPdAAAAAJ",
        "https://scholar.google.com/citations?user=5KJrNtoAAAAJ&hl=en"
    ],
    "maxResults": 200
}
```

To find an author ID, open any Google Scholar author page and copy the value after `user=` in the URL.

#### Combined Search + Citation Graph

Fetch papers for a query, then follow each paper's "Cited by" link:

```json
{
    "searchQueries": ["attention is all you need"],
    "authorIds": ["JicYPdAAAAAJ"],
    "includeCitations": true,
    "maxCitationsPerPaper": 50,
    "includeAbstracts": true,
    "maxResults": 10
}
```

#### Bibliography Export (BibTeX + Formatted Citations)

Pull a topic's top papers with ready-to-paste BibTeX entries and pre-formatted citations:

```json
{
    "searchQueries": ["bert language model"],
    "includeBibtex": true,
    "maxResults": 20
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `["machine learning healthcare"]` | Keywords to search on Google Scholar. Each query produces its own set of paper results. |
| `authorIds` | string\[] | `[]` | Google Scholar author IDs or full profile URLs. Paste either the 10-14 character ID (`JicYPdAAAAAJ`) or the URL. |

#### Results

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `50` | Maximum papers per search query. Google Scholar caps at roughly 1,000 results. Set to `0` for everything available. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `yearFrom` | integer | null | Only include papers published in this year or later. |
| `yearTo` | integer | null | Only include papers published in this year or earlier. |
| `sortBy` | string | `"relevance"` | `"relevance"` keeps Scholar's default ranking. `"date"` sorts most recent first. |

#### Localization

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `language` | string | `"en"` | Scholar interface and snippet language. 20 options including English, Spanish, German, French, Japanese, Chinese, Arabic, and more. |
| `country` | string | `"us"` | Country code for regional localization. 45 options across the Americas, Europe, Asia-Pacific, and MENA. |

#### Enrichment

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeAbstracts` | boolean | `true` | Include the snippet/abstract text for each paper. |
| `includeCitations` | boolean | `false` | For each paper, follow the "Cited by" link and return citing papers. Significantly increases runtime and cost. |
| `maxCitationsPerPaper` | integer | `20` | Cap on citing papers per source paper when `includeCitations` is on. Up to `200`. |
| `includeBibtex` | boolean | `false` | Enrich every paper row with a BibTeX entry and MLA/APA/Chicago/Harvard/Vancouver citation strings. Adds two extra Scholar requests per paper. |

### Output

Every row carries a `recordType` field — `paper`, `authorProfile`, or `citingPaper` — so you can filter cleanly downstream.

#### Paper (`recordType: "paper"`)

```json
{
    "recordType": "paper",
    "query": "attention is all you need",
    "rank": 1,
    "title": "Attention is all you need",
    "url": "https://proceedings.neurips.cc/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html",
    "authors": "A Vaswani, N Shazeer, N Parmar, J Uszkoreit",
    "authorList": ["A Vaswani", "N Shazeer", "N Parmar", "J Uszkoreit"],
    "year": 2017,
    "venue": "Advances in neural information processing systems",
    "abstract": "The dominant sequence transduction models are based on complex recurrent or convolutional neural networks...",
    "citationCount": 142301,
    "citedByUrl": "https://scholar.google.com/scholar?cites=2960712678066186980",
    "versionsCount": 73,
    "pdfUrl": "https://arxiv.org/pdf/1706.03762.pdf",
    "pdfSource": "arxiv.org"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"paper"` |
| `query` | string | The search query that produced this row |
| `rank` | number | Position in the query's result set |
| `title` | string | Paper title |
| `url` | string | Canonical paper URL (journal, arXiv, etc.) |
| `authors` | string | Comma-separated author line |
| `authorList` | string\[] | Authors split into an array |
| `year` | number | Publication year |
| `venue` | string | Journal, conference, or publisher |
| `abstract` | string | Snippet / abstract text |
| `citationCount` | number | Number of papers citing this one |
| `citedByUrl` | string | Scholar URL to the full citing-paper list |
| `versionsCount` | number | Number of versions Scholar found |
| `pdfUrl` | string | Direct PDF link when Scholar lists one |
| `pdfSource` | string | Host domain of the PDF link |
| `bibtex` | string | Raw BibTeX entry — only when `includeBibtex: true` |
| `formattedCitations` | object | `{mla, apa, chicago, harvard, vancouver}` strings — only when `includeBibtex: true` |

#### Author Profile (`recordType: "authorProfile"`)

```json
{
    "recordType": "authorProfile",
    "authorId": "JicYPdAAAAAJ",
    "name": "Geoffrey Hinton",
    "affiliation": "Emeritus Prof. Computer Science, University of Toronto",
    "homepageUrl": "http://www.cs.toronto.edu/~hinton",
    "interests": ["machine learning", "artificial intelligence", "cognitive science"],
    "totalCitations": 1029825,
    "hIndex": 190,
    "i10Index": 526,
    "citationHistogram": [
        {"year": 2023, "count": 112043}
    ],
    "coAuthors": [
        {"authorId": "m1qAiOUAAAAJ", "name": "Yann LeCun"}
    ],
    "publications": [
        {
            "title": "Deep learning",
            "authors": "Y LeCun, Y Bengio, G Hinton",
            "venue": "Nature 521 (7553), 436-444",
            "year": 2015,
            "citationCount": 82310
        }
    ]
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"authorProfile"` |
| `authorId` | string | Scholar author ID |
| `name` | string | Author's display name |
| `affiliation` | string | Affiliation text as shown on the profile |
| `verifiedEmailDomain` | string | Verified email domain (when opted in) |
| `homepageUrl` | string | Personal or institutional homepage |
| `interests` | string\[] | Research interest tags |
| `totalCitations` | number | All-time total citations |
| `hIndex` | number | All-time h-index |
| `i10Index` | number | All-time i10-index |
| `citationHistogram` | object\[] | Annual citation counts `[{year, count}, ...]` |
| `coAuthors` | object\[] | Linked co-authors with their own IDs |
| `publications` | object\[] | Full publication list with titles, venues, years, and citation counts |

The author profile also includes `*Since` variants (`totalCitationsSince`, `hIndexSince`, `i10IndexSince`) scoped to Scholar's recent window, plus `profileImageUrl`.

#### Citing Paper (`recordType: "citingPaper"`)

Emitted only when `includeCitations: true`. Capped at `maxCitationsPerPaper` per source paper.

```json
{
    "recordType": "citingPaper",
    "parentPaperTitle": "Attention is all you need",
    "title": "BERT: Pre-training of deep bidirectional transformers for language understanding",
    "url": "https://arxiv.org/abs/1810.04805",
    "authors": "J Devlin, MW Chang, K Lee, K Toutanova",
    "year": 2018,
    "venue": "arXiv preprint arXiv:1810.04805",
    "citationCount": 98421,
    "pdfUrl": "https://arxiv.org/pdf/1810.04805"
}
```

Same shape as a paper row, plus `parentPaperTitle`, `parentClusterId`, and `parentQuery` so you can join every citer back to the source paper it references.

### Tips for Best Results

- **Narrow the query.** Scholar returns the best 1,000 hits for any query — broad terms like "machine learning" will drown out the gems. Add a modifier (`"machine learning healthcare 2024"`) to get a tighter, more useful set.
- **Use the year filter to cut noise.** A `yearFrom: 2023` filter strips away decades of older work and dramatically improves signal for recent literature reviews.
- **Pick the right sort order.** `sortBy: "date"` surfaces the most recent work; `sortBy: "relevance"` keeps Scholar's citation-weighted ranking for foundational reading.
- **Combine `authorIds` and `searchQueries` in one run.** Pay for one start and get both a topic survey and the specific author profiles you care about.
- **Prefer smaller `maxResults` for faster runs.** If you need 50 papers, ask for 50 — not 1,000. Fewer pages means a quicker, cheaper run.
- **Turn off abstracts when you don't need them.** Setting `includeAbstracts: false` shrinks every row and speeds up large runs.
- **Use citations sparingly.** `includeCitations: true` multiplies row count by up to 20× per paper. Keep `maxResults` modest (5–20) when you switch it on.
- **Author profiles return at least 20 publications per request.** Scholar's profile pagination has a 20-publication minimum, so a `maxResults: 5` run on `authorIds` may still yield 20 publications in the `publications` array.

### Pricing

**$4.00 per 1,000 results** — matches the market rate for Scholar extraction while bundling author metrics and citation graphs at no extra charge.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.40 |
| 1,000 | $4.00 |
| 10,000 | $40.00 |
| 100,000 | $400.00 |

A "result" is any row in the output dataset — a paper, an author profile, or a citing paper. Platform fees (compute, storage) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate academic research, bibliometrics, literature review, and market intelligence. Users are responsible for complying with applicable laws and Google Scholar's terms of service, including making reasonable-rate requests and respecting content usage rules for any papers linked from Scholar. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Google Scholar (e.g., 'machine learning healthcare' or 'quantum error correction'). Each query produces its own set of paper results. Leave empty if you only want author profiles.

## `authorIds` (type: `array`):

Google Scholar author IDs or profile URLs to scrape full profiles (h-index, i10-index, citation counts, publication list). Paste either the 10-14 character ID (e.g., 'JicYPdAAAAAJ') or the full profile URL (e.g., 'https://scholar.google.com/citations?user=JicYPdAAAAAJ\&hl=en'). The ID is the value after `user=` in the URL.

## `maxResults` (type: `integer`):

Maximum number of papers to return per search query. Google Scholar caps searches at roughly 1,000 results. Set to 0 for all available results.

## `yearFrom` (type: `integer`):

Only include papers published in this year or later. Leave empty for no lower bound.

## `yearTo` (type: `integer`):

Only include papers published in this year or earlier. Leave empty for no upper bound.

## `sortBy` (type: `string`):

How to order paper results.

## `language` (type: `string`):

Language of the Scholar interface and result snippets.

## `country` (type: `string`):

Country code (gl) for result localization. Affects which regional mirror is used.

## `includeAbstracts` (type: `boolean`):

Include the snippet/abstract text for each paper. Disable to reduce dataset size.

## `includeCitations` (type: `boolean`):

For each paper, follow the 'Cited by' link and return the papers that cite it. This significantly increases runtime and cost — leave off unless you need citation graphs.

## `maxCitationsPerPaper` (type: `integer`):

When 'Include Citing Papers' is on, this caps how many citing papers are fetched per source paper. Default 20; higher values linearly increase runtime and cost.

## `includeBibtex` (type: `boolean`):

Also collect a BibTeX entry and formatted citation strings (MLA, APA, Chicago, Harvard, Vancouver) for every paper. Adds 2 extra requests per paper — useful for bibliography workflows.

## Actor input object example

```json
{
  "searchQueries": [
    "machine learning healthcare"
  ],
  "authorIds": [],
  "maxResults": 50,
  "sortBy": "relevance",
  "language": "en",
  "country": "us",
  "includeAbstracts": true,
  "includeCitations": false,
  "maxCitationsPerPaper": 20,
  "includeBibtex": false
}
```

# Actor output Schema

## `papers` (type: `string`):

Table of paper results with title, authors, year, venue, citations, and links.

## `authors` (type: `string`):

Author profile rows with h-index, i10-index, affiliation, and total citations.

## `citations` (type: `string`):

Papers that cite a parent paper (only present when 'Include Citing Papers' is enabled).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "machine learning healthcare"
    ],
    "authorIds": [],
    "maxResults": 50,
    "sortBy": "relevance",
    "language": "en",
    "country": "us",
    "includeAbstracts": true,
    "includeCitations": false,
    "maxCitationsPerPaper": 20,
    "includeBibtex": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/google-scholar-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["machine learning healthcare"],
    "authorIds": [],
    "maxResults": 50,
    "sortBy": "relevance",
    "language": "en",
    "country": "us",
    "includeAbstracts": True,
    "includeCitations": False,
    "maxCitationsPerPaper": 20,
    "includeBibtex": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/google-scholar-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "machine learning healthcare"
  ],
  "authorIds": [],
  "maxResults": 50,
  "sortBy": "relevance",
  "language": "en",
  "country": "us",
  "includeAbstracts": true,
  "includeCitations": false,
  "maxCitationsPerPaper": 20,
  "includeBibtex": false
}' |
apify call solidcode/google-scholar-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/google-scholar-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Scholar Scraper",
        "description": "[💰 $2.0 / 1K] Extract academic papers, author profiles, h-index, i10-index, citation counts, abstracts, and PDF links from Google Scholar. Batch search queries and author IDs, filter by year range, sort by relevance or date.",
        "version": "1.0",
        "x-build-id": "tZgAe4WGfzfLaYQqw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~google-scholar-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-google-scholar-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~google-scholar-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-google-scholar-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~google-scholar-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-google-scholar-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "Keywords to search on Google Scholar (e.g., 'machine learning healthcare' or 'quantum error correction'). Each query produces its own set of paper results. Leave empty if you only want author profiles.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "authorIds": {
                        "title": "Author IDs or Profile URLs",
                        "type": "array",
                        "description": "Google Scholar author IDs or profile URLs to scrape full profiles (h-index, i10-index, citation counts, publication list). Paste either the 10-14 character ID (e.g., 'JicYPdAAAAAJ') or the full profile URL (e.g., 'https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en'). The ID is the value after `user=` in the URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum Results per Query",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of papers to return per search query. Google Scholar caps searches at roughly 1,000 results. Set to 0 for all available results.",
                        "default": 50
                    },
                    "yearFrom": {
                        "title": "Year From",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include papers published in this year or later. Leave empty for no lower bound."
                    },
                    "yearTo": {
                        "title": "Year To",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include papers published in this year or earlier. Leave empty for no upper bound."
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "How to order paper results.",
                        "default": "relevance"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "es",
                            "de",
                            "fr",
                            "it",
                            "pt",
                            "nl",
                            "pl",
                            "tr",
                            "ru",
                            "ja",
                            "ko",
                            "zh-CN",
                            "zh-TW",
                            "ar",
                            "he",
                            "th",
                            "vi",
                            "id",
                            "hi"
                        ],
                        "type": "string",
                        "description": "Language of the Scholar interface and result snippets.",
                        "default": "en"
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "uk",
                            "ca",
                            "au",
                            "nz",
                            "ie",
                            "fr",
                            "de",
                            "es",
                            "it",
                            "nl",
                            "be",
                            "pt",
                            "ch",
                            "at",
                            "se",
                            "no",
                            "dk",
                            "fi",
                            "pl",
                            "jp",
                            "kr",
                            "cn",
                            "hk",
                            "tw",
                            "sg",
                            "my",
                            "th",
                            "id",
                            "ph",
                            "vn",
                            "in",
                            "br",
                            "mx",
                            "ar",
                            "cl",
                            "co",
                            "ae",
                            "sa",
                            "tr",
                            "il",
                            "za",
                            "eg"
                        ],
                        "type": "string",
                        "description": "Country code (gl) for result localization. Affects which regional mirror is used.",
                        "default": "us"
                    },
                    "includeAbstracts": {
                        "title": "Include Abstracts",
                        "type": "boolean",
                        "description": "Include the snippet/abstract text for each paper. Disable to reduce dataset size.",
                        "default": true
                    },
                    "includeCitations": {
                        "title": "Include Citing Papers",
                        "type": "boolean",
                        "description": "For each paper, follow the 'Cited by' link and return the papers that cite it. This significantly increases runtime and cost — leave off unless you need citation graphs.",
                        "default": false
                    },
                    "maxCitationsPerPaper": {
                        "title": "Max Citing Papers per Source Paper",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "When 'Include Citing Papers' is on, this caps how many citing papers are fetched per source paper. Default 20; higher values linearly increase runtime and cost.",
                        "default": 20
                    },
                    "includeBibtex": {
                        "title": "Include BibTeX",
                        "type": "boolean",
                        "description": "Also collect a BibTeX entry and formatted citation strings (MLA, APA, Chicago, Harvard, Vancouver) for every paper. Adds 2 extra requests per paper — useful for bibliography workflows.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
