Microlink API
HTTP API behind microlink.io. Use the microlink skill for product methods. This skill covers endpoints, query parameters, embed URLs, and extract rule patterns.
Quick Start
import createClient from 'microlink.io'
const microlink = createClient()
const microlinkPro = createClient({ apiKey: process.env.MICROLINK_API_KEY })
const { title, description } = await microlink.metadata('https://example.com')
npm install microlink.io
- Free:
https://api.microlink.io— 50 requests/day, no key - Pro:
https://pro.microlink.io— requiresapiKey(x-api-key)
When To Use What
- Metadata →
microlink.metadata(url) - Screenshot →
microlink.screenshot(url) - PDF →
microlink.pdf(url) - Specific DOM values →
microlink.extract(url, rules) - Direct asset URL (no JSON) →
embedquery param - JS-heavy pages →
prerender: trueor keepauto
Common Workflows
For copy-paste recipes, see common-workflows/README.md.
Parameters At A Glance
These are API query parameters. The product client routes well-known keys for you; everything else is forwarded as a top-level query param.
Core
url(required): target URL with protocolmeta(defaulttrue): metadata extractiondata: custom scraping rules (extract)filter: comma-separated output fieldsembed: return one field directly as the response body
Asset generation
screenshot/screenshot.*: create page imagepdf/pdf.*: create PDFvideo,audio: detect playable sources
Browser behavior
prerender:auto,true, orfalsewaitUntil,waitForSelector,waitForTimeout,timeoutdevice,viewport,javascript,animations,mediaTypeclick,scroll,scripts,modules,styles
Caching and performance
force: bypass cachettl(Pro): cache lifetimestaleTtl(Pro): stale-while-revalidate strategy
Pro-only
headers,proxy,filename,ttl,staleTtl
Scraping Patterns
Pass rules to microlink.extract(url, rules):
Single value
const { avatar } = await microlink.extract('https://example.com', {
avatar: { selector: '#avatar', attr: 'src', type: 'image' }
})
Collection
const { stories } = await microlink.extract('https://news.ycombinator.com', {
stories: { selectorAll: '.titleline > a', attr: 'text' }
})
Fallback list
const { title } = await microlink.extract('https://example.com', {
title: [
{ selector: 'meta[property="og:title"]', attr: 'content' },
{ selector: 'title', attr: 'text' },
{ selector: 'h1', attr: 'text' }
]
})
Nested object
const { stats } = await microlink.extract('https://example.com', {
stats: {
selector: '.profile',
attr: {
followers: { selector: '.followers', type: 'number' },
stars: { selector: '.stars', type: 'number' }
}
}
})
Evaluate JS in browser context
const { version } = await microlink.extract('https://example.com', {
version: { evaluate: 'window.next.version', type: 'string' }
})
Embed URLs
Return one field as the response body (useful in <img src>):
<img src="https://api.microlink.io/?url=https://example.com&screenshot=true&meta=false&embed=screenshot.url">
Useful paths: screenshot.url, pdf.url, image.url, logo.url, video.url.
Error Handling
import createClient, { MicrolinkError } from 'microlink.io'
const microlink = createClient()
try {
await microlink.screenshot('https://example.com')
} catch (error) {
if (error instanceof MicrolinkError) {
// error.status, error.code, error.message, error.statusCode
}
}
Common error codes: EAUTH, ERATE, EINVALURL, EBRWSRTIMEOUT, EPRO, ETIMEOUT.
Security And Reliability Rules
- Never expose
x-api-keyin client-side code. - Use
pro.microlink.iofor authenticated requests (setapiKeyon the client). - For frontend usage, use a server proxy (
microlinkhq/proxyormicrolinkhq/edge-proxy). - If a request is heavy and metadata is not needed, product methods already set
meta: false.
CLI
npx microlink.io <url|product> [flags]
npx microlink.io login
See microlink for every product as a subcommand.
Deep Reference
For complete parameter-by-parameter docs, full error matrix, and response headers, see api-reference.md.