Google Scholar Scraper - Papers, Citations, PDFs avatar

Google Scholar Scraper - Papers, Citations, PDFs

Pricing

$3.00 / 1,000 paper scrapeds

Go to Apify Store
Google Scholar Scraper - Papers, Citations, PDFs

Google Scholar Scraper - Papers, Citations, PDFs

Search Google Scholar result pages for academic papers, authors, venues, years, citation counts, snippets and PDF links. Choose OpenAlex for the previous academic metadata search with DOI identifiers and full abstracts when available.

Pricing

$3.00 / 1,000 paper scrapeds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

0

Monthly active users

7 days ago

Last modified

Features

Limited permissions

Share

Google Scholar Scraper: Academic Papers, Citations and PDFs

Google Scholar Scraper searches Google Scholar result pages and returns structured academic paper rows: titles, displayed authors, citation counts, publication years, snippets and PDF links. Use it for literature reviews, citation tracking and reading lists. Select OpenAlex when you need the previous metadata source with full author lists, DOI identifiers and complete abstracts where available.

The default source is now Google Scholar, identified by engine: "google_scholar" on each row. Choose engine: "openalex" to retain the previous OpenAlex source and ordering. Results and citations always belong to the selected index. A blocked Scholar search reports an error instead of silently changing sources. Existing paper field names and JSON types remain available for both sources.

Google Scholar Scraper input

queries is a required array of strings. Each non-empty query is trimmed, and duplicate queries are searched once in their first-occurrence order. An input containing only empty or whitespace strings produces an empty successful run with an input error in the errors record. There is no default query: the input editor prefills large language models as a starting example.

pages is an optional integer from 1 through 10. Its default is 1. Each page represents ten papers, so requesting two pages gives up to twenty papers per query and ten pages gives up to one hundred. Fewer papers may arrive when the index has fewer matches. The position field starts at 1 for each query and continues through that query's requested results.

engine accepts google_scholar (the default) or openalex. Existing tasks without an engine now search Scholar, matching the actor title. Add "engine": "openalex" to a saved task when you need the earlier source.

language optionally filters the publication language. Its default is the empty string, which searches every language. Values are trimmed and converted to lowercase before filtering. Use codes such as en, de, nl or fr. For Scholar, zh selects Simplified Chinese (zh-CN), while zh-TW selects Traditional Chinese. The historical english value selects en, and Hebrew he selects iw. Unsupported Scholar codes return an input error; OpenAlex keeps its previous language-filter behavior. Existing tasks containing the historical hl, use_proxy or use_cookies fields continue to work; these fields remain accepted and ignored for both sources. In particular, hl does not activate a publication-language filter.

This input was measured against the live actor:

{"queries": ["large language models"], "engine": "openalex"}

It returned ten papers on 3 October 2026. Search results and citation counts can change as the source index updates. Store the query and retrieval date when you need to compare successive runs.

Output fields and a real example

Each dataset row is one paper. The existing fields remain available:

  • position: integer rank within the paper's query.
  • title: the paper title, or null when the source has no title.
  • authors_venue: Scholar's displayed author and venue line; for OpenAlex, up to eight author names, the venue and year as one formatted string.
  • year: integer publication year, or null when unavailable.
  • cited_by_count: integer citation count from the selected source.
  • title_url: the paper link supplied by Scholar; for OpenAlex, the DOI, publisher landing page or work link.
  • pdf_url: direct PDF link when available, otherwise null.
  • snippet: the search-result excerpt from Scholar; the full reconstructed abstract, or empty text, from OpenAlex.
  • search_query: the trimmed query that produced the row.

Additional fields make the rows easier to combine with other academic data: source, fetched_at, engine, url, query, abstract, doi, authors, venue, language and openalex_id. The authors array contains the full list supplied by the source. Scholar names retain the displayed initials; when Scholar shortens the author list with an ellipsis, authors is empty. A shortened venue is null. The original displayed metadata remains available in authors_venue. Conference years inside a venue name remain part of that name; year uses the final publication year. Scholar does not provide a complete abstract or an OpenAlex identifier, so its abstract and openalex_id are empty strings. Its language is null because a filter is not proof of a paper's language. Missing DOI values are null. The normalized doi omits the DOI URL prefix and uses lowercase. A missing DOI is null.

The following OpenAlex row is an actual response retrieved on 3 October 2026. Select engine: "openalex" for this metadata format:

{
"position": 1,
"title": "Large language models in medicine",
"authors_venue": "Arun James Thirunavukarasu, Darren Shu Jeng Ting, Kabilan Elangovan, Laura Gutiérrez, Ting Fang Tan, Daniel Shu Wei Ting - Nature Medicine - 2023",
"year": 2023,
"cited_by_count": 3937,
"title_url": "https://doi.org/10.1038/s41591-023-02448-8",
"pdf_url": null,
"snippet": "",
"search_query": "large language models",
"source": "google-scholar-scraper",
"fetched_at": "2026-10-03T17:45:52.092Z",
"engine": "openalex",
"url": "https://doi.org/10.1038/s41591-023-02448-8",
"query": "large language models",
"abstract": "",
"doi": "10.1038/s41591-023-02448-8",
"authors": [
"Arun James Thirunavukarasu",
"Darren Shu Jeng Ting",
"Kabilan Elangovan",
"Laura Gutiérrez",
"Ting Fang Tan",
"Daniel Shu Wei Ting"
],
"venue": "Nature Medicine",
"language": "en",
"openalex_id": "https://openalex.org/W4384561707"
}

Missing abstracts and PDFs are ordinary source limitations. Scholar snippets are excerpts and are never presented as full abstracts. An empty abstract and null pdf_url preserve their existing JSON types. The actor does not invent a title, an abstract, an author list or a document link to fill a missing source value.

Pricing

The existing price remains $0.003 per delivered paper, charged through the paper event. There is no start fee. Ten delivered papers cost $0.03 and one hundred cost $0.30, before any platform execution charges. A query returning no papers creates no paper events. Charges follow the papers actually placed in the dataset.

Users without a paid Apify plan can search the first ten supplied query positions and receive up to ten paper rows in total, deduplicated within each query. Collection stops when those ten rows have been collected. If the first ten queries find nothing, later queries are outside the free run. The paper-event count is limited to delivered rows. Users on paid plans receive the full requested result set within the actor's run budget.

Summary and error records

The summary record keeps itemCount, errorCount and billableCount. itemCount counts unique collected papers; free runs stop collecting at ten rows; billableCount counts delivered papers eligible for charging. Additional run fields describe delivery, status and any warnings. The OUTPUT record includes the delivered row count and actual recorded charges.

The errors record is written only when errors occurred. Each search error preserves the string fields code, query, page and message. A failed query does not discard results from other queries. Searches with no matches finish successfully with an empty dataset and no paper charges. A source failure can also finish successfully with an empty dataset and an error record describing the failure.

Use cases and limits

Use the actor to collect literature-review candidates, follow citation counts over time, assemble reading lists or connect papers to other datasets by DOI. Citation counts measure this index's coverage and can differ from counts shown elsewhere. They are snapshots, so comparisons should use the same index and record retrieval dates.

A paper can appear under multiple different queries. Those rows remain separate, with their own search_query and position. If your downstream analysis needs one row per work, combine on title_url, or on a non-empty doi or openalex_id, after preserving which queries found the paper. Broad subjects can have far more matches than the one hundred papers per query this actor returns; use more specific queries to explore a topic further.

Google Scholar Scraper compared with other Google Scholar APIs

The default source returns Google Scholar's own search-result rows, in the order supplied for each query. Citation counts, displayed names and snippets reflect those pages. Scholar can abbreviate author and venue text, and it does not return complete abstracts on search pages. Broad searches can change between requests, so keep the retrieval date and query with your exported rows. Repeated paper URLs within one query are delivered and charged once, including across pages. The first source position is retained, so positions may have gaps after duplicate removal. The same paper may still appear for different queries.

Choose OpenAlex explicitly for its metadata index, complete author names, reconstructed abstracts and normalized DOI identifiers. OpenAlex results and citations can differ from Scholar results. The actor keeps the source visible through engine; it never combines their citation counts under one index label. Both modes use the same paper event and keep the existing dataset fields.

Large requests continue in bounded pieces. The actor collects those pieces automatically; callers of the direct product API repeat the original input with the returned cursor until next_cursor is null. Positions continue through the requested pages of each query, and a failed continuation keeps papers already collected. Pagination does not create an extra fee: delivered rows determine the paper-event count.

FAQ

Does Google Scholar Scraper return Google's exact ordering?

By default, rows follow the fetched Google Scholar pages and carry engine: "google_scholar". With engine: "openalex", ordering and citation counts come from OpenAlex instead. Rankings and result counts can change over time.

Is there an official Google Scholar API?

This actor provides structured data from Scholar search pages. It also offers the separate OpenAlex index through an explicit engine option. No source API key is part of the customer input.

Do I need a separate API key?

You supply queries and run the actor in Apify. No source API key is part of the customer input.

Why is an abstract or PDF missing?

Scholar search pages provide short snippets rather than complete abstracts. OpenAlex does not carry an abstract or PDF link for every work. The actor returns an empty abstract string or a null PDF URL when unavailable. A metadata result is still a delivered paper.

Can I search papers in another language?

Query text can contain any language. The optional language input restricts the publication language. Leave it empty to search across languages, including works without a language tag.

Are empty searches billed?

No paper event is charged when no paper rows are delivered. Empty and whitespace-only input also creates no paper events.

What happens to my existing saved tasks?

Input names, existing page and language defaults, and all paper fields remain available. The source now defaults to Google Scholar. Set engine: "openalex" to keep the previous source. The paper event and price stay the same.

⌂ 换网址