Skip to content
Search API · Use case

Automate literature reviews with a Google Scholar API

A Google Scholar API turns a literature search into data: each paper comes back with its title, publication year, citation count and a direct PDF link when one exists. Research teams, R&D groups, grant writers and research agents all start a review the same way, and all lose hours copying results by hand. The Search API returns Scholar results as JSON you can sort, filter and read.

The problem

A literature review starts with hours of copying Scholar results

Scholar is where many literature searches begin, and it is built for reading one page at a time. Collecting the top papers across a dozen queries, noting citation counts and years, and finding which ones have a free PDF is manual work that starts over every time the research question shifts.

Scraping the results page yourself means parsing a byline that mixes authors, venue and year into one string, pulling citation counts out of link text, and keeping the requests from being blocked. Copying into a spreadsheet does not scale past a handful of queries, and it goes stale the week after.

type: scholar returns each paper with title, url, description, the byline as publisher, year and citations as numbers, a Scholar id and pdf.url when a direct PDF exists. Sort by citations, filter by year, and pass the PDFs or result.markdown() to whatever reads the papers.

How it works

How to collect papers and citation counts with the Google Scholar API

Run the queries that define the review, merge and rank the papers, then fetch the full text of the shortlist. The Scholar guide lists every field.

1 · Query and rank by citations
import createClient from 'microlink.io'

const microlink = createClient({
  apiKey: process.env.MICROLINK_API_KEY
})

const { results } = await microlink.search('retrieval augmented generation', {
  type: 'scholar'
})

const papers = results
  .sort((a, b) => b.citations - a.citations)
  .map(({ id, title, year, citations, publisher, pdf, url }) => ({
    id,
    title,
    year,
    citations,
    byline: publisher,
    pdf: pdf?.url,
    url
  }))

citations and year are numbers, so ranking needs no parsing. publisher is the Scholar byline, authors plus venue in one string, and pdf is present only when a direct PDF link exists.

2 · Merge several queries into one corpus
import createClient from 'microlink.io'

const microlink = createClient({
  apiKey: process.env.MICROLINK_API_KEY
})

const queries = [
  'retrieval augmented generation',
  'dense passage retrieval',
  'long context language models'
]

const pages = await Promise.all(
  queries.map(query => microlink.search(query, { type: 'scholar' }))
)

const corpus = new Map()
for (const { results } of pages) {
  for (const paper of results) {
    if (paper.year >= 2020) corpus.set(paper.id, paper)
  }
}

The Scholar id deduplicates papers that match several queries, and the year cut runs in your code. Three queries are three requests; call next() on any page for more depth.

3 · Read the shortlist
import createClient from 'microlink.io'

const microlink = createClient({
  apiKey: process.env.MICROLINK_API_KEY
})

const shortlist = Array.from(corpus.values())
  .sort((a, b) => b.citations - a.citations)
  .slice(0, 5)

const sources = await Promise.all(
  shortlist.map(async paper =>
    paper.pdf
      ? { title: paper.title, pdf: paper.pdf.url }
      : { title: paper.title, markdown: await paper.markdown() }
  )
)

Papers with a PDF link go to your PDF pipeline. For the rest, markdown() fetches the paper page as Markdown, one request per paper.

Parameters used
  • type 'scholar' returns title, url, description, publisher, year, citations, id and an optional pdf.
  • page Later results pages for broad topics, one request each.
  • limit Maximum number of papers per page.
  • markdown() Reads one paper page as Markdown, one request per call.

Scholar results are what Google Scholar ranks for a query, not a complete bibliography, and the citation count is the one Scholar shows. Treat the corpus as a starting point and record the queries and date with every review. For filings rather than papers, search prior art in Google Patents with the same client.

Why it works

Why a Scholar search API speeds up literature review automation

The slow part of a review is not reading, it is finding and triage. Structured results turn triage into a sort.

01 · Numbers, not strings
citations and year arrive as numbers.
Rank by influence, cut by recency and chart a field over time without parsing “Cited by” out of link text. The Scholar id gives every paper a stable key across your queries.

The academic research pattern sorts by citations and routes papers to PDF or Markdown the same way.

02 · Full text on demand
PDF link when it exists, Markdown when it does not.
pdf.url points to the document when Scholar lists a direct PDF. For the rest, markdown() reads the paper page, so a model can summarize the abstract without a scraper of its own.

Turn the PDFs themselves into text with PDF and document to Markdown conversion, which takes the pdf.url as input.

03 · Agent ready
A research agent can call it as a tool.
Search returns small structured results and expansion is a separate call, so an agent can search, pick the promising papers and read only those. The cost is one request per search and one per paper read.

When not to: Scholar results do not include reference lists, author profiles or h-index metrics. Each result is a paper with its citation count, and a systematic review still needs the databases its protocol names.

FAQ

How do I get citation counts from a Google Scholar API?

Call microlink.search with your query and type: 'scholar'. Every result carries citations and year as numbers, so sorting by citations surfaces the most cited papers first.

Can I download the papers found through the Scholar API?

When Scholar lists a direct PDF, the result includes pdf.url and you fetch it like any file. For papers without one, markdown() returns the paper page as Markdown. Access rights stay with the publisher.

How do I automate a literature review with Scholar results?

Run the queries that define the review, merge results by id, filter by year and citations in code, then expand the shortlist. Record the queries and the date, since results can change between runs.

How many requests does a Google Scholar search cost?

One per results page, plus one per paper you expand with markdown(). Search has no free tier: it is paid from the first request, and Pro plans start at €39/month for 46,000 requests with a 99.9% SLA.
No. Microlink Search is an independent product that queries public Google surfaces, Google Scholar included. It is not affiliated with or endorsed by Google, and Google is a trademark of Google LLC.
Related use cases

Solve the next problem with the same API

Prior art search in Google Patents

Search Google Patents from code and get inventor, assignee, priority, filing and grant dates and a PDF link for every filing.

Live search to ground LLM answers

Retrieve fresh results for a question, read the best sources as Markdown and pass them to the model with citations.

Keyword research with Google Autocomplete

Expand a seed into the queries people type, plus related searches and People Also Ask questions, per country.

PDF and office documents to Markdown

Convert PDF, DOCX, XLSX and PPTX URLs to readable Markdown with the same request you use for web pages.

LLM context from any URL

Compose Markdown, links, emails, metadata and tech stack from one URL into a context object for your agent.

Archive web articles as PDF

Keep readable, searchable PDFs of articles and docs, printed with their print styles and trimmed to the pages you need.

Ready to automate your literature review?

Papers, citation counts and PDF links from Google Scholar as JSON. Get a Pro key and build your first corpus today.