# Screenshot

GET /lookup/screenshot: Opens a web page in a real browser and returns a link to a screenshot of it.

Source: https://docs.deepinfo.com/reference/lookup/screenshot/

Last updated: 2026-09-27

---
`GET https://api.deepinfo.com/v1/lookup/screenshot`

Opens a web page in a real browser and returns a link to a screenshot of it. Options control the viewport, full-page capture, mobile emulation, image format and how long to wait for the page.

Use it to see what a site shows right now, for example to review a suspicious or look-alike domain without visiting it yourself. A request takes a few seconds (about 5 s in our tests).

All options are query parameters; the defaults give a 1366 × 768 JPEG of the visible part of the page. To send the options as a JSON body instead (for long values such as `custom_html`), use [Screenshot (POST)](/reference/lookup/screenshot-post/).

## Authentication

Send your API key in the `apikey` request header.

## Query Parameters

| Parameter | Required | Description | Example |
|---|---|---|---|
| `url` | Required | Web page to capture, e.g. `https://www.deepinfo.com`. It can be left out only when `custom_html` is sent. | `https://www.deepinfo.com` |
| `width` | Optional | Browser viewport width, in pixels. Range `100`–`3000`. Default `1366`. | `1366` |
| `height` | Optional | Browser viewport height, in pixels. Range `100`–`3000`. Default `768`. | `768` |
| `full_page` | Optional | Capture the whole page, not only the visible viewport. Default `false`. | `false` |
| `mobile` | Optional | Emulate a mobile device. The viewport then defaults to 360 × 740. Default `false`. | `false` |
| `landscape` | Optional | Emulate landscape orientation. Default `false`. | `false` |
| `touchscreen` | Optional | Emulate a touch screen. Default `false`. | `false` |
| `retina` | Optional | Render at twice the pixel density for a sharper image. Ignored when `scale` is set. Default `false`. | `false` |
| `scale` | Optional | Device pixel ratio: how many screen pixels draw one CSS pixel. Range `0.5`–`4`. |  |
| `image_output` | Optional | Image format. One of `jpeg`, `png`. Default `jpeg`. | `jpeg` |
| `quality` | Optional | JPEG quality. Used only when `image_output` is `jpeg`. Range `0`–`100`. |  |
| `thumbnail_width` | Optional | Resize the image to this width, keeping the aspect ratio. Must not be larger than the screenshot width. Minimum `50`. |  |
| `mode` | Optional | `fast` captures as soon as the HTML document has loaded (`domcontentloaded`); `slow` waits until network activity stops. One of `fast`, `slow`. Default `fast`. | `fast` |
| `timeout` | Optional | Maximum time to wait for the page to load, in milliseconds. Range `0`–`90000`. Default `30000`. | `30000` |
| `delay` | Optional | Extra wait after the page has loaded, in milliseconds, before the screenshot is taken. Maximum `30000`. Default `0`. | `0` |
| `lazy_load` | Optional | Scroll through the whole page first, so that lazy-loaded images are rendered. Default `false`. | `false` |
| `block_ads` | Optional | Block advertisements. Default `false`. | `false` |
| `no_cookie_banners` | Optional | Hide cookie consent banners. Default `false`. | `false` |
| `no_js` | Optional | Disable JavaScript on the page. Default `false`. | `false` |
| `selector` | Optional | CSS selector of one element, e.g. `body > .container > .logo`. When it matches, only that element is captured. |  |
| `scroll_to_element` | Optional | CSS selector of an element to scroll to before the screenshot, e.g. `body > .footer`. |  |
| `accept_languages` | Optional | Browser `Accept-Language` value. Default `en-US`. | `en-US` |
| `latitude` | Optional | Latitude reported by the browser's Geolocation API. Requires `longitude`. Range `-80`–`80`. |  |
| `longitude` | Optional | Longitude reported by the browser's Geolocation API. Requires `latitude`. Range `-180`–`180`. |  |
| `user_agent` | Optional | Browser user agent string. |  |
| `cookies` | Optional | Cookies to set in the browser, e.g. `name1=value1; name2=value2`. |  |
| `headers` | Optional | Extra request headers, e.g. `Header-1:value1; Header-2:value2`. |  |
| `css` | Optional | CSS code to inject into the page, e.g. `h1 { color: red }`. |  |
| `css_url` | Optional | URL of a stylesheet to inject into the page. |  |
| `custom_html` | Optional | HTML to render instead of loading `url`. For long HTML, use [Screenshot (POST)](/reference/lookup/screenshot-post/). |  |
| `proxy` | Optional | Proxy to load the page through, in the form `user:password@host:port`. |  |

## Response Fields

| Field | Description |
|---|---|
| `url` | The requested URL |
| `redirected_url` | The URL the browser ended up on after redirects |
| `screenshot_url` | Link to the image (JPEG, or PNG with `image_output=png`). It is a **signed link that expires after 7 days**: download the image if you need to keep it |
| `connection_status` | `success` when the page was loaded |
| `check_date` | When the screenshot was taken (UTC) |

## Response Schema

_Inferred from examples._ Built from the saved 2xx example response: the fields it contains, with the types seen there. It is not a contract.

| Field | Type |
|---|---|
| `url` | string |
| `redirected_url` | string |
| `check_date` | string |
| `connection_status` | string |
| `screenshot_url` | string |

## Errors

`400` (`10400`) if `url` is missing or invalid (and no `custom_html` is sent), or an option is out of range. The validation error currently names the parameter `domain`, although the request parameter is `url` (see the example). `500` for an unexpected error. `503` means the service is busy or out of memory: retry shortly. See [Getting Started → Errors](/getting-started/errors/).

## Examples

### 200 · www.deepinfo.com

```bash
curl 'https://api.deepinfo.com/v1/lookup/screenshot?url=https%3A%2F%2Fwww.deepinfo.com' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json'
```

`Content-Type: application/json` · `ratelimit-limit: 1` · `ratelimit-remaining: 0` · `ratelimit-reset: 1` · `deepinfo-request-id: 5f0c6a8e-1b2d-4c3e-9f4a-7b8c9d0e1f2a`

```json
{
  "url": "https://www.deepinfo.com",
  "redirected_url": "https://www.deepinfo.com/",
  "check_date": "2026-09-23T14:44:23.198Z",
  "connection_status": "success",
  "screenshot_url": "https://diss-999.storage.googleapis.com/202609/23/www-deepinfo-com-xOCDjU5LePHc6VkZeSE6-CnC.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=<credential>&X-Amz-Date=20260923T144423Z&X-Amz-Expires=604800&X-Amz-Signature=<signature>&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject"
}
```

### 400 · Invalid URL

```bash
curl 'https://api.deepinfo.com/v1/lookup/screenshot?url=not_a_url' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json'
```

`Content-Type: application/json` · `ratelimit-limit: 1` · `ratelimit-remaining: 0` · `ratelimit-reset: 1` · `deepinfo-request-id: 5f0c6a8e-1b2d-4c3e-9f4a-7b8c9d0e1f2a`

```json
{
  "code": 10400,
  "parameters": [
    {
      "param": "domain",
      "details": [
        "The given input is not a valid domain name."
      ],
      "subcode": 10000
    }
  ],
  "solution": "https://docs.deepinfo.com/reference/"
}
```

## Worked Examples

Worked examples of this endpoint, each on its own page with the exact request and its response: [Screenshot Examples](/reference/lookup/screenshot/examples/).

- [Default Screenshot](/reference/lookup/screenshot/examples/default/): A screenshot of www.deepinfo.com with the defaults: a 1366 × 768 JPEG of the visible part of the page.
- [Full-Page Screenshot](/reference/lookup/screenshot/examples/full-page/): A full-page screenshot (full_page=true): the whole page from top to bottom, not only the first screen.
- [Mobile Device](/reference/lookup/screenshot/examples/mobile/): A mobile screenshot (mobile=true): the page on a phone-sized 360 × 740 viewport.
- [PNG Instead of JPEG](/reference/lookup/screenshot/examples/png/): A PNG screenshot (image_output=png): screenshot_url now ends in .png instead of .jpeg.
- [One Element Only](/reference/lookup/screenshot/examples/selector/): A capture of one element (selector=h1) on example.com: only the heading, not the page.
