# Google Scholar Authors Scraper (`aboo.script/google-scholar-authors-scraper`) Actor

\[💰$2 / 1K] ⚡ Fast, cheap Google Scholar author scraper. No login, no API key. Get profiles by profile or co-author list URL: affiliation, interests, citations, h-index, i10-index, citations per year, full co-author list and all publications. Perfect for research impact analysis.

- **URL**: https://apify.com/aboo.script/google-scholar-authors-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Scholar Authors Scraper

**Google Scholar Authors Scraper** extracts researcher profiles from [Google Scholar](https://scholar.google.com/) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a Google Scholar profile URL or a co-authors list URL, and get the name, affiliation, research interests, citations, h-index, i10-index, citations per year, co-authors, and publications of every author. No account or login required.

### Introduction

[Google Scholar](https://scholar.google.com/) is the largest free search engine for scholarly literature. Millions of researchers keep a public Google Scholar profile that lists their publications, citation counts, and co-authors, which makes it a key source for measuring research impact.

This actor collects the same public information you see on a Google Scholar profile and turns it into a ready-to-use dataset, one row per author. You can run it once, schedule it to run daily, or connect it to your own tools as a Google Scholar API alternative.

### What data can you extract from Google Scholar?

- 👤 Author name, Google Scholar author ID, and profile URL
- 🏛️ Affiliation, organization, and verified email domain
- 🌐 Homepage and profile photo
- 🔬 Research interests
- 📊 Citations, h-index, and i10-index, all time and for recent years
- 📈 Citations per year
- 🔓 Public access counts (articles available and not available)
- 🤝 Co-authors with name, affiliation, email domain, and profile URL (the full list, not only the 20 shown on the profile)
- 📚 Publications with title, authors, venue, year, number of citations, and links

### Use Cases

- 📈 **Research impact analysis**: compare citations, h-index, and citation trends of researchers, labs, or departments.
- 🎓 **Academic hiring and grants**: check the publication record of candidates and reviewers in minutes.
- 🤝 **Collaboration networks**: map who works with whom by following co-author lists.
- 🗂️ **Database building**: build your own catalog of researchers and their publications in a field.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Google Scholar step by step

1. Paste one or more Google Scholar profile URLs or co-authors list URLs into **Start URLs**.
2. Set **Maximum number of profiles** to how many co-authors you want per co-authors list URL.
3. Set **Maximum publications per profile** and choose how to **Sort publications by**.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: Google Scholar URLs to scrape. Supported pages: author profiles (for example `https://scholar.google.com/citations?user=JicYPdAAAAAJ`) and co-authors lists (the "View all" co-authors page, for example `https://scholar.google.com/citations?view_op=list_colleagues&user=JicYPdAAAAAJ`). Profile URLs from any Google Scholar country domain work, and a publication sort set in the URL is kept.
- **Maximum number of profiles**: how many author profiles to collect for each co-authors list URL. A profile URL always gives one profile. Use 0 for unlimited.
- **Maximum publications per profile**: how many publications to include for each author. Use 0 to get every publication of the profile.
- **Sort publications by**: order of the publication list, the same as on the profile page: most cited, newest first, or title.
- **Proxy configuration**: Google Scholar blocks requests from cloud servers, so a proxy is required. The default Apify datacenter proxy works; switch to residential proxies only if you see access errors.

### Input Examples

Scrape five well-known researchers and the co-authors of Geoffrey Hinton:

```json
{
  "startUrls": [
    { "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en" },
    { "url": "https://scholar.google.com/citations?user=WLN3QrAAAAAJ&hl=en" },
    { "url": "https://scholar.google.com/citations?user=kukA0LcAAAAJ&hl=en" },
    { "url": "https://scholar.google.com/citations?user=mG4imMEAAAAJ&hl=en" },
    { "url": "https://scholar.google.com/citations?user=rDfyQnIAAAAJ&hl=en" },
    { "url": "https://scholar.google.com/citations?view_op=list_colleagues&hl=en&user=JicYPdAAAAAJ" }
  ],
  "maxResults": 5,
  "maxPublications": 20,
  "sortPublicationsBy": "citations",
  "proxyConfiguration": { "useApifyProxy": true }
}
```

Get the full publication list of one author, newest first:

```json
{
  "startUrls": [{ "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en" }],
  "maxPublications": 0,
  "sortPublicationsBy": "year",
  "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output

Each author is saved as one item in the dataset. Here is an example of a single item (lists shortened):

```json
{
  "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en",
  "authorId": "JicYPdAAAAAJ",
  "name": "Geoffrey Hinton",
  "affiliation": "Emeritus Prof. Computer Science, University of Toronto",
  "organization": "University of Toronto",
  "organizationId": "8515235176732148308",
  "verifiedEmailDomain": "cs.toronto.edu",
  "homepage": "http://www.cs.toronto.edu/~hinton",
  "interests": [
    "machine learning",
    "psychology",
    "artificial intelligence",
    "cognitive science",
    "computer science"
  ],
  "photoUrl": "https://scholar.googleusercontent.com/citations?view_op=view_photo&user=JicYPdAAAAAJ&citpid=2",
  "citations": 1104747,
  "citationsRecent": 638891,
  "hIndex": 196,
  "hIndexRecent": 134,
  "i10Index": 552,
  "i10IndexRecent": 405,
  "recentSinceYear": 2021,
  "citationsPerYear": [
    { "year": 2024, "citations": 110714 },
    { "year": 2025, "citations": 119573 },
    { "year": 2026, "citations": 95549 }
  ],
  "publicAccessAvailable": 8,
  "publicAccessNotAvailable": 1,
  "coAuthors": [
    {
      "url": "https://scholar.google.com/citations?user=m1qAiOUAAAAJ&hl=en",
      "authorId": "m1qAiOUAAAAJ",
      "name": "Terrence Sejnowski",
      "affiliation": "Francis Crick Professor, Salk Institute, Distingished Professor, UC San Diego",
      "verifiedEmailDomain": "salk.edu"
    }
  ],
  "publicationsSort": "citations",
  "publications": [
    {
      "title": "Imagenet classification with deep convolutional neural networks",
      "url": "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=JicYPdAAAAAJ&citation_for_view=JicYPdAAAAAJ:VN7nJs4JPk0C",
      "citationId": "JicYPdAAAAAJ:VN7nJs4JPk0C",
      "authors": "A Krizhevsky, I Sutskever, GE Hinton",
      "venue": "Advances in neural information processing systems 25",
      "year": 2012,
      "citedBy": 202103,
      "citedByUrl": "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=2071317309766942398,1036029811429977192,13351982974043817797"
    }
  ]
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- Only author profile URLs and co-authors list URLs are supported. Author search, label (research interest) and organization pages on Google Scholar require a Google sign-in, so they are skipped with a warning. Open an author's profile and paste its URL instead.
- Profiles that were removed or made private are skipped.
- **Maximum number of profiles** only limits co-authors list URLs; each profile URL always returns exactly one author.
- Citations per year cover the years shown in the profile's citation chart. Years without citations are returned as 0.
- `citationsRecent`, `hIndexRecent`, and `i10IndexRecent` count citations since the year in `recentSinceYear`, as on the profile page.
- Some authors do not list a homepage, photo, organization, or verified email, so these fields are returned as `null`.
- Author names, venues, and other texts are returned in English, as shown on the profile.

### Why use the Google Scholar Authors Scraper?

- ✅ **No login needed**: works with public profiles only, so there is no account to manage.
- 📚 **Complete publication lists**: get every publication of a profile, not only the first page.
- 🤝 **Full co-author lists**: all co-authors of an author, plus the option to scrape each co-author's own profile.
- 🧹 **Clean data**: metrics are real numbers, and every author is one tidy row with nested lists.
- 💸 **Pay for what you need**: limit profiles and publications per run to keep every run small and cheap.
- 🔄 **Ready for automation**: schedule runs, export to Google Sheets, or connect to Make, Zapier, and n8n.

### FAQ

#### How many profiles can I scrape?

Add as many profile URLs as you like; each one gives one author. For co-authors list URLs, set **Maximum number of profiles** to the number of co-authors you want, or 0 for all of them.

#### Do I need a Google account?

No. The actor only collects publicly available profile data. You do not need to log in or provide any account details.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every day, week, or month, and track how citations and h-index change over time.

#### Why are some fields empty?

Some authors simply do not show every piece of information on their profile. When a field is not available, it is returned as `null`.

#### Can I request a new feature or input?

Yes. Right now the actor supports profile URLs and co-authors list URLs. If you need other inputs, such as more publication details, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

# Actor input Schema

## `startUrls` (type: `array`):

Google Scholar profile URLs, e.g. https://scholar.google.com/citations?user=JicYPdAAAAAJ, or co-author list URLs (the "View all" co-authors page), e.g. https://scholar.google.com/citations?view_op=list_colleagues\&user=JicYPdAAAAAJ, to scrape every co-author of a researcher. A sortby parameter in a profile URL (pubdate or title) is kept.

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

Maximum number of author profiles to scrape per co-author list URL. A profile URL always gives one profile. Use 0 for unlimited.

## `maxPublications` (type: `integer`):

Maximum number of publications to include for each author. Use 0 for all publications of the profile.

## `sortPublicationsBy` (type: `string`):

Order of the publication list, as on the profile page. A sortby parameter in a start URL takes priority.

## `proxyConfiguration` (type: `object`):

Proxy servers used to reach Google Scholar. Google Scholar blocks requests from cloud servers, so a proxy is required; the default Apify datacenter proxy works. Switch to residential proxies if you see access errors.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=WLN3QrAAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=kukA0LcAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=mG4imMEAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=rDfyQnIAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?view_op=list_colleagues&hl=en&user=JicYPdAAAAAJ"
    }
  ],
  "maxResults": 5,
  "maxPublications": 20,
  "sortPublicationsBy": "citations",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en"
        },
        {
            "url": "https://scholar.google.com/citations?user=WLN3QrAAAAAJ&hl=en"
        },
        {
            "url": "https://scholar.google.com/citations?user=kukA0LcAAAAJ&hl=en"
        },
        {
            "url": "https://scholar.google.com/citations?user=mG4imMEAAAAJ&hl=en"
        },
        {
            "url": "https://scholar.google.com/citations?user=rDfyQnIAAAAJ&hl=en"
        },
        {
            "url": "https://scholar.google.com/citations?view_op=list_colleagues&hl=en&user=JicYPdAAAAAJ"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/google-scholar-authors-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 = {
    "startUrls": [
        { "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en" },
        { "url": "https://scholar.google.com/citations?user=WLN3QrAAAAAJ&hl=en" },
        { "url": "https://scholar.google.com/citations?user=kukA0LcAAAAJ&hl=en" },
        { "url": "https://scholar.google.com/citations?user=mG4imMEAAAAJ&hl=en" },
        { "url": "https://scholar.google.com/citations?user=rDfyQnIAAAAJ&hl=en" },
        { "url": "https://scholar.google.com/citations?view_op=list_colleagues&hl=en&user=JicYPdAAAAAJ" },
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://scholar.google.com/citations?user=JicYPdAAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=WLN3QrAAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=kukA0LcAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=mG4imMEAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?user=rDfyQnIAAAAJ&hl=en"
    },
    {
      "url": "https://scholar.google.com/citations?view_op=list_colleagues&hl=en&user=JicYPdAAAAAJ"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call aboo.script/google-scholar-authors-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/google-scholar-authors-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/HTxLbraw2MaYW559o/builds/wblkyGNnJgoaZbITi/openapi.json
