# Screenshot API

URL: https://www.deepinfo.com/data-api/apis/screenshot-lookup/

## See What a Page Shows Without Opening It Yourself.

The Screenshot API takes a URL, 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.

[Talk to us about access](https://www.deepinfo.com/contact/?topic=data-api) [Screenshot reference](https://docs.deepinfo.com/reference/lookup/screenshot/)

### 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.

GET `https://api.deepinfo.com/v1/lookup/screenshot` [Reference](https://docs.deepinfo.com/reference/lookup/screenshot/)

| Parameter | Type |  | Description |
| --- | --- | --- | --- |
| `url` | string | Required | The page to capture, as a full URL with its scheme. |
| `full_page` | 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_output` | string | Optional | `jpeg` or `png`. Default `jpeg`. |

Request

curl:

```bash
curl "https://api.deepinfo.com/v1/lookup/screenshot?url=https://www.deepinfo.com" \
  -H "apikey: YOUR_API_KEY"
```

Python:

```python
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"])
```

JavaScript:

```javascript
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

200 OK · application/json

```json
{
  "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 /lookup/screenshot`, which suits long option sets.

| Option | Effect | Default |
| --- | --- | --- |
| `width`, `height` | Viewport size in pixels, 100 to 3000 each. | 1366 × 768 |
| `full_page` | 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_output`, `quality`, `thumbnail_width` | 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_load` | Scroll through the page first, so lazy-loaded images render. | `false` |
| `block_ads`, `no_cookie_banners`, `no_js` | Block ads, hide cookie consent banners, turn JavaScript off. | `false` |
| `selector`, `scroll_to_element` | Capture one element, or scroll to one first, by CSS selector. | None |
| `accept_languages`, `latitude`, `longitude` | The browser’s language, and the location its Geolocation API reports. | `en-US` |

See the [Screenshot (POST) reference](https://docs.deepinfo.com/reference/lookup/screenshot-post/) for the body form.

### 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.

[Use case](https://www.deepinfo.com/solutions/use-cases/phishing-detection-and-prevention/)

Record

#### Impersonation Evidence

Keep what a lookalike domain showed, with `check_date` and the `redirected_url` its redirects led to.

[Use case](https://www.deepinfo.com/solutions/use-cases/brand-impersonation-protection/)

Escalate

#### Takedown Requests

Attach a dated image of the offending page to the request a registrar or host will review.

[Use case](https://www.deepinfo.com/solutions/use-cases/managed-takedown-services/)

### Redirects, Errors and Retries.

- **Redirects**: `redirected_url` is where the browser landed, which is often not where the link pointed.
- **With page data**: [Web Data](https://www.deepinfo.com/data-api/apis/webdata-lookup/) 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](https://docs.deepinfo.com/getting-started/errors/).
- **Rate limits**: Plan-dependent. The default is one request per second per key and endpoint. See [rate limits](https://docs.deepinfo.com/getting-started/rate-limits/).

### More Calls for One Page.

- [Web Data](https://www.deepinfo.com/data-api/apis/webdata-lookup/) (Lookup): Technologies, metadata, links, trackers, headers and cookies, with an optional capture.
- [SSL](https://www.deepinfo.com/data-api/apis/ssl-lookup/) (Lookup): The certificate the host serves, with a verdict on its chain.
- [Domain WHOIS](https://www.deepinfo.com/data-api/apis/whois-lookup/) (Lookup): Who registered the domain, and when.

### See This Data at Work in the Deepinfo 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.

- [External Attack Surface Management](https://www.deepinfo.com/platform/easm/) (EASM)
- [Deep Search & Insights](https://www.deepinfo.com/platform/dsi/) (DSI)
- [How the Platform Works](https://www.deepinfo.com/platform/how-it-works/)

### Questions About Screenshot API

**How do we capture a whole page, lazy-loaded images included?**

Set `full_page=true` and `lazy_load=true`. 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](https://www.deepinfo.com/pricing/#data-pricing).

**Can analysts capture pages without writing code?**

Yes. In the Deepinfo Platform, [Instant Lookups](https://www.deepinfo.com/platform/dsi/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.

[Talk to us about access](https://www.deepinfo.com/contact/?topic=data-api) [All API services](https://www.deepinfo.com/data-api/apis/)
