Dataspryva

Google Scholar Paper & Citation Search Scraper

Search Google Scholar by keyword and get structured records for papers and citations, with author, venue, year, citation counts, and links to PDFs and related work. Filter by year range, document format, and article type.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringoptionalWhat to fetch: paper search, citing papers, or public author profiles.
queriesarrayoptionalKeywords or paper titles to search on Google Scholar (mode=search). Each query runs separately.
clusterIdsarrayoptionalPaper cluster IDs or Google Scholar 'cites=' URLs to list citing papers for (mode=citations).
Show all input fields
FieldTypeRequiredDescription
modestringoptionalWhat to fetch: paper search, citing papers, or public author profiles.
queriesarrayoptionalKeywords or paper titles to search on Google Scholar (mode=search). Each query runs separately.
clusterIdsarrayoptionalPaper cluster IDs or Google Scholar 'cites=' URLs to list citing papers for (mode=citations).
authorIdsarrayoptionalGoogle Scholar author IDs or profile URLs to export (mode=authorProfile).
maxItemsintegeroptionalMaximum papers per query or cluster, or papers per author. Google Scholar serves about 10 search results per page.
sortBystringoptionalSort search results by relevance or date (mode=search).
filterstringoptionalKeep only PDF or HTML results; applied to returned rows (mode=search).
articleTypestringoptionalReturn all articles or review articles only (mode=search).
newerThanintegeroptionalOnly include papers published in this year or later (mode=search).
olderThanintegeroptionalOnly include papers published in this year or earlier (mode=search).
authorstringoptionalReturn papers written by this author, e.g. 'Geoffrey Hinton' (mode=search).
publicationstringoptionalReturn papers from this journal or venue, e.g. 'Nature' (mode=search).
titleOnlybooleanoptionalMatch the query against paper titles instead of the full text (mode=search).
includeCitationFormatsbooleanoptionalAlso return MLA, APA, Chicago, Harvard, and Vancouver citations for returned rows, within a bounded budget (mode=search or citations).
includePaperDetailsbooleanoptionalFetch journal, volume, pages, publisher, and abstract for each author publication (mode=authorProfile).

Download the published input schema

View complete JSON
{
  "description": "Search Google Scholar papers, list citing papers, or export public author profiles. No account, API key, or proxy setup is needed.",
  "properties": {
    "articleType": {
      "default": "any",
      "description": "Return all articles or review articles only (mode=search).",
      "editor": "select",
      "enum": [
        "any",
        "review"
      ],
      "enumTitles": [
        "All articles",
        "Review articles only"
      ],
      "prefill": "any",
      "title": "Article Type",
      "type": "string"
    },
    "author": {
      "description": "Return papers written by this author, e.g. 'Geoffrey Hinton' (mode=search).",
      "editor": "textfield",
      "title": "Authored By",
      "type": "string"
    },
    "authorIds": {
      "description": "Google Scholar author IDs or profile URLs to export (mode=authorProfile).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Author IDs or Profile URLs",
      "type": "array"
    },
    "clusterIds": {
      "description": "Paper cluster IDs or Google Scholar 'cites=' URLs to list citing papers for (mode=citations).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Cluster IDs or Citing URLs",
      "type": "array"
    },
    "filter": {
      "default": "all",
      "description": "Keep only PDF or HTML results; applied to returned rows (mode=search).",
      "editor": "select",
      "enum": [
        "all",
        "pdfOnly",
        "htmlOnly"
      ],
      "enumTitles": [
        "All formats",
        "PDF only",
        "HTML only"
      ],
      "prefill": "all",
      "title": "Document Format",
      "type": "string"
    },
    "includeCitationFormats": {
      "default": false,
      "description": "Also return MLA, APA, Chicago, Harvard, and Vancouver citations for returned rows, within a bounded budget (mode=search or citations).",
      "prefill": false,
      "title": "Include Citation Formats",
      "type": "boolean"
    },
    "includePaperDetails": {
      "default": false,
      "description": "Fetch journal, volume, pages, publisher, and abstract for each author publication (mode=authorProfile).",
      "prefill": false,
      "title": "Include Paper Details",
      "type": "boolean"
    },
    "maxItems": {
      "default": 100,
      "description": "Maximum papers per query or cluster, or papers per author. Google Scholar serves about 10 search results per page.",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum Results",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "What to fetch: paper search, citing papers, or public author profiles.",
      "editor": "select",
      "enum": [
        "search",
        "citations",
        "authorProfile"
      ],
      "enumTitles": [
        "Search papers",
        "List citing papers",
        "Export author profile"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "newerThan": {
      "description": "Only include papers published in this year or later (mode=search).",
      "maximum": 2030,
      "minimum": 1900,
      "title": "Published After (Year)",
      "type": "integer"
    },
    "olderThan": {
      "description": "Only include papers published in this year or earlier (mode=search).",
      "maximum": 2030,
      "minimum": 1900,
      "title": "Published Before (Year)",
      "type": "integer"
    },
    "publication": {
      "description": "Return papers from this journal or venue, e.g. 'Nature' (mode=search).",
      "editor": "textfield",
      "title": "Published In",
      "type": "string"
    },
    "queries": {
      "description": "Keywords or paper titles to search on Google Scholar (mode=search). Each query runs separately.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "attention is all you need"
      ],
      "title": "Search Queries",
      "type": "array"
    },
    "sortBy": {
      "default": "relevance",
      "description": "Sort search results by relevance or date (mode=search).",
      "editor": "select",
      "enum": [
        "relevance",
        "date"
      ],
      "enumTitles": [
        "Relevance",
        "Newest first"
      ],
      "prefill": "relevance",
      "title": "Sort By",
      "type": "string"
    },
    "titleOnly": {
      "default": false,
      "description": "Match the query against paper titles instead of the full text (mode=search).",
      "prefill": false,
      "title": "Search Titles Only",
      "type": "boolean"
    }
  },
  "schemaVersion": 1,
  "title": "Google Scholar Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
resultsstringoptionalDataset containing scraped papers, citing papers, or author profiles.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Papers, citing papers, and public author profiles from Google Scholar, with authors, venue, year, citation counts, PDF links, cluster IDs, and researcher metrics.",
  "properties": {
    "results": {
      "description": "Dataset containing scraped papers, citing papers, or author profiles.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Scholar Results",
      "type": "string"
    }
  },
  "title": "Google Scholar Paper & Citation Search Scraper Output",
  "type": "object"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "title": "Scholar Results",
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "authors": {
            "format": "text",
            "label": "Authors"
          },
          "citations": {
            "format": "number",
            "label": "Citations"
          },
          "clusterId": {
            "format": "text",
            "label": "Cluster"
          },
          "documentLink": {
            "format": "link",
            "label": "PDF/HTML"
          },
          "documentType": {
            "format": "text",
            "label": "Type"
          },
          "link": {
            "format": "link",
            "label": "Link"
          },
          "name": {
            "format": "text",
            "label": "Author"
          },
          "publication": {
            "format": "text",
            "label": "Publication"
          },
          "recordType": {
            "format": "text",
            "label": "Record"
          },
          "scholarUrl": {
            "format": "link",
            "label": "Scholar URL"
          },
          "searchQuery": {
            "format": "text",
            "label": "Query"
          },
          "title": {
            "format": "text",
            "label": "Title"
          },
          "year": {
            "format": "number",
            "label": "Year"
          }
        }
      },
      "title": "Results",
      "transformation": {
        "fields": [
          "recordType",
          "title",
          "name",
          "authors",
          "year",
          "publication",
          "citations",
          "documentType",
          "documentLink",
          "link",
          "clusterId",
          "scholarUrl",
          "searchQuery"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Google Scholar Paper & Citation Search Scraper

Search Google Scholar for papers, follow their citations, and export public researcher profiles as clean structured data. One actor covers keyword search with year and review filters, citing-paper lists, author metrics such as h-index and i10-index, PDF links, citation styles, and cluster identifiers for follow-up queries. No Google account, API key, or proxy setup is needed.

What this actor does

  • Three modes: search finds papers by keyword, citations lists papers that cite a known article, and authorProfile exports a public researcher profile with its publication list.
  • Paper search filters: year range, newest-first sorting, review articles only, and client-side PDF/HTML filtering. Optional advanced filters narrow results by author, venue, or title-only matching.
  • Citing papers: pass a Scholar cluster ID or a cites= URL and receive the citing works with the same paper fields.
  • Author profiles: name, affiliation, verified email domain, homepage, research interests, citations, h-index, i10-index (all-time and recent), plus the paginated publication table.
  • Citation styles: optionally add MLA, APA, Chicago, Harvard, and Vancouver text for returned results, with a bounded time budget so search rows are still saved if formats are slow.
  • Honest data: PDF links point at the file Scholar lists, book and citation-only rows are typed correctly, duplicate rows within each query or citation list are removed, and empty fields are omitted.

Output per record

Every record has a recordType: paper, citation, or author.

Paper and citation records

  • title — paper or article title
  • link — publisher or landing-page URL
  • documentLink — direct PDF or HTML file URL, when Scholar lists one
  • documentType — PDF, HTML, PS, or omitted
  • authors — author names as shown by Scholar
  • publication — journal, conference, or venue text from Scholar (some rows include the publisher or source domain)
  • year — publication year
  • source — hosting domain, such as arxiv.org, when Scholar separates it from the venue
  • fullAttribution — the complete attribution line from Scholar
  • searchMatch — snippet showing where the query matched
  • citations — cited-by count (0 when Scholar shows none)
  • citationsLink — link to the citing-paper list
  • relatedArticlesLink — link to related articles
  • versions / versionsLink — version count and link, when Scholar shows them
  • type — ARTICLE, BOOK, or CITATION
  • resultIndex — position in the result list (0-based)
  • clusterId — Scholar cluster ID, useful for citation lookups
  • resultId — Scholar's internal result ID
  • scholarUrl — Scholar page for the article cluster
  • authorIds / authorProfileUrls — linked author profiles
  • doi — clean DOI parsed from the result URL when present; Scholar does not expose a DOI field directly
  • citationFormats — mla, apa, chicago, harvard, vancouver when requested
  • searchQuery — the query that found the paper (search mode)
  • citedByOf — the cluster ID being cited (citations mode)
  • scrapeTimestamp — ISO 8601 scrape time

Author records

  • authorId, profileUrl, name, affiliation
  • verifiedEmailDomain, homepageUrl, interests, thumbnailUrl
  • citations, citationsSince, hIndex, hIndexSince, i10Index, i10IndexSince, metricsSinceYear
  • publications — title, authors, venue, year, citations, Scholar URL, citation ID, and optional journal/volume/issue/pages/publisher/abstract/publication date/total citations
  • publicationCount
  • scrapeTimestamp

Input

Field Type Default Description
mode string search search, citations, or authorProfile
queries array ["attention is all you need"] Search terms for mode=search
clusterIds array – Cluster IDs or cites= URLs for mode=citations
authorIds array – Author IDs or profile URLs for mode=authorProfile
maxItems integer 100 Maximum papers per query/cluster, or papers per author (1–1000)
sortBy string relevance relevance or date
filter string all all, pdfOnly, or htmlOnly
articleType string any any or review
newerThan integer – Earliest publication year
olderThan integer – Latest publication year
author string – Return papers by this author
publication string – Return papers from this venue
titleOnly boolean false Match the query against titles
includeCitationFormats boolean false Add five citation styles for returned rows within a bounded budget; a slow format lookup never drops the search rows
includePaperDetails boolean false Add journal, volume, issue, pages, publisher, publication date, abstract, and total citations to author publications

Examples

Search recent review papers on a medical topic

{
    "mode": "search",
    "queries": ["cancer immunotherapy"],
    "maxItems": 30,
    "articleType": "review",
    "newerThan": 2022
}

Find papers by a specific author in a specific venue

{
    "mode": "search",
    "queries": ["quantum computing"],
    "author": "Andrew Steane",
    "publication": "Physical Review",
    "maxItems": 20
}

List papers that cite a known article

{
    "mode": "citations",
    "clusterIds": ["184251978817409129"],
    "maxItems": 50,
    "includeCitationFormats": true
}

Export an author profile with paper details

{
    "mode": "authorProfile",
    "authorIds": ["https://scholar.google.com/citations?user=-AXbSiwAAAAJ&hl=en"],
    "maxItems": 100,
    "includePaperDetails": true
}

Use cases

  • Literature reviews — collect a structured reading list and follow citation chains without copying rows from Scholar.
  • Bibliometrics — track citation counts, h-index, and i10-index for researchers or fields.
  • Research monitoring — rerun saved queries to catch new papers in a topic.
  • Citation analysis — export citing papers for one or more key articles.
  • Academic recruiting and grants — compare public publication records and recent citation metrics.
  • Data pipelines — feed clean JSON into a database, spreadsheet, or research assistant.

FAQ

Do I need a Google Scholar account, API key, or proxy?

No. The actor reads public Scholar pages and selects a working connection automatically. Just provide the input and run it.

Why do I get fewer results than maxItems?

Google Scholar serves about 10 search results per page and may return an empty or partial page for deep pagination. The actor retries on a fresh connection and stops with an honest status instead of inventing rows. For broad topics, split the query by year, venue, or author to reach more results.

What is a cluster ID and where do I find it?

A cluster ID identifies one article and all of its known versions on Scholar. It is the number in a cites= or cluster= URL, and it is also returned as clusterId on every search result. Use it as input to mode=citations to list citing papers.

Why is a DOI missing from some records?

Google Scholar does not show a DOI field on search results. The actor adds a DOI only when the result's URL contains one, so many records correctly omit it. It never guesses a DOI. Query strings, fragments, and common suffix paths such as /meta or .html are removed.

Which citation styles are supported?

MLA, APA, Chicago, Harvard, and Vancouver are returned as text when includeCitationFormats is enabled. The actor looks up each returned result ID, including deeper pages, within a bounded time budget. If Google Scholar is slow or blocks some format lookups, the already-collected paper rows are still saved and the run status reports how many rows received formats. The option adds one request per row, so it is slower than a plain search.

Scholar only shows a file link when it has indexed a PDF or HTML copy. The actor returns the real file URL and omits documentLink when no file is available. link still points to the publisher or landing page.

Why do author profiles not include coauthors?

Coauthor cards are not part of the public profile view; Scholar only exposes them through a signed-in editing dialog. The actor returns the public fields it can verify: affiliation, interests, metrics, and the publication list.

Can I search for an author by name and get their profile automatically?

Author-name profile search requires a Google sign-in, so the actor does not offer it. If you know the profile URL or user ID, paste it into authorIds; author names linked from search results are also returned in authorIds and authorProfileUrls.

How are year filters handled with newest-first sorting?

When a year range is set, the actor sends Scholar's server-side as_ylo/as_yhi bounds (even with sortBy: "date") and verifies the years on the returned rows. Newest-first order is then applied within each page, because Scholar ignores a global date sort when a year range is active. A 2020–2022 range therefore returns matching papers instead of a false empty result.

Is this affiliated with Google or Google Scholar?

No. This is an independent third-party actor that reads publicly available Google Scholar pages. It is not operated by or endorsed by Google.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build pdUktx8PmbvFPEYYD. Documentation is regenerated from the default published build; private drafts are not included.