Google Scholar Profiles Scraper
Pricing
$2.00 / 1,000 profile extracteds
Google Scholar Profiles Scraper
Extract Google Scholar author profiles, citation metrics, h-index, i10-index, publications, coauthors, and citation history in bulk.
Pricing
$2.00 / 1,000 profile extracteds
Rating
0.0
(0)
Developer
Zapticx
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
🎓 Google Scholar Profiles Scraper
Turn public Google Scholar author profiles into clean, structured data: citation counts, h-index, i10-index, citation history, publications and coauthors, for one researcher or a long list.
Built for research offices, bibliometric analysts and anyone maintaining a researcher directory. Paste profile links or author IDs, then export to CSV, Excel or JSON, or pull the results through the API.
💰 Pricing: $2.00 per 1,000 profiles. No start fee, and you only pay for profiles that are delivered.
Data source: Google Scholar
What can you do with this Actor?
- Academic research analytics: compare citation impact across a group of researchers.
- University research intelligence: build a current view of a department's output and collaborators.
- Scholar profile monitoring: schedule regular snapshots and track how metrics change.
- Citation analysis: chart year-by-year citations for an author or a single paper.
- Research collaboration mapping: use coauthor lists to see who works with whom.
- Bibliometric analysis: feed publication lists into your own models and dashboards.
- Researcher directory enrichment: add affiliation, interests and metrics to the records you already keep.
How to use this Actor
- 👉 Register for a free Apify account — no credit card required.
- 🎉 Just click Sign up free on Apify → and complete a quick signup.
- 💰 A free Apify account includes $5 in monthly credits — enough to test this Actor.
- ⏳ Start on Apify's free plan, with no commitment or upfront payment required.
- 🎓 Open the Actor and paste Google Scholar profile URLs or author IDs.
- ▶️ Click Start and export the results to JSON, CSV, Excel, or use them through the API.
Features
- Flexible input: profile URLs from any Scholar country domain, bare author IDs, or a dataset from an earlier run. Duplicates are removed automatically.
- Lifetime and recent metrics: citations, h-index and i10-index, with the exact recent window Scholar displays.
- Citation history: citations per year, with zero-citation years kept in place.
- Your choice of depth: metrics only, or up to 100 publications per profile, sorted by citations, year or title.
- Publication details: optionally open each paper for full author names, date, publisher, abstract, links and citations per year.
- Coauthors: the coauthors shown on the profile, with an option for the full list.
- Clear outcomes: every target gets a status, and failed, blocked or missing profiles are never charged.
- Safe batches: one bad profile never stops a run, and runs stop cleanly before their time limit.
- Easy recovery: every run saves a ready-to-paste input for the profiles worth retrying.
- Three ready-made views: Profiles, Publications and Coauthors, each as a clean table.
Data fields
Each profile is one record. These are the fields most people use, and the All fields view shows the rest.
| Field | Description |
|---|---|
status | Outcome for this target (see below) |
scholarId | Google Scholar author ID |
name | Author name |
affiliation | Affiliation as written on the profile |
emailDomain | Domain of the verified email, for example mit.edu |
verifiedEmail | Whether Scholar shows a verified email domain |
homepage | Homepage link |
interests | Research interest labels |
profileImageUrl | Profile photo, or null if the default avatar is shown |
citationsAll | Lifetime citations |
citationsRecent | Citations in the recent window |
hIndexAll | Lifetime h-index |
hIndexRecent | Recent h-index |
i10IndexAll | Lifetime i10-index |
i10IndexRecent | Recent i10-index |
recentPeriodLabel | The window as shown by Scholar, for example Since 2021 |
citationHistory | Citations per year, as far back as Scholar's graph shows |
publicAccessAvailable | Articles available under funding mandates, when shown. publicAccessNotAvailable holds the rest |
publications | Publications with title, authors, year, venue, citation count and links |
publicationsTruncated | True when your limit stopped collection and more publications exist |
coauthors | Coauthors with name, ID, profile link, affiliation and email domain |
warnings | Anything that reduced completeness for this record |
errorMessage | Plain-English reason when a target did not succeed |
scrapedAt | When the record was produced |
The status field tells you what happened:
| Status | Meaning | Charged |
|---|---|---|
success | The profile and everything requested were delivered | Yes |
partial | The profile was delivered, but an optional part failed. See warnings | Yes |
empty_profile | The profile exists but has no metrics or articles | No |
not_found | No public profile exists for this ID | No |
blocked | Google refused the request. Run this ID again | No |
failed | The profile could not be read after retries | No |
invalid_input | The value was not a valid profile URL or author ID | No |
not_processed | The run ended before reaching this profile | No |
Missing values are always null or an empty list. Nothing is guessed, and personal email addresses are never inferred from a domain.
Input
Only one of profileUrls, authorIds or inputDatasetId is needed. Everything else has a sensible default.
| Input | Type | Description |
|---|---|---|
profileUrls | array | Profile URLs. Bare author IDs also work here |
authorIds | array | 12-character author IDs |
inputDatasetId | string | ID of an Apify dataset holding URLs or IDs |
inputDatasetField | string | Dataset field to read, if it is not detected automatically |
maxProfiles | integer | Maximum profiles per run. Default 100, up to 10,000 |
maxPublicationsPerProfile | integer | Publications per profile, from 0 (metrics only) to 100. Default 20 |
includePublications | boolean | Collect publications. Default true |
publicationSort | string | citations, year, title or source. Default citations |
includeCitationHistory | boolean | Add citations per year. Default true |
includeCoauthors | boolean | Add the coauthors shown on the profile. Default true |
includeAllCoauthors | boolean | Fetch the full list when a profile shows its limit of 20. Default false |
includePublicationDetails | boolean | Open each publication's page. Default false |
maxPublicationDetailsPerProfile | integer | Detail pages per profile. Default 20, up to 100 |
maxConcurrency | integer | Profiles processed at once. Default 2, up to 5 |
minRequestDelayMs | integer | Minimum delay between requests. Default 1,000 |
maxRequestRetries | integer | Retries after temporary errors. Default 2 |
requestTimeoutSecs | integer | Timeout for one response. Default 30 |
proxyConfiguration | object | Connection settings. Apify Proxy is required, and the default works for most runs |
Example input:
{"profileUrls": ["https://scholar.google.com/citations?user=qc6CJjYAAAAJ&hl=en"],"authorIds": ["JicYPdAAAAAJ"],"maxPublicationsPerProfile": 20,"publicationSort": "citations","includeCoauthors": true}
Output
Results go to the run's dataset, with one record per author. Open the Profiles, Publications or Coauthors view for a clean table, and export any of them as JSON, CSV, Excel or through the API. Nested data in the All fields view expands into many columns in a spreadsheet, so the three views are usually easier to work with. With publication details on, a Publications CSV also includes per-paper citation history columns.
Retrying unfinished profiles
If any profiles end as blocked, failed or not_processed, choose Retry input in the selector on the run's Output tab. It holds a ready-made input with each ID listed once and your settings kept. Paste it into a new run. You are only charged for the profiles delivered this time.
{"authorIds": ["qc6CJjYAAAAJ", "JicYPdAAAAAJ"],"maxPublicationsPerProfile": 50}
Profiles marked not_found or invalid_input are left out, because a retry would not change the result. The Run summary record holds the same IDs grouped by status, along with the run's totals.
Example record
Real output, shortened to one publication and one coauthor:
{"status": "success","errorCode": null,"errorMessage": null,"scholarId": "DhtAFkwAAAAJ","name": "Kaiming He","affiliation": "Associate Professor, EECS, MIT","affiliationOrgId": "16345133980181568013","emailDomain": "mit.edu","verifiedEmail": true,"homepage": "https://people.csail.mit.edu/kaiming/","interests": ["Computer Vision","Machine Learning"],"profileImageUrl": "https://scholar.googleusercontent.com/citations?view_op=view_photo&user=DhtAFkwAAAAJ&citpid=8","profileUrl": "https://scholar.google.com/citations?user=DhtAFkwAAAAJ&hl=en","sourceUrl": "https://scholar.google.com/citations?user=DhtAFkwAAAAJ&hl=en","citationsAll": 894296,"citationsRecent": 707039,"hIndexAll": 78,"hIndexRecent": 74,"i10IndexAll": 95,"i10IndexRecent": 94,"recentPeriodLabel": "Since 2021","recentPeriodStartYear": 2021,"citationHistory": [{"year": 2024,"citations": 130865},{"year": 2025,"citations": 132240},{"year": 2026,"citations": 105965}],"publicAccessAvailable": 11,"publicAccessNotAvailable": 0,"publications": [{"ownerScholarId": "DhtAFkwAAAAJ","ownerName": "Kaiming He","title": "Deep Residual Learning for Image Recognition","authors": "K He, X Zhang, S Ren, J Sun","publicationYear": 2016,"publicationDate": null,"venue": "Computer Vision and Pattern Recognition (CVPR), 2016","publisher": null,"volume": null,"issue": null,"pages": "2016","description": null,"citationCount": 354124,"citationsMerged": false,"scholarPublicationId": "DhtAFkwAAAAJ:ALROH1vI_8AC","scholarPublicationUrl": "https://scholar.google.com/citations?user=DhtAFkwAAAAJ&hl=en&view_op=view_citation&citation_for_view=DhtAFkwAAAAJ:ALROH1vI_8AC","externalPublicationUrl": null,"pdfUrl": null,"citedByUrl": "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=9281510746729853742,7487146795671115667,2689236077899720732,5801613056663068940,9229762417497317300,17634140231156417900,7546803073980351828,10835837808483619908,14586216232957520117,9942392906694851393,18372721534470382083,47763651013056423,17937211382055683225,2028843693838236151,5605570888801956403,16013406159877531928,7329882628777945228,9499035182050352470,15594360731912031688,7454386611891521023,2049745923102830674,2336648171815687686,3318125700009504314,15462043844848318371,17590291061863551079,4974310621250679772,1902020056034411164","citationHistory": [],"detailsFetched": false}],"publicationCountExtracted": 1,"publicationsTruncated": true,"coauthors": [{"ownerScholarId": "DhtAFkwAAAAJ","ownerName": "Kaiming He","name": "Jian Sun","scholarId": "ALVSZAYAAAAJ","profileUrl": "https://scholar.google.com/citations?user=ALVSZAYAAAAJ&hl=en","affiliation": "Chief Scientist of Megvii, Managing Director of Megvii Research","emailDomain": "megvii.com"}],"coauthorCount": 1,"warnings": [],"scrapedAt": "2026-11-05T15:33:29.338Z"}
Pricing
| Event | Price | Per 1,000 |
|---|---|---|
| Profile extracted | $0.002 | $2.00 |
- You pay only for
successandpartialrecords. See the status table above. - There is no start fee, and platform usage is included in the price.
- Publications, coauthors, citation history and publication details are included. A profile costs the same whichever options you choose.
- Example: 500 delivered profiles cost $1.00.
- Set a maximum charge on your run if you want a hard ceiling. The Actor stops cleanly when it is reached.
Examples / Ready-to-use Tasks
Department citation snapshot
Metrics only, for a fast and low-cost overview of a group.
{"authorIds": ["JicYPdAAAAAJ", "kukA0LcAAAAJ", "WLN3QrAAAAAJ"],"includePublications": false,"includeCoauthors": false}
Recent output review
An author's 100 newest publications.
{"authorIds": ["kukA0LcAAAAJ"],"maxPublicationsPerProfile": 100,"publicationSort": "year"}
Collaboration map
Metrics plus every listed coauthor. Feed the coauthor IDs into your next run to grow the network one step at a time.
{"authorIds": ["gLnCTgIAAAAJ"],"maxPublicationsPerProfile": 0,"includeAllCoauthors": true}
Literature review with abstracts
The most cited papers of an author, with full metadata and abstracts.
{"authorIds": ["JicYPdAAAAAJ"],"maxPublicationsPerProfile": 10,"includePublicationDetails": true,"maxPublicationDetailsPerProfile": 10}
API & Integrations
Run the Actor from the Apify API, a schedule, or tools such as Make, Zapier and n8n. Use a webhook to send finished runs to Google Sheets, a database or a dashboard.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("zapticx/google-scholar-profiles-scraper").call(run_input={"authorIds": ["qc6CJjYAAAAJ"], "maxPublicationsPerProfile": 5})for profile in client.dataset(run.default_dataset_id).iterate_items():print(profile["status"], profile["name"], profile["citationsAll"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('zapticx/google-scholar-profiles-scraper').call({authorIds: ['qc6CJjYAAAAJ'],maxPublicationsPerProfile: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL:
curl -X POST "https://api.apify.com/v2/acts/zapticx~google-scholar-profiles-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"authorIds": ["qc6CJjYAAAAJ"], "maxPublicationsPerProfile": 5}'
Limitations
- Google may refuse some requests. Expect some profiles to end as
blocked. They are not charged, and running them again usually works. Full delivery cannot be promised, and the Actor does not solve CAPTCHAs. If many profiles in a row are refused, the run stops early. - Apify Proxy is required. Scholar refuses direct requests from Apify's servers.
- Public profiles only. Private or removed profiles return
not_found. - Up to 100 publications per profile.
publicationsTruncatedshows when an author has more. - List data can be shortened. Scholar's list can abbreviate authors and venues, and volume, issue and pages are filled only when they are clear. Publication details give the full text but take longer.
- Large lists take time. Raise the run timeout or split long lists. A run that reaches its limit stops cleanly and lists what it did not reach.
Built by Zapticx — AI automation and data solutions. zapticx.com
Search keywords
google scholar scraper, google scholar profiles scraper, google scholar api, apify google scholar, scholar author profile data, h-index extractor, i10-index data, citation metrics scraper, citation history data, academic publications scraper, coauthor network data, bibliometric data extraction, researcher directory data, university research analytics, google scholar data extraction
Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC.