JavaScript / Node.js
Take screenshots using JavaScript with our official SDK or plain HTTP requests.
Installation
npm install lambdashot --save Quick Start
import { LambdaShot } from 'lambdashot';
import fs from 'fs';
const client = new LambdaShot('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY');
// Take a screenshot
const screenshot = await client.take({
url: 'https://example.com',
format: 'png',
viewport_width: 1920,
viewport_height: 1080,
});
// Save to file
fs.writeFileSync('screenshot.png', Buffer.from(await screenshot.arrayBuffer())); Generate URL
Generate a signed URL without fetching the screenshot:
const url = client.generateSignedUrl({
url: 'https://example.com',
format: 'png',
block_ads: true,
});
console.log(url);
// https://api.lambdashot.com/take?url=...&signature=... Options
const screenshot = await client.take({
url: 'https://example.com',
// Output
format: 'png', // png, jpeg, webp, pdf
image_quality: 90, // 0-100
// Viewport
viewport_width: 1920,
viewport_height: 1080,
viewport_device: 'iphone_15_pro',
device_scale_factor: 2,
// Full page
full_page: true,
full_page_scroll: true,
// Blocking
block_ads: true,
block_cookie_banners: true,
block_trackers: true,
// Customization
dark_mode: true,
delay: 2,
wait_for_selector: '.content-loaded',
}); Without SDK (fetch)
const params = new URLSearchParams({
access_key: 'YOUR_ACCESS_KEY',
url: 'https://example.com',
format: 'png',
viewport_width: '1920',
});
const response = await fetch(`https://api.lambdashot.com/take?${params}`);
const buffer = await response.arrayBuffer();
fs.writeFileSync('screenshot.png', Buffer.from(buffer)); Video Recording
const video = await client.animate({
url: 'https://example.com',
scenario: 'scroll',
duration: 10,
format: 'mp4',
});
fs.writeFileSync('video.mp4', Buffer.from(await video.arrayBuffer())); Async with Webhooks
const result = await client.take({
url: 'https://example.com',
async: true,
store: true,
storage_path: 'screenshots/example.png',
webhook_url: 'https://yoursite.com/webhook',
});
// Returns immediately, screenshot delivered via webhook Error Handling
try {
const screenshot = await client.take({ url: 'https://example.com' });
} catch (error) {
if (error.code === 'timeout_error') {
console.log('Screenshot timed out, retrying...');
} else if (error.code === 'access_key_invalid') {
console.log('Check your API key');
} else {
console.log('Error:', error.message);
}
} TypeScript
The SDK includes full TypeScript definitions:
import { LambdaShot, TakeOptions, AnimateOptions } from 'lambdashot';
const options: TakeOptions = {
url: 'https://example.com',
format: 'png',
viewport_width: 1920,
};
const client = new LambdaShot(
process.env.LAMBDASHOT_ACCESS_KEY!,
process.env.LAMBDASHOT_SECRET_KEY!
);
const screenshot = await client.take(options);