# Website Screenshot Generator (`fetch_cat/website-screenshot-generator`) Actor

Capture screenshots and PDFs from public web pages in bulk.

- **URL**: https://apify.com/fetch\_cat/website-screenshot-generator.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Developer tools, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.24 / 1,000 capture extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Website Screenshot Generator

Capture screenshots and PDFs from public web pages in bulk, with viewport, full-page, selector, delay, and proxy options.

Use it to create visual QA evidence, SEO audit snapshots, client reports, web archives, or browser-rendered page captures that can be downloaded from Apify key-value store records and tracked in a dataset.

### At a glance

- **Bulk page capture**: Save PNG, JPEG, or PDF outputs for one or many public URLs.
- **Viewport control**: Capture desktop, mobile, tablet, or custom browser dimensions.
- **Full-page screenshots**: Capture the visible viewport or the full scrollable page.
- **Element screenshots**: Use a CSS selector to capture only the first matching visible element.
- **Automation-ready records**: Save output keys, public API record URLs, status codes, dimensions, page titles, and errors.

### Ready-to-run examples

Open an example, review the input, and run it as-is or adjust the URLs:

- **[Full-page website screenshot](https://apify.com/fetch_cat/website-screenshot-generator/examples/full-page-website-screenshot)**: Capture a whole public page as a PNG.
- **[Mobile landing page screenshots](https://apify.com/fetch_cat/website-screenshot-generator/examples/mobile-landing-page-screenshots)**: Use a mobile viewport for responsive QA.
- **[CSS selector element screenshot](https://apify.com/fetch_cat/website-screenshot-generator/examples/css-selector-element-screenshot)**: Capture a specific visible page element.
- **[Web page to PDF capture](https://apify.com/fetch_cat/website-screenshot-generator/examples/web-page-to-pdf-capture)**: Save public pages as PDF files.
- **[Bulk URL screenshot capture](https://apify.com/fetch_cat/website-screenshot-generator/examples/bulk-url-screenshot-capture)**: Capture several URLs in one run.

### What can it do?

Website Screenshot Generator launches a browser, visits each public URL, waits for your chosen page-load milestone, saves a screenshot or PDF to the default key-value store, and writes one dataset row per requested URL.

- **Capture images**: Save viewport or full-page PNG/JPEG screenshots.
- **Capture PDFs**: Render pages to A4 PDF with backgrounds.
- **Capture elements**: Save screenshots for a selector such as `h1`, `.hero`, or `main`.
- **Wait for rendering**: Choose `domcontentloaded`, `load`, or `networkidle`, then add a small delay for late widgets.
- **Track failures**: Error rows include the URL, final URL when known, dimensions, format, timestamp, and error message.

### Common workflows

- **Visual regression baselines**: Capture public pages before and after releases or redesigns.
- **SEO audit evidence**: Save screenshots of landing pages, search templates, public forms, or documentation pages.
- **Client deliverables**: Generate PNG/JPEG screenshots or PDF snapshots for reports.
- **Content monitoring**: Schedule captures and compare page appearance over time.
- **Agent visual context**: Pair screenshots with extracted page text for QA, research, and RAG review workflows.

### What data do you get?

The actor saves screenshots/PDFs in the default key-value store and writes a dataset row for each requested URL.

| Field | Description |
| --- | --- |
| `url` | Requested public URL |
| `finalUrl` | Final browser URL after redirects |
| `statusCode` | HTTP response status code when available |
| `title` | Browser page title |
| `screenshotKey` | Key-value store key for PNG/JPEG captures |
| `screenshotUrl` | API URL for the saved screenshot record |
| `pdfKey` | Key-value store key for PDF captures |
| `width` | Capture width in pixels |
| `height` | Capture height in pixels |
| `format` | Output format: `png`, `jpeg`, or `pdf` |
| `capturedAt` | ISO timestamp for the capture attempt |
| `error` | Error message when capture failed |

### Pricing

The actor uses pay-per-event pricing, so cost is tied to the run and successful captures.

| Event | Price | Charged when |
| --- | --- | --- |
| `start` | `$0.005` per run | Once when the actor starts. |
| `capture` | BRONZE `$0.00040765` per successful capture | Each successful screenshot or PDF capture saved to storage. This is about `$0.41` per 1,000 captures on BRONZE, with lower per-capture prices on higher Apify plans. |

Failed URLs are saved as error rows for debugging, but the `capture` event is charged only after a screenshot or PDF is saved successfully.

Use a small URL list for your first run, review the dataset and key-value store records, and then scale up. Exact live pricing is shown on the Apify actor page before you start a run.

### Input configuration

| Setting | JSON key | Use it for | Example |
| --- | --- | --- | --- |
| Page URLs | `startUrls` | Required public HTTP/HTTPS pages to capture. | `[{"url":"https://example.com"}]` |
| Screenshot type | `screenshotType` | Capture `viewport` or `fullPage` images. Ignored for PDF output. | `fullPage` |
| Output format | `outputFormat` | Choose `png`, `jpeg`, or `pdf`. | `png` |
| Viewport | `viewport` | Set browser width, height, device scale, and mobile mode. | `{"width":1366,"height":768,"isMobile":false}` |
| Wait until | `waitUntil` | Choose page load milestone before capture. | `load` |
| Extra delay in milliseconds | `delayMs` | Wait after load for animations or late-rendered widgets. | `1000` |
| Element selector | `selector` | Capture only the first matching visible element for image output. | `main` |
| Maximum concurrent pages | `maxConcurrency` | Control browser pages captured in parallel. | `2` |
| Proxy configuration | `proxyConfiguration` | Optional Apify Proxy settings for sites that need them. | `{"useApifyProxy":false}` |

### Example input

```json
{
  "startUrls": [
    { "url": "https://example.com" },
    { "url": "https://docs.apify.com" }
  ],
  "screenshotType": "fullPage",
  "outputFormat": "png",
  "viewport": {
    "width": 1366,
    "height": 768,
    "deviceScaleFactor": 1,
    "isMobile": false
  },
  "waitUntil": "load",
  "delayMs": 1000,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

### Example output

```json
{
  "url": "https://example.com/",
  "finalUrl": "https://example.com/",
  "statusCode": 200,
  "title": "Example Domain",
  "screenshotKey": "0001-example-com.png",
  "screenshotUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/0001-example-com.png",
  "pdfKey": null,
  "width": 1366,
  "height": 768,
  "format": "png",
  "capturedAt": "2026-07-03T10:00:00.000Z",
  "error": null
}
```

### Tips for reliable captures

- **Start with one URL**: Confirm the site renders correctly before adding a large list.
- **Use `load` first**: Switch to `networkidle` only when the page needs extra network quiet time.
- **Add a small delay**: Use `delayMs` for animations, cookie banners, or client-rendered content.
- **Keep concurrency modest**: Lower `maxConcurrency` for very long pages, PDFs, or memory-heavy sites.
- **Check the key-value store**: Screenshot and PDF files are stored there; the dataset keeps their keys and URLs.

### Limits and practical notes

- The actor captures public HTTP/HTTPS pages.
- Private, login-gated, paywalled, or bot-blocked pages may fail or show limited content.
- CSS selector captures require the target element to be visible within the timeout.
- PDF output ignores `screenshotType` and `selector`.
- Some sites render different content by country, cookie state, viewport, or bot detection.

### API usage

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~website-screenshot-generator/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://example.com"}],"screenshotType":"fullPage","outputFormat":"png"}'
```

#### Node.js

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/website-screenshot-generator').call({
  startUrls: [{ url: 'https://example.com' }],
  screenshotType: 'fullPage',
  outputFormat: 'png'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/website-screenshot-generator").call(run_input={
    "startUrls": [{"url": "https://example.com"}],
    "screenshotType": "fullPage",
    "outputFormat": "png",
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### MCP and AI agents

Use this actor from MCP-compatible tools through Apify MCP Server.

MCP URL:

```text
https://mcp.apify.com/?tools=fetch_cat/website-screenshot-generator
```

Example prompts:

- "Capture full-page screenshots for these public landing pages."
- "Save a PDF snapshot of this documentation page."
- "Capture the hero section from this URL using a CSS selector."

### Legality and responsible use

This actor captures publicly accessible web pages.

Use screenshots and PDFs responsibly, follow the target website's terms, Apify's terms, and applicable laws, and do not use the actor to bypass access controls.

### Related actors

Explore related actors from the same Apify account:

- [Website Content Crawler Lite](https://apify.com/fetch_cat/website-content-crawler-lite)
- [Web Page to Markdown Extractor](https://apify.com/fetch_cat/web-page-to-markdown-extractor)
- [Website Contact Finder](https://apify.com/fetch_cat/website-contact-finder)
- [Google News Scraper](https://apify.com/fetch_cat/google-news-scraper)
- [Bing SERP & Search Results Scraper](https://apify.com/fetch_cat/bing-search-results-scraper)

### Changelog

- `0.1` - Initial version for bulk public page screenshots, selector captures, and PDF snapshots.

### Need help?

If a URL produces an error row, start with a single page, use `waitUntil: "load"`, add a small `delayMs`, and inspect `statusCode`, `finalUrl`, and `error`.

# Actor input Schema

## `startUrls` (type: `array`):

Public HTTP or HTTPS pages to capture. Add one URL per page.

## `screenshotType` (type: `string`):

Capture only the visible viewport or the full scrollable page. Ignored for PDF output.

## `outputFormat` (type: `string`):

Choose PNG, JPEG, or PDF output.

## `viewport` (type: `object`):

Browser viewport used for capture.

## `waitUntil` (type: `string`):

Page load milestone to wait for before capture.

## `delayMs` (type: `integer`):

Optional delay after the selected load milestone, useful for animations or late-rendered widgets.

## `selector` (type: `string`):

Optional CSS selector. When set, only the first matching visible element is captured for image output.

## `maxConcurrency` (type: `integer`):

How many browser pages to capture in parallel. Keep this low for long pages or PDFs.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy configuration for sites that require a specific country or proxy group.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://example.com"
    }
  ],
  "screenshotType": "viewport",
  "outputFormat": "png",
  "viewport": {
    "width": 1366,
    "height": 768,
    "deviceScaleFactor": 1,
    "isMobile": false
  },
  "waitUntil": "load",
  "delayMs": 0,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://example.com"
        }
    ],
    "viewport": {
        "width": 1366,
        "height": 768,
        "deviceScaleFactor": 1,
        "isMobile": false
    },
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/website-screenshot-generator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://example.com" }],
    "viewport": {
        "width": 1366,
        "height": 768,
        "deviceScaleFactor": 1,
        "isMobile": False,
    },
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/website-screenshot-generator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://example.com"
    }
  ],
  "viewport": {
    "width": 1366,
    "height": 768,
    "deviceScaleFactor": 1,
    "isMobile": false
  },
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call fetch_cat/website-screenshot-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetch_cat/website-screenshot-generator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Website Screenshot Generator",
        "description": "Capture screenshots and PDFs from public web pages in bulk.",
        "version": "0.1",
        "x-build-id": "97iupuxQCuw8KBgnO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~website-screenshot-generator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-website-screenshot-generator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fetch_cat~website-screenshot-generator/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-website-screenshot-generator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fetch_cat~website-screenshot-generator/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-website-screenshot-generator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Page URLs",
                        "type": "array",
                        "description": "Public HTTP or HTTPS pages to capture. Add one URL per page.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "screenshotType": {
                        "title": "Screenshot type",
                        "enum": [
                            "viewport",
                            "fullPage"
                        ],
                        "type": "string",
                        "description": "Capture only the visible viewport or the full scrollable page. Ignored for PDF output.",
                        "default": "viewport"
                    },
                    "outputFormat": {
                        "title": "Output format",
                        "enum": [
                            "png",
                            "jpeg",
                            "pdf"
                        ],
                        "type": "string",
                        "description": "Choose PNG, JPEG, or PDF output.",
                        "default": "png"
                    },
                    "viewport": {
                        "title": "Viewport",
                        "type": "object",
                        "description": "Browser viewport used for capture.",
                        "properties": {
                            "width": {
                                "title": "Width",
                                "description": "Viewport width in pixels.",
                                "type": "integer",
                                "minimum": 320,
                                "maximum": 3840,
                                "default": 1366
                            },
                            "height": {
                                "title": "Height",
                                "description": "Viewport height in pixels.",
                                "type": "integer",
                                "minimum": 240,
                                "maximum": 2160,
                                "default": 768
                            },
                            "deviceScaleFactor": {
                                "title": "Device scale factor",
                                "description": "Pixel density multiplier.",
                                "type": "number",
                                "minimum": 1,
                                "maximum": 3,
                                "default": 1
                            },
                            "isMobile": {
                                "title": "Mobile viewport",
                                "description": "Emulate a mobile-style viewport.",
                                "type": "boolean",
                                "default": false
                            }
                        }
                    },
                    "waitUntil": {
                        "title": "Wait until",
                        "enum": [
                            "domcontentloaded",
                            "load",
                            "networkidle"
                        ],
                        "type": "string",
                        "description": "Page load milestone to wait for before capture.",
                        "default": "load"
                    },
                    "delayMs": {
                        "title": "Extra delay in milliseconds",
                        "minimum": 0,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Optional delay after the selected load milestone, useful for animations or late-rendered widgets.",
                        "default": 0
                    },
                    "selector": {
                        "title": "Element selector",
                        "type": "string",
                        "description": "Optional CSS selector. When set, only the first matching visible element is captured for image output."
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrent pages",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "How many browser pages to capture in parallel. Keep this low for long pages or PDFs.",
                        "default": 2
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy configuration for sites that require a specific country or proxy group."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
