with one click
microlink-google
// Query Google search, news, images, videos, places, maps, shopping, scholar, patents, and autocomplete via @microlink/google structured data.
// Query Google search, news, images, videos, places, maps, shopping, scholar, patents, and autocomplete via @microlink/google structured data.
Automate browserless/Puppeteer headless Chrome for screenshots, PDFs, HTML/text extraction, status checks, Lighthouse audits, and browser pipelines.
Create project-local skills for Cursor and Claude Code when users ask to create, add, or update reusable repo instructions.
Retrieve normalized HTML from URLs with fetch or headless prerender for JS pages, absolute URL rewriting, and metadata extraction pipelines.
Tune Kubernetes HPA, topology spread, requests, and scale-down behavior for cluster cost audits, incidents, replica/node issues, and over-reservation.
Build @keyvhq/core key-value caches with TTL, namespaces, memoization, cache-aside patterns, and Redis/Mongo/MySQL/PostgreSQL/SQLite adapters.
Extract metadata from HTML with metascraper rules for link previews, Open Graph, Twitter Cards, JSON-LD, titles, images, authors, and custom parsers.
| name | microlink-google |
| description | Query Google search, news, images, videos, places, maps, shopping, scholar, patents, and autocomplete via @microlink/google structured data. |
Unified Node.js client for querying 10 Google verticals through the Microlink API. Returns normalized, structured data with pagination and lazy HTML fetching.
The only prerequisite to initialize @microlink/google is to have Microlink API key:
const google = require('@microlink/google')({
apiKey: process.env.MICROLINK_API_KEY
})
const page = await google('Lotus Elise S2')
console.log(page.results)
The query string supports standard Google search operators:
await google('annual report filetype:pdf')
await google('security updates site:github.com')
await google('"machine learning" site:arxiv.org')
const page = await google(query, options?)
| Option | Type | Default | Values |
|---|---|---|---|
type | string | 'search' | search, news, images, videos, places, maps, shopping, scholar, patents, autocomplete |
location | string | 'us' | ISO 3166-1 alpha-2 country code |
period | string | — | hour, day, week, month, year |
limit | number | — | Results per page |
const page = await google('node.js frameworks')
Page: results, knowledgeGraph?, peopleAlsoAsk?, relatedSearches?
Result: title, url, description, html()
KnowledgeGraph: title?, type?, website?, image?, description?, descriptionSource?, descriptionLink?, attributes?
const page = await google('artificial intelligence', { type: 'news' })
Result: title, url, description, date, publisher, image?, html()
const page = await google('northern lights', { type: 'images' })
Result: title, url, image { url, width, height }, thumbnail { url, width, height }, google?, creator?, credit?, html()
const page = await google('cooking tutorial', { type: 'videos' })
Result: title, url, description, image?, video?, duration?, duration_pretty?, publisher?, channel?, date?, html()
const page = await google('coffee shops denver', { type: 'places' })
Result: title, address, latitude, longitude, phone?, url?, cid, html()
const page = await google('apple store new york', { type: 'maps' })
Result: title, address, latitude, longitude, rating?, ratingCount?, price? { level }, type?, types?, url?, phone?, description?, opening?, thumbnail?, cid, fid?, place?, html()
const page = await google('macbook pro', { type: 'shopping' })
Result: title, url, publisher, price { symbol, amount }, image?, rating? { score, total, reviews? }, id?, html()
const page = await google('transformer architecture', { type: 'scholar' })
Result: title, url, description, publisher, year, citations, pdf?, id, html()
const page = await google('touchscreen gestures apple', { type: 'patents' })
Result: title, description, url, priority, filing, grant?, publication, inventor, assignee, language, pdf?, thumbnail?, figures?, id?, html()
const page = await google('how to', { type: 'autocomplete' })
Result: value (no url, no html())
Every page exposes .next() returning a promise of the next page:
const page1 = await google('query')
const page2 = await page1.next()
Iterate through all pages:
let page = await google('node.js frameworks')
while (page) {
for (const result of page.results) {
console.log(result.title)
}
page = await page.next()
}
Any result with a url exposes .html() to fetch the target page HTML on demand:
const { results } = await google('node.js frameworks')
const html = await results[0].html()
Page-level .html() fetches the Google SERP HTML itself.