Node.js · GET /screenshot

The Node.js screenshot API.
One request. Zero setup.

A fast, reliable way to capture any website from Node.js. One GET request via axios, fetch, or got. Screenshots, PDFs, and videos delivered as a CDN URL. No Puppeteer, no Chrome, no infrastructure.

  • Zero dependencies
  • Works with any HTTP client
  • PDF, video & HTML input
  • 100 free captures/month
const axios = require('axios');

// Basic screenshot — returns image URL
async function screenshot(url) {
  const { data } = await axios.get(
    'https://screenshotcore.com/api/v1/screenshot',
    {
      params: {
        token: process.env.SCREENSHOT_API_KEY,
        url,
        output: 'json',
        width: 1280,
        height: 800,
      },
    }
  );
  return data.screenshot; // CDN image URL
}

screenshot('https://example.com').then(console.log);

What is a screenshot API for Node.js?

A Node.js screenshot API lets you capture any public URL as an image, PDF, or video with a single HTTP request. No headless browser, no Puppeteer, and no server infrastructure to run. Instead of bundling Chrome inside your app, you call an external endpoint and get a ready-to-use CDN URL back in milliseconds. Use it as a lightweight Node.js capture API across any environment: Express, NestJS, AWS Lambda, Vercel, Fly.io, and more.

A complete screenshot API for Node.js developers

Capture any website from Node.js without running a headless browser. No driver installs, no infrastructure.

Zero setup

No npm install, no Puppeteer, no Playwright. Just axios or native fetch. Works in any Node.js version.

Webhook support

Fire an async capture and receive a signed webhook when it's ready. No polling, no blocking.

PDF output

Pass output=pdf to get a binary PDF stream. Pipe it directly to the response or write to disk.

HTML input

Send raw HTML instead of a URL, ideal for OG image generation and invoice rendering.

S3 direct upload

Provide your own S3 credentials and captures land in your bucket automatically.

Stealth mode

Bypass bot detection on any target page. No extra config, just pass stealth=true.

Advanced examples

More than screenshots. The screenshot API for Node.js supports PDF generation, async webhooks, and raw HTML rendering, all from the same endpoint.

const axios = require('axios');
const fs = require('fs');

async function urlToPdf(url, outputPath) {
  const response = await axios.get(
    'https://screenshotcore.com/api/v1/screenshot',
    {
      params: {
        token: process.env.SCREENSHOT_API_KEY,
        url,
        output: 'pdf',
        pdf_page_size: 'A4',
      },
      responseType: 'arraybuffer',
    }
  );
  fs.writeFileSync(outputPath, response.data);
  return outputPath;
}

await urlToPdf('https://example.com', 'report.pdf');

Why not use Puppeteer in Node.js?

Puppeteer works, until it doesn't. Here's the real cost of running a headless browser inside your Node.js app.

Puppeteer / Playwright
  • Bundling Chrome adds 200–400 MB to your app
  • Crashes on memory-constrained servers (Lambda, Fly.io)
  • You maintain bot-detection workarounds yourself
  • Scaling concurrent captures is complex
  • Chrome version drift breaks captures over time
ScreenshotCore
  • Zero npm dependency, any HTTP client works
  • Runs anywhere: Lambda, Vercel, bare metal
  • Stealth mode included on every request
  • Auto-scales to thousands of concurrent captures
  • We maintain the browser, you ship features

Frequently asked questions

Add a screenshot API to your Node.js app. No Puppeteer needed.

100 free captures per month. No credit card. Drop it into any Node.js project in minutes.

Get your free API key →