# MCP Screenshot — AI Agent Full-Page Capture Tool (`knotless_cadence/mcp-screenshot`) Actor

MCP-compatible screenshot tool for AI agents. Capture full-page website screenshots programmatically. Returns base64 images for LLM vision analysis. Supports custom viewports and wait conditions. Build visual AI workflows. Custom pipeline: $100 pilot, spinov001@gmail.com

- **URL**: https://apify.com/knotless\_cadence/mcp-screenshot.md
- **Developed by:** [Alex](https://apify.com/knotless_cadence) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## MCP Screenshot - Capture Any Webpage as PNG for AI Agents & Visual Monitoring

**Need your AI agent to "see" a webpage but LLMs only process text?** Screenshots bridge the gap between visual web content and AI understanding. Manual screenshot workflows do not scale. What if your AI agent could capture any URL as a high-resolution PNG in seconds — viewport or full page — and get back a direct download link?

MCP Screenshot is an Apify actor that uses Playwright (Chromium) to render any webpage and capture it as a PNG image. Supports custom viewport dimensions (width/height), full-page scrollable captures, and stores the result in Apify Key-Value Store with a direct download URL. Built for AI vision pipelines, visual regression testing, change monitoring, and content archiving.

### Features

- Full Chromium rendering via Playwright — captures JavaScript-rendered pages, SPAs, and dynamic content
- Viewport or full-page capture modes
- Custom viewport dimensions (default: 1280x720)
- Waits for `networkidle` + 2-second buffer to ensure complete page rendering
- PNG output stored in Apify Key-Value Store with direct download URL
- Returns file size, page title, and metadata alongside the screenshot
- Headless execution — no GUI required
- MCP-compatible JSON output with screenshot URL for downstream AI agents
- Graceful error handling — returns error message instead of crashing on unreachable URLs

### Output Data Example

```json
{
  "url": "https://stripe.com",
  "title": "Stripe | Financial Infrastructure for the Internet",
  "screenshotKey": "screenshot_1710842400000",
  "screenshotUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/screenshot_1710842400000",
  "width": 1280,
  "height": 720,
  "fullPage": false,
  "fileSize": 487231,
  "scrapedAt": "2026-03-19T10:30:00.000Z"
}
````

### Use Cases

1. **AI Vision Pipelines** — Feed webpage screenshots into GPT-4V, Claude, or Gemini for visual analysis: layout review, design feedback, content extraction from images.
2. **Visual Regression Testing** — Capture screenshots before and after deployments. Compare them to detect unintended UI changes across your web application.
3. **Website Change Monitoring** — Schedule periodic screenshots of competitor landing pages, pricing pages, or product listings. Detect visual changes that text-based monitoring misses.
4. **Content Archiving** — Create visual snapshots of web pages for legal compliance, evidence preservation, or historical records.
5. **Thumbnail Generation** — Automatically generate preview thumbnails for link aggregators, dashboards, or content management systems.
6. **Social Media Previews** — Capture how your webpage looks to create accurate social media preview images instead of relying on OG tags.
7. **Accessibility Audits** — Screenshot pages at different viewport sizes to verify responsive design and mobile compatibility.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | string | Yes | — | Webpage URL to capture (e.g., `https://stripe.com`) |
| `fullPage` | boolean | No | `false` | Set to `true` to capture the entire scrollable page, not just the viewport |
| `width` | integer | No | `1280` | Viewport width in pixels |
| `height` | integer | No | `720` | Viewport height in pixels |

### How It Works

1. **Browser Launch** — Starts a headless Chromium instance via Playwright.
2. **Page Navigation** — Navigates to the target URL with `networkidle` wait strategy (waits until no more than 0 network connections for 500ms).
3. **Render Buffer** — Waits an additional 2 seconds after network idle to allow late-loading elements (lazy images, animations, deferred scripts) to render.
4. **Screenshot Capture** — Takes a PNG screenshot of the viewport (or full scrollable page if `fullPage` is true).
5. **Storage** — Saves the PNG buffer to Apify Key-Value Store with a timestamped key.
6. **Output** — Pushes metadata (URL, title, screenshot download URL, file size, dimensions) to the dataset.

### Viewport Presets

| Preset | Width | Height | Use Case |
|--------|-------|--------|----------|
| Desktop HD | 1920 | 1080 | Standard desktop monitoring |
| Desktop | 1280 | 720 | Default, good balance of speed and detail |
| Tablet | 768 | 1024 | iPad-style responsive testing |
| Mobile | 375 | 812 | iPhone-style mobile screenshots |

### Integration with AI Agents

```javascript
// Capture a screenshot and pass to GPT-4V for analysis
const result = await apifyClient.actor("mcp-screenshot").call({
  url: "https://competitor.com/pricing",
  fullPage: true,
  width: 1920,
  height: 1080
});
const screenshotUrl = result.items[0].screenshotUrl;
// Pass screenshotUrl to your vision model
```

### More Tools for AI Agents

- [MCP Web Search](https://apify.com/store?search=knotless_cadence) — Multi-source search for AI agents
- [MCP Content Analyzer](https://apify.com/store?search=knotless_cadence) — Readability and keyword analysis
- [MCP Data Enrichment](https://apify.com/store?search=knotless_cadence) — Domain intelligence in one call
- [MCP Price Monitor](https://apify.com/store?search=knotless_cadence) — Extract prices from any product page
- [All MCP Actors on Apify Store](https://apify.com/store?search=knotless_cadence)
- [MCP Servers Collection on GitHub](https://github.com/spinov001-art/mcp-servers-collection)
- [AI Market Intelligence Reports](https://payhip.com/aimarketintel)

# Actor input Schema

## `url` (type: `string`):

Webpage to screenshot

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

Capture full scrollable page

## Actor input object example

```json
{
  "url": "https://stripe.com",
  "fullPage": false
}
```

# 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 = {
    "url": "https://stripe.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("knotless_cadence/mcp-screenshot").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 = { "url": "https://stripe.com" }

# Run the Actor and wait for it to finish
run = client.actor("knotless_cadence/mcp-screenshot").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 '{
  "url": "https://stripe.com"
}' |
apify call knotless_cadence/mcp-screenshot --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MCP Screenshot — AI Agent Full-Page Capture Tool",
        "description": "MCP-compatible screenshot tool for AI agents. Capture full-page website screenshots programmatically. Returns base64 images for LLM vision analysis. Supports custom viewports and wait conditions. Build visual AI workflows. Custom pipeline: $100 pilot, spinov001@gmail.com",
        "version": "1.0",
        "x-build-id": "ZtHGksfiSY2yY6Pq6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/knotless_cadence~mcp-screenshot/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-knotless_cadence-mcp-screenshot",
                "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/knotless_cadence~mcp-screenshot/runs": {
            "post": {
                "operationId": "runs-sync-knotless_cadence-mcp-screenshot",
                "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/knotless_cadence~mcp-screenshot/run-sync": {
            "post": {
                "operationId": "run-sync-knotless_cadence-mcp-screenshot",
                "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": [
                    "url"
                ],
                "properties": {
                    "url": {
                        "title": "URL",
                        "type": "string",
                        "description": "Webpage to screenshot"
                    },
                    "fullPage": {
                        "title": "Full Page",
                        "type": "boolean",
                        "description": "Capture full scrollable page",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
