|
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m29s
|
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
SnapAPI Node.js SDK
Official Node.js client for SnapAPI — the EU-hosted screenshot API.
Installation
npm install snapapi
Quick Start
import { SnapAPI } from 'snapapi';
import fs from 'fs';
const snap = new SnapAPI('your-api-key');
// Simple screenshot
const png = await snap.capture('https://example.com');
fs.writeFileSync('screenshot.png', png);
Usage
Basic Screenshot
const screenshot = await snap.capture('https://example.com');
With Options
const screenshot = await snap.capture('https://example.com', {
format: 'jpeg',
width: 1920,
height: 1080,
quality: 90,
});
Full-Page Capture
const screenshot = await snap.capture({
url: 'https://example.com/blog',
fullPage: true,
format: 'png',
deviceScale: 2, // Retina
});
Mobile Viewport
const screenshot = await snap.capture({
url: 'https://example.com',
width: 375,
height: 812,
deviceScale: 2,
});
Wait for Dynamic Content
const screenshot = await snap.capture({
url: 'https://example.com/dashboard',
waitForSelector: '#chart-loaded',
waitUntil: 'networkidle2',
});
API Reference
new SnapAPI(apiKey, config?)
| Parameter | Type | Description |
|---|---|---|
apiKey |
string |
Your SnapAPI API key (required) |
config.baseUrl |
string |
API base URL (default: https://snapapi.eu) |
config.timeout |
number |
Request timeout in ms (default: 30000) |
snap.capture(url, options?) / snap.capture(options)
Returns a Promise<Buffer> containing the screenshot image.
| Option | Type | Default | Description |
|---|---|---|---|
url |
string |
— | URL to capture (required) |
format |
'png' | 'jpeg' | 'webp' |
'png' |
Output format |
width |
number |
1280 |
Viewport width (320–3840) |
height |
number |
800 |
Viewport height (200–2160) |
fullPage |
boolean |
false |
Capture full scrollable page |
quality |
number |
80 |
JPEG/WebP quality (1–100) |
waitForSelector |
string |
— | CSS selector to wait for |
deviceScale |
number |
1 |
Device pixel ratio (1–3) |
delay |
number |
0 |
Extra delay in ms (0–5000) |
waitUntil |
string |
'domcontentloaded' |
Load event to wait for |
snap.health()
Returns API health status.
Error Handling
import { SnapAPI, SnapAPIError } from 'snapapi';
try {
const screenshot = await snap.capture('https://example.com');
} catch (err) {
if (err instanceof SnapAPIError) {
console.error(`API error ${err.status}: ${err.detail}`);
}
}
EU-Hosted & GDPR Compliant
SnapAPI runs entirely on EU infrastructure (Germany). Your data never leaves the EU. Learn more.