Google Scholar Scraper (Papers, Citations, Free PDFs) avatar

Google Scholar Scraper (Papers, Citations, Free PDFs)

Pricing

from $1.20 / 1,000 papers

Go to Apify Store
Google Scholar Scraper (Papers, Citations, Free PDFs)

Google Scholar Scraper (Papers, Citations, Free PDFs)

Scrape Google Scholar search results: paper titles, authors, venue, year, snippet, cited-by counts, version counts and free PDF or HTML links, from public Scholar result pages.

Pricing

from $1.20 / 1,000 papers

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

What is Google Scholar Scraper?

Google Scholar Scraper collects Google Scholar search results for any topic. For each paper it returns the title, link, authors, venue, year, a snippet, the cited-by count, the number of versions and a free PDF or HTML link when Scholar shows one. Use it for literature reviews, citation tracking, lists of papers per topic and research monitoring. It reads public Scholar result pages. No Google login is used, and no cookies are sent.

Each query walks Scholar's result pages (10 papers per page) until your result limit is reached or Scholar has no more results. One dataset row is one paper, and you pay per row.

What data does Google Scholar Scraper extract?

FieldTypeMeaning
resultIdstringScholar's own id for the paper (stable across runs)
positionnumberRank in the query's results (1 = first)
pagenumberScholar result page the row came from (10 per page)
querystringThe search query
titlestringPaper title, without the [PDF] or [BOOK] label
documentTypestring or nullScholar label such as BOOK, HTML, CITATION, when shown
urlstring or nullLink to the publisher or source page
authorsstring or nullAuthor list as Scholar prints it (often abbreviated, e.g. "R Van Noorden")
venuestring or nullJournal, conference or publisher line
yearnumber or nullPublication year
sourcestring or nullDomain or publisher shown by Scholar
snippetstring or nullText excerpt with the matched terms
citedBynumberCited-by count (0 when Scholar shows none)
citedByUrlstring or nullScholar page listing the papers that cite this one
versionsCountnumberNumber of Scholar versions of the paper
versionsUrlstring or nullScholar page listing all versions
freeAccessTypestring or nullPDF or HTML, when Scholar shows a free copy
freeAccessUrlstring or nullThe free copy link
scrapedAtstringISO timestamp of the scrape

How to use Google Scholar Scraper

  1. Open the Actor and enter one or more queries in "Search queries", one per line, e.g. solid-state battery.
  2. Set "Max results per query" (default 20, up to 100).
  3. Optional: set "Published from" and "Published to" years, or turn on "Sort by date".
  4. Leave "Connection mode" on Auto. It tries a direct request first and switches to a residential proxy only after Scholar blocks it.
  5. Start the run, then download the dataset as JSON, CSV or Excel, or read it through the API.

Example input

{
"queries": ["solid-state battery"],
"maxResultsPerQuery": 20
}

Example output

Real row from a run on 23 Oct 2026 (query federated learning, residential proxy):

{
"resultId": "FE0GVCg5twYJ",
"position": 1,
"page": 1,
"query": "federated learning",
"title": "A review of applications in federated learning",
"documentType": null,
"url": "https://www.sciencedirect.com/science/article/pii/S0360835220305532",
"authors": "L Li, Y Fan, M Tse , KY Lin",
"venue": "Computers & Industrial Engineering",
"year": 2020,
"source": "Elsevier",
"snippet": "… This TTF consists of FL API and Federated Core (FC) API. In detail, FL API offers a set of …",
"citedBy": 2339,
"citedByUrl": "https://scholar.google.com/scholar?cites=483918330336791828&as_sdt=2005&sciodt=0,5&hl=en",
"versionsCount": 6,
"versionsUrl": "https://scholar.google.com/scholar?cluster=483918330336791828&hl=en&as_sdt=0,5",
"freeAccessType": "PDF",
"freeAccessUrl": "https://orca.cardiff.ac.uk/id/eprint/134968/1/CAIE_A%20review%20of%20applications%20in%20federated%20learning_deposit.pdf",
"scrapedAt": "2026-10-23T10:02:44.909Z"
}

Input parameters

ParameterDefaultDescription
queriessolid-state batteryTopics or exact phrases, one per line, up to 20 per run
maxResultsPerQuery20Papers per query, 1 to 100
yearFromemptyEarliest publication year (four digits)
yearToemptyLatest publication year (four digits)
sortByDatefalseNewest papers first instead of Scholar relevance
proxyModeautoauto, direct (never proxy) or residential (always proxy)

Pricing

Pay per result: $2.00 per 1,000 papers on the free plan ($0.002 per paper). Volume tiers lower the price on paid Apify plans (down to $0.0008 per paper on Diamond).

Platform cost measured on 23 Oct 2026 at 256 MB: one run for 30 papers used $0.001 of platform usage, and one run for 10 papers used $0.002 (the CLI prints usage to three decimals, so these are rounded figures). Retries that wait on blocked requests add run time, and so cost.

Google Scholar Scraper vs. alternatives

This Actor returns Google Scholar's own ranking, cited-by counts and version lists, so it fits when those are the numbers you need. For a complete bibliographic index with a documented API, use a scholarly index service instead; this Actor does not replace one.

Using Google Scholar Scraper with AI agents / MCP

The Actor is available through the Apify MCP server and the Apify API. An agent sends queries and maxResultsPerQuery and reads the dataset rows. Keep maxResultsPerQuery small per query when an agent runs many queries, because the total charge is capped by the caller's maxTotalChargeUsd.

FAQ

Is this legal? The Actor reads public Scholar result pages, the same pages a person sees in a browser. It does not log in and does not bypass a login. Google's terms restrict automated access, so check them for your use case. You are responsible for how you use the data.

Why did a query return fewer results than I asked for? Scholar stops after a few pages for some queries, and some requests are soft-blocked. The Actor retries on fresh proxy sessions with a pause between attempts. Measured on 23 Oct 2026, transformer attention (100 requested, from 2020) returned 8 papers before a block, solid-state battery (100 requested, from 2020) returned 50, and federated learning (30 requested) returned all 30. Rerun the query later, or split the topic by publication year, to reach more papers.

Why did a query return 0 results? Scholar sometimes answers a valid query with the "did not match any articles" page, which looks the same as a real empty result. In a test on 23 Oct 2026, the unquoted graph neural network returned 0 papers from both the direct connection and the residential proxy, while the quoted phrase returned results from the same network. Try an exact phrase in quotes, or rerun the query later.

Why does the direct connection fail? From Apify datacenter IPs, Scholar answered HTTP 403 to direct requests in both direct-only test runs. Auto mode therefore switches to the residential proxy after one blocked request.

Can I call it from n8n, Make or Zapier? Those tools can start any Apify Actor through their Apify integrations. This was not tested for this Actor.

What about errors and limits? A run fails only when no paper is collected at all. If some queries are blocked, the run succeeds and logs which queries were blocked. Each run is capped by the caller's maximum charge, and the Actor stops adding rows when the cap is reached.

Other Actors from the same publisher are listed on its Apify profile.

Support

Open an issue on the Actor's Issues tab on Apify. Include the run ID, the input you used and the log lines that mention "Blocked".

Limitations

  • Scholar's public pages return at most a few pages for some queries before blocking.
  • Scholar's authors line is abbreviated ("R Van Noorden"), and it is not a DOI or ORCID. Use the url to find the full record.
  • freeAccessUrl is the link Scholar shows, which can be a repository copy or a preprint. It is not checked for licence terms.
  • Results are Scholar's ranking at scrape time. They change often, and two runs can differ.