shotkit

GET /api/take

The web screenshot API for developers and AI

Render any website, HTML or Markdown to clean images, PDFs, videos or Markdown with one HTTP request — no headless browsers to run. 107 options, sane defaults, no SDK required.

# PNG of a full page, cookie banners removed, in dark mode
curl -G https://shotkit.net/api/take \
  -H "X-Access-Key: $SHOTKIT_KEY" \
  -d url=https://github.com -d format=png -d full_page=true \
  -d block_cookie_banners=true -d dark_mode=true -o github.png

Looks great

Take clean website screenshots

Remove the clutter that ruins automated captures with a single parameter.

Block cookie banners
Hide GDPR and consent popups with rules and heuristics.
Block ads and trackers
Drop ad networks and analytics before they load.
Hide chat widgets
Intercom, Drift, Crisp and friends stay out of the shot.
Block anything else
Any request pattern, resource type or CSS selector.

Customize everything

Render precisely as you need

Control the browser before the shutter fires.

Dark mode & reduced motion
Emulate prefers-color-scheme, reduced motion and print media.
Inject CSS & JavaScript
Restyle the page or run scripts before capture.
Click, hover, wait
Interact with elements, wait for selectors or network idle.
Headers, cookies, proxies
Capture pages behind auth, in any time zone or geolocation.

Pixel-perfect quality

Screenshots for any screen size

From a phone in landscape to a 5× retina desktop.

150+ device presets
iPhone, iPad, Pixel, Galaxy, or any custom viewport.
Retina rendering
Device pixel ratio up to 5× for crisp images.
Full-page screenshots
Scrolls to trigger lazy-loaded images, with max height and slices.
Element screenshots
Capture a single CSS selector or a clip rectangle.

Any input, any output

HTML to image, URL to PDF, and more

One endpoint for every rendering job.

URL, HTML or Markdown in
Render live sites or your own templates.
Images
PNG, JPG, WebP, AVIF, GIF and TIFF.
PDF generation
Paper size, margins, landscape and fit-to-one-page.
Video & animated GIF
Record scrolling MP4, WebM, GIF or WebP clips.
Markdown & HTML out
Turn any page into clean text for LLMs and AI agents.
Metadata
Title, favicon, Open Graph, fonts, HTTP status and page content.

Built for production

Automate screenshots at scale

No browsers to patch, no queues to babysit.

Cache & CDN
Cached renders are free and served from a stable URL.
Signed URLs
Embed straight in <img> without leaking your key.
Async & webhooks
Fire and forget; receive a signed POST when it's done.
Fail fast
Error on failed requests or missing content instead of shipping a broken image.

Use cases

What developers build with it

Link previews & OG images
Generate social cards and thumbnails from HTML templates.
Visual regression testing
Snapshot pages on every deploy and diff them.
AI agents & vision
Give LLMs eyes on the web as images or Markdown.
Archiving & compliance
Keep a dated visual record of pages and ads.
Website monitoring
Catch broken layouts after plugin or CMS updates.
Invoices & reports
Render HTML to pixel-perfect PDFs.

Frequently asked questions

What is a screenshot API?

A screenshot API is an HTTP endpoint that loads a web page in a real headless browser and returns an image, PDF or video of it. You send a URL (or raw HTML), it sends back the render — no Puppeteer, Playwright or Chrome to run yourself.

How do I take a screenshot of a website with an API?

Send a GET or POST request to /api/take with your access key and a url parameter. Add options like format=png, full_page=true or block_cookie_banners=true. 107 options are available, all with sane defaults.

Can I convert HTML to an image or PDF?

Yes. Pass html (or markdown) instead of url and pick an output format: PNG, JPG, WebP, AVIF, GIF, TIFF or PDF. It's a common way to generate Open Graph images, certificates, invoices and reports.

Does it capture full-page screenshots and lazy-loaded images?

Yes. full_page=true scrolls the page to trigger lazy loading before capturing, and you can cap the height or split the result into slices.

How do I remove cookie banners and ads from screenshots?

Set block_cookie_banners=true, block_ads=true, block_trackers=true or block_chats=true. You can also hide any CSS selector or block request patterns.

Which programming languages are supported?

Any language that can make an HTTP request: Node.js, Python, Go, PHP, Ruby, Java, C# and plain cURL. The playground generates ready-to-paste snippets.

Is it a Puppeteer or Playwright alternative?

For capturing pages, yes. You get the same headless Chromium rendering without managing browser binaries, memory leaks, fonts or concurrency.

Automate website screenshots today

Try every option in the playground, then copy the request into your code.