Screenshot API
See What a Page Shows Without Opening It Yourself.
Pass a URL. The API opens it in a real browser, captures it and returns a link to the image, with the address the browser ended up on after redirects. The defaults give a 1366 × 768 JPEG of the visible part of the page.
Request
GET /
Response · 200 OK
-
redirected_urlhttps://www.deepinfo.com/
-
viewport1366 × 768 · JPEG
full_pagecaptures the whole pagemobile
360 × 740 -
screenshot_urlsigned link, expires after 7 days
check_date 2026-09-23T14:44:23Z
A URL Goes In and an Image Link Comes Back.
The link is signed and expires after seven days. Download the image if you need to keep it, for example as evidence.
| Parameter | Type | Description | |
|---|---|---|---|
url | string | Required | The page to capture, as a full URL with its scheme. |
full_ | boolean | Optional | Capture the whole page, not only the viewport. Default false. |
mobile | boolean | Optional | Emulate a mobile device, with a 360 × 740 viewport. Default false. |
image_ | string | Optional | jpeg or png. Default jpeg. |
Request
curl "https://api.deepinfo.com/v1/lookup/screenshot?url=https://www.deepinfo.com" \
-H "apikey: YOUR_API_KEY"import requests
r = requests.get(
"https://api.deepinfo.com/v1/lookup/screenshot",
params={"url": "https://www.deepinfo.com", "full_page": "true"},
headers={"apikey": "YOUR_API_KEY"},
)
shot = r.json()
print(shot["redirected_url"], shot["screenshot_url"])const url = encodeURIComponent('https://www.deepinfo.com')
const r = await fetch(
`https://api.deepinfo.com/v1/lookup/screenshot?url=${url}&mobile=true`,
{ headers: { apikey: 'YOUR_API_KEY' } }
)
const { redirected_url, screenshot_url } = await r.json()
console.log(redirected_url, screenshot_url)
Response
{
"url": "https://www.deepinfo.com",
"redirected_url": "https://www.deepinfo.com/",
"screenshot_url": "https://…/<signed link, expires after 7 days>.jpeg",
"connection_status": "success",
"check_date": "2026-09-23T14:44:23.198Z"
}
Set the Viewport, the Wait and the Crop.
All options are query parameters. They also go in a JSON body with POST /, which suits long option sets.
| Option | Effect | Default |
|---|---|---|
width, height | Viewport size in pixels, 100 to 3000 each. | 1366 × 768 |
full_ | Capture the whole page, not only the viewport. | false |
mobile, landscape, touchscreen | Emulate a mobile device (360 × 740), landscape orientation and a touch screen. | false |
retina, scale | Twice the pixel density, or a device pixel ratio from 0.5 to 4. | false |
image_, quality, thumbnail_ | JPEG or PNG, JPEG quality from 0 to 100, and a resized copy at a set width. | jpeg |
mode | fast captures once the HTML document has loaded; slow waits until network activity stops. | fast |
timeout, delay | How long to wait for the page, up to 90,000 ms, and an extra wait before the capture. | 30,000 ms, 0 |
lazy_ | Scroll through the page first, so lazy-loaded images render. | false |
block_, no_, no_ | Block ads, hide cookie consent banners, turn JavaScript off. | false |
selector, scroll_ | Capture one element, or scroll to one first, by CSS selector. | None |
accept_, latitude, longitude | The browser’s language, and the location its Geolocation API reports. | en-US |
See the Screenshot (POST) reference for the body form.
When the capture happens
-
Request
the API opens the URL in a real browser
-
Fast default
mode=fast· captures once the HTML document has loaded -
Slow
mode=slow· waits until network activity stops -
Timeout
timeout· 30,000 ms by default, up to 90,000 ms
A delay adds an extra wait before the capture.
Where a Capture Becomes Evidence.
Triage
Phishing Review
Look at a suspected phishing page from a browser that is not on an analyst’s machine, and keep the capture with the ticket.
Record
Impersonation Evidence
Keep what a lookalike domain showed, with check_ and the redirected_ its redirects led to.
Escalate
Takedown Requests
Attach a dated image of the offending page to the request a registrar or host will review.
Redirects, Errors and Retries.
| Redirects | redirected_ is where the browser landed, which is often not where the link pointed. |
|---|---|
| With page data | Web Data with screenshot=true returns a capture together with the page’s HTML, links, headers and cookies. |
| Busy and errors | 503 means the service is busy: retry shortly. 400 when url is missing or an option is out of range. See errors. |
| Rate limits | Plan-dependent. The default is one request per second per key and endpoint. See rate limits. |
See This Data at Work in the Platform
External Attack Surface Management runs these lookups continuously over your assets and raises what changes as issues, and Deep Search & Insights opens the whole index to your analysts.
Questions About Screenshot API
How do we capture a whole page, lazy-loaded images included?
Set full_ and lazy_. The browser then scrolls through the page before it captures all of it, from top to bottom.
How do we capture a page that loads slowly?
Set mode=slow and a longer timeout, and add a delay when the page animates in after it loads.
Should we use Screenshot or Web Data?
Web Data with screenshot=true adds a JPEG of the rendered page to its response, with no capture options. Use Screenshot when the capture needs a set viewport, a full page, PNG, longer waits or a single element.
How is the Screenshot API priced?
As part of an API services plan, by volume and frequency. Each capture is a lookup and counts against your plan’s quota at one unit per request. See Data & API pricing.
Can analysts capture pages without writing code?
Yes. Instant Lookups in Deep Search & Insights includes Screenshot, next to the Technology and Web Data lookups.
Capture a Page You Already Know.
Start with one of your pages, then a lookalike from your queue. We set up access and walk through the options on a short call.