Automate website screenshots from a URL

Turn a screenshot into a single API call. Capture one URL or thousands, on demand or on your own schedule, without running a single headless browser.

Build your capture request

Set your options and copy the exact call to run. Add your key and send it from a terminal, your code, or the Playground.

cURL
curl https://grabbit.live/api/v1/grabs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","full_page":true}'
JavaScript
await fetch("https://grabbit.live/api/v1/grabs", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "url": "https://example.com",
  "full_page": true
}),
});

From one capture to thousands

Loop over URLs

Automating a list is just a loop around the request. A few lines captures every page and collects the hosted image URLs.

Python
import requests

urls = ["https://example.com", "https://news.ycombinator.com"]
for url in urls:
    res = requests.post(
        "https://grabbit.live/api/v1/grabs",
        headers={"Authorization": "Bearer sk_live_..."},
        json={"url": url, "full_page": True},
    )
    print(res.json()["image_url"])

Go async for big batches

Send Prefer: respond-async and Grabbit queues the job and returns immediately, then delivers a signed webhook when each capture finishes. Ideal for large runs.

cURL
curl https://grabbit.live/api/v1/grabs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Prefer: respond-async" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com", "full_page": true }'

Automated screenshots FAQ

Can you automate screenshots?
Yes. A screenshot API turns a capture into a single HTTP request, so you can automate it from any language or job runner. With Grabbit, POST a URL to /api/v1/grabs and receive a hosted image, with no browser to drive.
How do I automate website screenshots?
Call the API with each URL. Loop over a list, trigger it from your backend on an event, or run it from a scheduled job. Use full_page, format, delay_ms, and selector to control each capture.
Is there a script to take a screenshot of a webpage automatically?
Yes. A few lines in Python or Node that POST the URL to the API is enough. The Python example on this page captures a list of URLs in a loop and prints each hosted image_url.
Can I capture screenshots in bulk or asynchronously?
Yes. Send Prefer: respond-async (or ?async=true) and Grabbit queues the job and returns immediately, then fires a grab.succeeded or grab.failed webhook when the capture is done. Good for large batches.
Can I schedule recurring screenshots?
Trigger the API from your own scheduler, such as a cron job or a serverless timer, on whatever cadence you need, and pair it with webhooks to receive each result. Grabbit runs the capture; you own the schedule.
Is there a free way to automate screenshots?
Every account has a free test key that returns a placeholder, so you can build and test your automation at no cost. Live captures run on a flat annual plan with credits that never reset.

New to capturing pages? Start with how to screenshot a website or the screenshot API.

Automate your first capture today