Skill for microlink-google
Query 10 Google verticals (search, news, images, videos, places, maps, shopping, scholar, patents, autocomplete) as structured data via @microlink/google.
User intent
- fetch Google search results programmatically
- scrape Google SERP data
- build search-powered features
- retrieve Google News or Shopping data
- get place/map coordinates
- find academic papers
Installation
npx skills add https://github.com/microlinkhq/skills --skill microlink-google
# @microlink/google
Unified Node.js client for querying 10 Google verticals through the Microlink API. Returns normalized, structured data with pagination and lazy HTML fetching.
## Quick Start
The only prerequisite to initialize @microlink/google is to have [Microlink API key](https://microlink.io/#pricing):
```js
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](https://support.google.com/websearch/answer/2466433):
```js
await google('annual report filetype:pdf')
await google('security updates site:github.com')
await google('"machine learning" site:arxiv.org')
```
## Query Signature
```js
const page = await google(query, options?)
```
### 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 |
## Google Products
### Google Search (default)
```js
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?`
### Google News
```js
const page = await google('artificial intelligence', { type: 'news' })
```
**Result**: `title`, `url`, `description`, `date`, `publisher`, `image?`, `html()`
### Google Images
```js
const page = await google('northern lights', { type: 'images' })
```
**Result**: `title`, `url`, `image { url, width, height }`, `thumbnail { url, width, height }`, `google?`, `creator?`, `credit?`, `html()`
### Google Videos
```js
const page = await google('cooking tutorial', { type: 'videos' })
```
**Result**: `title`, `url`, `description`, `image?`, `video?`, `duration?`, `duration_pretty?`, `publisher?`, `channel?`, `date?`, `html()`
### Google Places
```js
const page = await google('coffee shops denver', { type: 'places' })
```
**Result**: `title`, `address`, `latitude`, `longitude`, `phone?`, `url?`, `cid`, `html()`
### Google Maps
```js
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()`
### Google Shopping
```js
const page = await google('macbook pro', { type: 'shopping' })
```
**Result**: `title`, `url`, `publisher`, `price { symbol, amount }`, `image?`, `rating? { score, total, reviews? }`, `id?`, `html()`
### Google Scholar
```js
const page = await google('transformer architecture', { type: 'scholar' })
```
**Result**: `title`, `url`, `description`, `publisher`, `year`, `citations`, `pdf?`, `id`, `html()`
### Google Patents
```js
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()`
### Google Autocomplete
```js
const page = await google('how to', { type: 'autocomplete' })
```
**Result**: `value` (no `url`, no `html()`)
## Pagination
Every page exposes `.next()` returning a promise of the next page:
```js
const page1 = await google('query')
const page2 = await page1.next()
```
Iterate through all pages:
```js
let page = await google('node.js frameworks')
while (page) {
for (const result of page.results) {
console.log(result.title)
}
page = await page.next()
}
```
## Lazy HTML Fetching
Any result with a `url` exposes `.html()` to fetch the target page HTML on demand:
```js
const { results } = await google('node.js frameworks')
const html = await results[0].html()
```
Page-level `.html()` fetches the Google SERP HTML itself.