# Screenshot (POST)

POST /lookup/screenshot: Same as Screenshot, with the options in a JSON body instead of the query string.

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

Last updated: 2026-09-27

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

Same as [Screenshot](/reference/lookup/screenshot/), with the options in a JSON body instead of the query string. Use it when a value is too long for a URL, such as `custom_html`. The response is the same.

## Authentication

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

## Request Body

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

```json
{
  "url": "https://www.deepinfo.com",
  "width": 1366,
  "height": 768,
  "full_page": false
}
```

## 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, 1366 × 768

```bash
curl -X POST 'https://api.deepinfo.com/v1/lookup/screenshot' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "url": "https://www.deepinfo.com",
  "width": 1366,
  "height": 768,
  "full_page": false
}'
```

`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:45:06.078Z",
  "connection_status": "success",
  "screenshot_url": "https://diss-999.storage.googleapis.com/202609/23/www-deepinfo-com-CIKG9FM9gkDHN_hq7lTEbvNY.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=<credential>&X-Amz-Date=20260923T144506Z&X-Amz-Expires=604800&X-Amz-Signature=<signature>&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject"
}
```

### 400 · Missing URL

```bash
curl -X POST 'https://api.deepinfo.com/v1/lookup/screenshot' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "width": 1366,
  "height": 768
}'
```

`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/"
}
```
