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.