# Website Screenshot Generator (`parseforge/screenshot-url`) Actor

Capture pixel-perfect website screenshots in seconds! Generate full-page or viewport PNG and JPEG shots of any URL with custom viewport sizes, wait times, and device modes. Includes page title, description, OG image, and metadata. Perfect for audits, monitoring, and visual QA. Start capturing today!

- **URL**: https://apify.com/parseforge/screenshot-url.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.00 / 1,000 results

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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 📸 URL Screenshot Tool

> 🚀 **Capture full-page screenshots of any website in seconds.** PNG, JPEG, or PDF export with **custom viewport, wait conditions, and meta tag extraction**. No API key, no registration, no browser licensing hassles.

> 🕒 **Last updated:** 2026-04-21 · **📊 14 fields** per capture · **🖼️ 3 output formats** · **⚡ Up to 50 parallel captures** · **📐 Custom viewport**

The **URL Screenshot Tool** renders any URL in a headless Chromium browser and saves the output as PNG, JPEG, or PDF. Each capture ships with page metadata (title, meta tags, HTTP status, final URL after redirects, page load time) so you can audit SEO and visuals in one pass. The tool runs up to 50 captures in parallel, blocks heavy resources like fonts and video, and supports custom wait conditions for slow-rendering single-page apps.

Screenshots are uploaded to the run's key-value store, and the public URL is included in each dataset record so you can download or embed images directly. Use it for design audits, compliance archives, visual regression testing, or any workflow where you need a pixel-perfect snapshot of a live page.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Designers, QA teams, compliance officers, marketers, product managers, competitive intelligence | Design audits, visual regression, compliance archiving, competitor monitoring, PDF report generation |

---

### 📋 What the URL Screenshot Tool does

Six capture workflows in a single run:

- 🖼️ **Multi-format output.** PNG, JPEG, or PDF export per URL.
- 🖥️ **Custom viewport.** Set width, height, and device emulation for responsive captures.
- 📜 **Full-page capture.** Scroll and stitch the entire page, or capture just the viewport.
- ⏳ **Wait conditions.** Wait for a CSS selector, a fixed timeout, or `domcontentloaded`.
- 🏷️ **Meta tag audit.** Every capture returns the full meta tag dictionary for SEO review.
- 🔗 **Redirect tracking.** Records the final URL after all redirects.

Plus response timing (milliseconds), HTTP status, screenshot file size, and a public URL to the image.

> 💡 **Why it matters:** visual snapshots are the fastest way to audit a page. Building your own browser farm costs thousands monthly. This Actor keeps pay-per-use pricing with production-quality Chromium rendering.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough of design audits across competitor homepages._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>startUrls</code></td><td>array of URLs</td><td>required</td><td>One or more URLs to screenshot.</td></tr>
<tr><td><code>viewport</code></td><td>object</td><td><code>{width:1920,height:1080}</code></td><td>Browser viewport size in pixels.</td></tr>
<tr><td><code>fullPage</code></td><td>boolean</td><td><code>true</code></td><td>Capture full scrollable page or just the viewport.</td></tr>
<tr><td><code>format</code></td><td>string</td><td><code>"png"</code></td><td><code>png</code>, <code>jpeg</code>, or <code>pdf</code>.</td></tr>
<tr><td><code>waitForSelector</code></td><td>string</td><td><code>""</code></td><td>CSS selector to wait for before capture.</td></tr>
<tr><td><code>waitMs</code></td><td>integer</td><td><code>2000</code></td><td>Fixed delay after page load.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>URLs captured. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
</tbody>
</table>

**Example: design audit across 5 homepages.**

```json
{
    "startUrls": [
        { "url": "https://apify.com" },
        { "url": "https://stripe.com" },
        { "url": "https://openai.com" }
    ],
    "viewport": { "width": 1920, "height": 1080 },
    "fullPage": true,
    "format": "png",
    "waitMs": 2000
}
````

**Example: PDF archive of a long-form article.**

```json
{
    "startUrls": [
        { "url": "https://example-blog.com/article-to-archive" }
    ],
    "format": "pdf",
    "fullPage": true,
    "waitForSelector": "article"
}
```

> ⚠️ **Good to Know:** single-page apps with heavy client-side rendering may need a longer `waitMs` or a specific `waitForSelector` to capture after content loads. Fonts and video are blocked by default to speed up capture; disable that in the source if you need them.

***

### 📊 Output

Each capture produces a **14-field record** plus the image stored in the key-value store. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🔗 `url` | string | `"https://apify.com"` |
| ➡️ `finalUrl` | string | null | `"https://apify.com/"` (after redirects) |
| 🏷️ `title` | string | null | `"Apify: Full-stack web scraping platform"` |
| 📐 `viewport` | object | `{"width": 1920, "height": 1080}` |
| 📜 `fullPage` | boolean | `true` |
| 🖼️ `format` | string | `"png"` |
| 🔑 `screenshotKey` | string | `"screenshot-1776742478493-ewks6j.png"` |
| 🌐 `screenshotUrl` | string | `"https://api.apify.com/v2/.../records/screenshot-...png"` |
| 📦 `sizeBytes` | number | `184118` |
| ⏱️ `pageLoadTimeMs` | number | `1469` |
| 🟢 `httpStatus` | number | null | `200` |
| 🏷️ `metaTags` | object | `{"description": "...", "og:image": "..."}` |
| 🕒 `screenshotAt` | ISO 8601 | `"2026-04-21T12:00:00.000Z"` |
| ❗ `error` | string | null | `"Timeout"` on failure |

#### 📦 Sample records

<details>
<summary><strong>📷 Typical full-page PNG capture</strong></summary>

```json
{
    "url": "https://apify.com",
    "finalUrl": "https://apify.com/",
    "title": "Apify: Full-stack web scraping platform",
    "viewport": { "width": 1920, "height": 1080 },
    "fullPage": true,
    "format": "png",
    "screenshotKey": "screenshot-1776742478493-ewks6j.png",
    "screenshotUrl": "https://api.apify.com/v2/key-value-stores/xyz/records/screenshot-...png",
    "sizeBytes": 184118,
    "pageLoadTimeMs": 1469,
    "httpStatus": 200,
    "metaTags": {
        "description": "Cloud platform for web scraping and AI automation.",
        "og:image": "https://apify.com/og-image.png",
        "twitter:card": "summary_large_image"
    },
    "screenshotAt": "2026-04-21T12:00:00.000Z"
}
```

</details>

<details>
<summary><strong>📄 PDF export of a long article</strong></summary>

```json
{
    "url": "https://example-blog.com/article",
    "finalUrl": "https://example-blog.com/article",
    "title": "Deep Dive into Rate Limiting",
    "viewport": { "width": 1920, "height": 1080 },
    "fullPage": true,
    "format": "pdf",
    "screenshotKey": "screenshot-1776742478493-2h4k9l.pdf",
    "screenshotUrl": "https://api.apify.com/v2/key-value-stores/xyz/records/screenshot-...pdf",
    "sizeBytes": 623001,
    "pageLoadTimeMs": 2830,
    "httpStatus": 200,
    "metaTags": { "description": "Rate limiting deep dive" },
    "screenshotAt": "2026-04-21T12:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🚧 URL that timed out</strong></summary>

```json
{
    "url": "https://slow-site.example.com",
    "finalUrl": null,
    "title": null,
    "viewport": { "width": 1920, "height": 1080 },
    "fullPage": false,
    "format": "png",
    "screenshotKey": "",
    "screenshotUrl": "",
    "sizeBytes": 0,
    "pageLoadTimeMs": 0,
    "httpStatus": null,
    "metaTags": {},
    "screenshotAt": "2026-04-21T12:00:00.000Z",
    "error": "Timeout 30000ms exceeded"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🖼️ | **Three formats.** PNG, JPEG, and PDF from the same input. |
| 📐 | **Custom viewport.** Desktop, tablet, mobile sizes for responsive audits. |
| ⏳ | **Flexible waits.** CSS selector, millisecond delay, or DOM-ready events. |
| 🏷️ | **Meta tag dump.** Full `<meta>` dictionary returned alongside the image. |
| ⚡ | **Parallel capture.** Up to 50 screenshots in parallel on a single run. |
| 🚫 | **No browser farm.** Full Chromium rendering without infrastructure. |
| 🔌 | **Integrations.** Pipes into Drive, Slack, Notion, and any image host. |

> 📊 Visual audits are the fastest way to catch design regressions, competitor moves, and layout bugs. One screenshot every day is cheaper than a single missed visual bug in production.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ URL Screenshot Tool** *(this Actor)* | $5 free credit, then pay-per-use | Any public URL | **Live per run** | viewport, fullPage, wait conditions | ⚡ 2 min |
| Headless browser cloud services | $$$+/hour | Any URL | Live | Custom scripts | 🕒 Variable |
| Self-hosted Puppeteer | Free | Whatever you host | Your schedule | Your code | 🐢 Days |
| Manual screenshot tools | Free | Single-user, manual | Manual | Basic | 🕒 Slow |

Pick this Actor when you want pixel-perfect captures without running your own browser infrastructure.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the URL Screenshot Tool page on the Apify Store.
3. 🎯 **Set input.** Paste URLs, pick a format, set viewport and wait conditions.
4. 🚀 **Run it.** Click **Start** and let the Actor capture each page.
5. 📥 **Download.** Grab your images directly from the dataset or the key-value store.

> ⏱️ Total time from signup to downloaded screenshots: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🎨 Design & UX

- Daily snapshots of your own site for regression
- Competitor homepage monitoring
- Cross-device visual audits
- Share design reviews with stakeholders

</td>
<td width="50%" valign="top">

#### 🧪 QA & Testing

- Visual regression across deploys
- Multi-viewport verification
- Pixel-perfect screenshot evidence
- PDF reports for test runs

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 📝 Compliance & Archives

- Legal archives of marketing pages
- Accessibility audits with visual proof
- Regulatory page preservation
- Terms of service snapshots

</td>
<td width="50%" valign="top">

#### 📊 Competitive Intelligence

- Monitor rival landing pages
- Capture pricing page snapshots
- Archive launch announcements
- Track seasonal design changes

</td>
</tr>
</table>

***

### 🔌 Automating URL Screenshot Tool

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Daily snapshots of key pages build a visual history archive.

***

### ❓ Frequently Asked Questions

<details>
<summary><strong>🧩 How does it work?</strong></summary>

The Actor launches a headless Chromium browser, navigates to each URL in parallel, waits for the configured condition, and captures the screenshot in your chosen format. Images are stored in the run's key-value store with a public download URL.

</details>

<details>
<summary><strong>📏 How large can screenshots be?</strong></summary>

PNG and JPEG captures are limited by page height and viewport width. Very long pages (thousands of pixels) produce multi-megabyte images. PDF is usually smaller for long pages.

</details>

<details>
<summary><strong>⏳ What if a page needs more time to render?</strong></summary>

Increase `waitMs` or set a `waitForSelector` that matches a late-rendering element. JavaScript frameworks typically need 2-5 seconds post-navigation.

</details>

<details>
<summary><strong>📐 Can I emulate mobile devices?</strong></summary>

Yes. Pass a narrow viewport like `{"width": 390, "height": 844}` for iPhone-sized captures. Full device emulation is on the roadmap.

</details>

<details>
<summary><strong>⏰ Can I schedule daily snapshots?</strong></summary>

Yes. Apify Schedules lets you run the Actor daily or weekly against the same URL list for visual history archives.

</details>

<details>
<summary><strong>⚖️ Is it legal to screenshot public websites?</strong></summary>

Screenshots of publicly accessible pages for research and audits are standard practice. Commercial redistribution of a competitor's screenshots may raise copyright concerns.

</details>

<details>
<summary><strong>💼 Can I use screenshots commercially?</strong></summary>

Internal design reviews, QA runs, and compliance archives are fine. Redistributing or selling screenshots of third-party sites usually requires permission.

</details>

<details>
<summary><strong>💳 Do I need a paid Apify plan to use this Actor?</strong></summary>

No. Free plan covers testing (10 URLs per run). A paid plan lifts the limit and speeds up concurrency.

</details>

<details>
<summary><strong>🔁 What happens if a run fails?</strong></summary>

Apify retries transient errors. Per-URL failures include an `error` field. Partial datasets and any captured images are preserved.

</details>

<details>
<summary><strong>🍪 Can I pass cookies to log in?</strong></summary>

Not in this version. For authenticated captures, chain with a login actor upstream that emits fresh cookies.

</details>

<details>
<summary><strong>🧾 Does it capture SPAs (React, Vue, Svelte)?</strong></summary>

Yes. Use `waitForSelector` for a reliable element that appears only after the SPA has rendered, or increase `waitMs`.

</details>

<details>
<summary><strong>🆘 What if I need help?</strong></summary>

Our team is available through the Apify platform and the Tally form below.

</details>

***

### 🔌 Integrate with any app

URL Screenshot Tool connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate visual audit workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Upload captures to Drive, Dropbox, Notion
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Post screenshots to team channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe snapshot logs into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger captures from deploys
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Save images to Drive folders

You can also use webhooks to push new screenshots directly into visual regression tools.

***

### 🔗 Recommended Actors

- [**🕸️ Website Content Crawler**](https://apify.com/parseforge/website-content-crawler) - Deep-crawl a domain for text content
- [**🤖 RAG Web Browser**](https://apify.com/parseforge/rag-web-browser) - Search or fetch URLs with LLM-ready output
- [**📰 Smart Article Extractor**](https://apify.com/parseforge/article-extractor) - Extract articles from news sites
- [**📧 Contact Info Scraper**](https://apify.com/parseforge/contact-info-scraper) - Emails, phones, and socials from URLs
- [**🔍 Google Search Scraper**](https://apify.com/parseforge/google-search-scraper) - SERP results with rank and description

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more site-audit tools.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool. It captures only publicly accessible pages from URLs you provide. Respect the copyright and terms of service of every site you screenshot, especially before redistributing captures.

# Actor input Schema

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

URLs to process

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

Browser viewport size

## `fullPage` (type: `boolean`):

Capture full scrollable page (true) or just viewport (false).

## `format` (type: `string`):

Output file format

## `waitForSelector` (type: `string`):

CSS selector to wait for before capture

## `waitMs` (type: `integer`):

Milliseconds to wait after page load

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "viewport": {
    "width": 1920,
    "height": 1080
  },
  "fullPage": true,
  "format": "png",
  "waitMs": 2000,
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Complete dataset

# 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://apify.com"
        }
    ],
    "viewport": {
        "width": 1920,
        "height": 1080
    },
    "fullPage": true,
    "format": "png",
    "waitMs": 2000,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/screenshot-url").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://apify.com" }],
    "viewport": {
        "width": 1920,
        "height": 1080,
    },
    "fullPage": True,
    "format": "png",
    "waitMs": 2000,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/screenshot-url").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://apify.com"
    }
  ],
  "viewport": {
    "width": 1920,
    "height": 1080
  },
  "fullPage": true,
  "format": "png",
  "waitMs": 2000,
  "maxItems": 10
}' |
apify call parseforge/screenshot-url --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Website Screenshot Generator",
        "description": "Capture pixel-perfect website screenshots in seconds! Generate full-page or viewport PNG and JPEG shots of any URL with custom viewport sizes, wait times, and device modes. Includes page title, description, OG image, and metadata. Perfect for audits, monitoring, and visual QA. Start capturing today!",
        "version": "1.0",
        "x-build-id": "5SxpifKW6hs7ldUcM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~screenshot-url/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-screenshot-url",
                "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/parseforge~screenshot-url/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-screenshot-url",
                "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/parseforge~screenshot-url/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-screenshot-url",
                "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": "URLs to Screenshot",
                        "type": "array",
                        "description": "URLs to process",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "viewport": {
                        "title": "Viewport",
                        "type": "object",
                        "description": "Browser viewport size"
                    },
                    "fullPage": {
                        "title": "Full Page",
                        "type": "boolean",
                        "description": "Capture full scrollable page (true) or just viewport (false)."
                    },
                    "format": {
                        "title": "Output Format",
                        "enum": [
                            "png",
                            "jpeg",
                            "pdf"
                        ],
                        "type": "string",
                        "description": "Output file format"
                    },
                    "waitForSelector": {
                        "title": "Wait for Selector",
                        "type": "string",
                        "description": "CSS selector to wait for before capture"
                    },
                    "waitMs": {
                        "title": "Wait Milliseconds",
                        "minimum": 0,
                        "maximum": 60000,
                        "type": "integer",
                        "description": "Milliseconds to wait after page load"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
