We make screenshotbase, so we are not neutral. Every fact about Puppeteer comes from Puppeteer's own public pages, linked next to it with the date we read it. Details change, so check pptr.dev before you decide. Spotted something out of date? Tell us and we will fix it.
Puppeteer vs screenshotbase at a glance
| Criterion | screenshotbase | Puppeteer |
|---|---|---|
| What it is | A hosted screenshot API: one HTTPS request returns the image, PDF or markdown of a page rendered in a real browser1 | A JavaScript library that controls Chrome or Firefox over the DevTools Protocol or WebDriver BiDi2 |
| License | Hosted service; free plan without a time limit3 | Apache-2.04 |
| Languages | Any language that sends HTTPS requests; SDKs for PHP, Go, Ruby and R1 | JavaScript and TypeScript (Node.js)2 |
| Browsers | – | Chrome, Firefox2 |
| Screenshots and PDF | Viewport and full-page screenshots, PDF and markdown from one endpoint (/v1/take)5 | page.screenshot(), element screenshots, PDF generation6 |
– means we list no fact from that provider's own pages for this row.
- screenshotbase.com, checked October 9, 2026
- pptr.dev, checked October 9, 2026
- screenshotbase.com/pricing, checked October 9, 2026
- github.com/puppeteer/puppeteer, checked October 9, 2026
- screenshotbase.com/docs/take, checked October 9, 2026
- pptr.dev/guides/screenshots, checked October 9, 2026
Where Puppeteer is strong
- Free and open source (Apache-2.0), with full control over the browser: any script, any wait condition, any interaction. (source, Oct 9, 2026)
- Downloads a compatible Chrome during installation, so a first local screenshot needs only a few lines. (source, Oct 9, 2026)
Where screenshotbase is different
- No browser to install, update or scale: one HTTPS request returns the image, PDF or markdown. (source, Oct 9, 2026)
- Ads, cookie banners and chat widgets hidden with a parameter (
block_ads,block_cookie_banners,block_chats) on every plan. (source, Oct 9, 2026) - Pages loaded from 117 countries with
ip_country_codeon every paid plan, without running your own proxies. (source, Oct 9, 2026) - Billed per screenshot, 300 free every month; requests rejected with a validation error (HTTP 422) do not count. (source, Oct 9, 2026)
The same screenshot with Puppeteer and with screenshotbase
A full-page screenshot at 1280 × 800 with Puppeteer, which needs a browser on the machine that runs it:
import puppeteer from "puppeteer";
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
await page.goto("https://example.com", { waitUntil: "networkidle2" });
await page.screenshot({ path: "screenshot.png", fullPage: true });
await browser.close();
The same request to screenshotbase, from any language that speaks HTTPS:
curl -G "https://api.screenshotbase.com/v1/take" \
--data-urlencode "url=https://example.com" \
-d viewport_width=1280 -d viewport_height=800 -d full_page=true \
-H "apikey: YOUR-API-KEY" \
-o screenshot.pngTry screenshotbase
The free plan has 300 screenshots a month and needs no credit card. The /v1/take reference lists every parameter, and the website screenshot tool shows the result without code. Plans and prices are on the pricing page.