browserless
browserless
browserless is a high-level wrapper on top of Puppeteer for reliable headless Chrome workflows.
Quick Start
Install
npm install browserless puppeteer
Minimal API usage
const createBrowser = require('browserless')
const { writeFile } = require('node:fs/promises')
const browser = createBrowser({ timeout: 30000 })
const browserless = await browser.createContext({ retry: 2 })
const screenshot = await browserless.screenshot('https://example.com')
await writeFile('screenshot.png', screenshot)
await browserless.destroyContext()
await browser.close()
When To Use What
- Use the API for reusable scripts, backend jobs, and multi-step browser flows.
- Use
@browserless/clifor one-off terminal commands and quick checks. - Use
@browserless/lighthouseonly when the task needs Lighthouse reports.
CLI Commands
Install once:
npm install -g @browserless/cli
Common commands:
browserless screenshot <url>browserless pdf <url>browserless html <url>browserless text <url>browserless status <url>browserless ping <url>browserless goto <url>browserless page-weight <url>browserless lighthouse <url>(requiresnpm install -g @browserless/lighthouse)
Core API Patterns
Capture screenshot
const buffer = await browserless.screenshot('https://example.com', {
device: 'iPhone 6',
waitUntil: 'auto'
})
Generate PDF
const buffer = await browserless.pdf('https://example.com', {
margin: '0.35cm',
printBackground: true
})
Extract rendered content
const html = await browserless.html('https://example.com')
const text = await browserless.text('https://example.com')
Custom evaluation
const getTitle = browserless.evaluate(page =>
page.evaluate(() => document.title)
)
const title = await getTitle('https://example.com')
Reliability Rules
- Always call
destroyContext()after each task andclose()before process exit. - Keep one browser process and create multiple contexts instead of launching many browsers.
- Start with defaults, then tune
timeout,waitUntil,waitForSelector, andretry. - If output is missing due blocked third-party scripts, retry with
adblock: false. - Set
DEBUG=browserlessto inspect internal navigation and request handling.
Related Packages
browserless: core API.@browserless/cli: command-line interface.@browserless/lighthouse: Lighthouse reports.@browserless/screencast: frame-by-frame capture.@browserless/function: sandboxed code execution against a page.
More from kikobeats/skills
k8s-hpa-cost-tuning
Tune Kubernetes HPA scale-up/down behavior, topology spread, and resource requests to reduce idle cluster capacity. Use when users need to audit cluster costs on a schedule, analyze post-incident scaling behavior, investigate why replicas or nodes do not scale down, or reduce over-reservation and wasted compute resources.
14optimo
Optimize and convert images and videos using format-specific compression pipelines on top of ImageMagick and FFmpeg. Use when users need to reduce image or video file sizes, batch-optimize a media directory, convert between formats (JPEG, PNG, WebP, AVIF, HEIC, JXL, MP4, WebM, MOV), resize media by percentage/dimensions/target file size, strip audio tracks from videos, or output optimized images as data URLs.
1html-get
Retrieve normalized, render-ready HTML from any URL using fetch or headless prerender. Use when users need to get rendered HTML from JavaScript-heavy pages, normalize relative URLs to absolute for downstream parsing, prepare HTML for metadata extraction pipelines, or choose between fast fetch and full browser rendering per URL.
1keyvhq
Build and operate key-value caching with @keyvhq/core and official storage adapters. Use when users need to add a cache layer to a Node.js module, store data with TTL expiration, choose between storage backends (in-memory, Redis, Mongo, MySQL, PostgreSQL, SQLite), implement cache-aside patterns with namespace isolation, or memoize function results.
1use-pnpm
Always use pnpm as the package manager. Use when installing, adding, or removing dependencies, running scripts, or any npm/yarn/pnpm command. Replaces npm and yarn with pnpm equivalents.
1metascraper
Extract structured metadata from HTML using composable rule bundles. Use when users need to build link previews, parse Open Graph/Twitter Cards/JSON-LD from pages, extract titles/descriptions/images/authors from HTML, or create metadata extraction pipelines with custom rules and provider-specific parsers.
1