Website Screenshot API
Capture any URL to a full-page PNG with a single API call. The image comes back inline as a base64 data URI you can drop straight into an img tag — no headless browser to run, scale or keep patched on your side.
50 free credits on signup. No card, no browser to run.
{ "data": { "url": "https://example.com/", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7EAAAL9CAIAAA...[truncated]", "image_format": "png", "mode": "normal", "image_bytes": 16917 }, "response_time": 4255, "credits_used": 1, "credits_remaining": 4574}A real captured response from this endpoint. Sign up to run your own.
What is the Scavio Website Screenshot API?
The Scavio Website Screenshot API is a REST endpoint that turns any public URL into a full-page PNG. You POST a url, and an optional mode, to /api/v1/extract/screenshot with your API key, and get back the image inline as a base64 data URI, its byte size and format — with no headless browser to run or maintain.
- 1
- endpoint, live in production
- PNG
- full-page image, returned inline
- 1–5
- credits per call, by mode
One call, a full-page PNG
The same endpoint every time. A single mode param sets how hard the capture works.
Full-page capture
POST /api/v1/extract/screenshotEvery shot is the entire page top to bottom, not just the visible viewport — long articles, whole dashboards and full landing pages come back in one image.
Inline PNG data URI
POST /api/v1/extract/screenshotThe image returns as a data:image/png;base64 URI inside the JSON, so you drop it straight into an img tag, an email or a report without a second round trip.
Any public URL
POST /api/v1/extract/screenshotPoint it at any http or https page. You send the URL, Scavio returns the PNG — nothing to install and no browser pool to keep warm on your side.
Three modes, one param
POST /api/v1/extract/screenshotMove from normal to advanced to ultra with a single mode field as a page needs more time or gets more defended, without changing anything else in the request.
The one screenshot endpoint
A single POST: send a URL, get a full-page PNG. The mode field sets how hard the capture works, and the cost is per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Screenshot/api/v1/extract/screenshot | A full-page PNG of any URL, inline as a base64 data URI, plus its byte size, format and mode | 1–5 |
Cost is by mode: normal and advanced are 1 credit, ultra is 5. A capture that fails is not billed. See plans
A URL in, a PNG out
One POST returns the image inline as a base64 data URI. The response on the right is a real capture — decode it, or drop it straight into an img src.
import base64, requests
resp = requests.post(
"https://api.scavio.dev/api/v1/extract/screenshot",
headers={"Authorization": "Bearer sk_live_your_key"},
json={"url": "https://example.com", "mode": "normal"},
).json()
shot = resp["data"]
print(shot["image_format"], shot["image_bytes"])
# image is a data:image/png;base64 URI - split off the base64 and save it
b64 = shot["image"].split(",", 1)[1]
with open("example.png", "wb") as f:
f.write(base64.b64decode(b64)){
"data": {
"url": "https://example.com/",
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7EAAAL9CAIAAA...[truncated]",
"image_format": "png",
"mode": "normal",
"image_bytes": 16917
},
"response_time": 4255,
"credits_used": 1,
"credits_remaining": 4574
}Why not run your own screenshot stack?
The API call is the easy part. Standing up and defending headless capture yourself is the part that never ends.
DIY headless browser or a single-purpose screenshot API
- Playwright, Puppeteer or a Chromium pool to install, host and keep patched — plus the memory a real browser eats under load
- You own the crashes, the timeouts and the anti-bot arms race yourself
- Single-purpose screenshot APIs bill a monthly seat and cover only screenshots
- Most hand back a URL or a binary you fetch separately, not an image you can use inline
Scavio Website Screenshot API
- No browser infrastructure — you send a URL and get a full-page PNG back
- The image arrives inline as a base64 data URI, ready for an img tag or a report
- Pay as you go by the call — 1 credit for normal and advanced, 5 for ultra
- One key shared across every Scavio platform, not a standalone subscription
Some heavily defended sites cannot be captured; when a capture fails you get an error and are not billed for it.
What developers build with it
Link previews and social cards
Turn any URL a user pastes into a real thumbnail. One POST returns a full-page PNG you can crop, cache or drop straight into a preview card.
extract/screenshotVisual change monitoring
Capture a set of pages on a schedule and diff the images. Layout breaks, defacements and quiet content swaps surface without anyone opening a tab.
extract/screenshotReport and email generation
Snapshot a live dashboard, invoice or receipt page and embed the PNG in a generated report or email — no browser running inside your worker.
extract/screenshotCompliance and evidence archiving
Keep a dated, full-page image of a page as it appeared — a price, a set of terms, a listing — as a record you store in your own bucket.
extract/screenshotAgent and LLM vision input
Give an agent the ability to see a page, not just read its text. The base64 PNG goes straight into a vision model as the image it reasons over.
extract/screenshotPost-deploy QA and design review
Capture every marketing page after a deploy and pull the images into a review board, so a broken hero or a shifted layout is caught before a customer finds it.
extract/screenshotHow to screenshot a website with the API
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required.
- 2
POST a URL to the endpoint
Send {"url": "https://example.com"} to https://api.scavio.dev/api/v1/extract/screenshot with an Authorization: Bearer header. Add "mode": "advanced" or "ultra" only when a page needs it.
- 3
Use the inline PNG
The response returns data.image as a data:image/png;base64 URI, plus image_bytes and image_format. Drop the URI straight into an img src, or split off the base64 and decode it to a file.
Website Screenshot API FAQ
What is the Scavio Website Screenshot API?
+
It is a REST API that turns any public URL into a full-page PNG. You POST a url, and an optional mode, to /api/v1/extract/screenshot with your Scavio API key, and get back the image inline as a base64 data URI along with its byte size, format and the mode used. There is nothing to install and no browser to run on your side.
Is the screenshot full-page or just the viewport?
+
Always full-page. Every capture is the entire page from top to bottom, however long it is, not only the part that would fit in a browser window. There is no viewport-only mode — you get the whole page in one image.
What image format do I get back?
+
PNG, every time. The response carries image_format set to png, image as a complete data:image/png;base64 data URI, and image_bytes giving the decoded size of the image in bytes.
How do I actually use the image?
+
data.image is a complete data URI, so you can set it as an img src, embed it directly in HTML or an email, or take the part after the comma and base64-decode it to a .png file. There is no second request to fetch a separate binary.
Can I screenshot any website?
+
Almost any public http or https page. A small number of the most heavily defended sites cannot be captured; when that happens you get an error rather than a blank image, and that call is not billed. For those, try a higher mode before assuming a page is off limits.
Do I need to run a browser or headless Chrome?
+
No, and that is the point. You never install Playwright, Puppeteer or Chromium, never keep a browser pool warm, and never pay for the memory a real browser eats under load. You send a URL and get a PNG back from one API call.
What is the difference between normal, advanced and ultra?
+
normal is the default and handles most sites. advanced waits longer, which is what JavaScript-built pages that take more time to finish need. ultra is for the hardest, most defended sites. Start on normal and step up only when a page comes back wrong.
How much does a screenshot cost?
+
normal and advanced cost 1 credit per successful call; ultra costs 5. A capture that fails is not billed. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
Am I billed for a failed capture?
+
No. Billing happens only on a successful screenshot. A page that cannot be captured returns an error and costs nothing, so a defended URL never quietly burns credits while you retry it.
Can I use it from n8n, Make or an AI agent?
+
Yes. It is a plain HTTP POST, so n8n's HTTP Request node, a Make scenario, a scheduled job or an agent tool can all call it with a URL and your API key. Any language or platform that can make an HTTP request works, with no SDK required.
How big is the image and how fast is a call?
+
Image size depends on the page — the example capture is about 17 KB. Every response includes response_time in milliseconds. Heavier pages and higher modes take longer, so treat the call as asynchronous inside a batch job rather than blocking a request on it.
Is taking screenshots of a website legal?
+
Scavio captures publicly available pages and does not authenticate as a user. You remain responsible for how you use the images, including copyright and the target site's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
Extract API
Read any URL as clean HTML, Markdown or plain text.
Instagram API
Profiles, posts, reels and hashtag search as JSON.
Google Maps API
Places, reviews and map results as structured JSON.
Amazon API
Product, search, reviews and offers as JSON.
MCP server
Every platform as a callable tool for your agents.
Pricing
Credit packs and plans, with no per-platform surcharge.
Start capturing screenshots today
50 free credits on signup, no card. Your first request is a POST with a URL in it.