Puppeteer Mcp
Pricing
Pay per usage
Puppeteer Mcp
AI-powered browser automation via Model Context Protocol. Enable Claude, ChatGPT, and other AI assistants to control browsers, scrape data, and automate web tasks through natural language.
Pricing
Pay per usage
AI-powered browser automation via Model Context Protocol. Enable Claude, ChatGPT, and other AI assistants to control browsers, scrape data, and automate web tasks through natural language.
You can access the Puppeteer Mcp programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.3", "x-build-id": "W6JgMPd9devDBsxPB" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/meysamazing~puppeteer-mcp/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-meysamazing-puppeteer-mcp", "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/meysamazing~puppeteer-mcp/runs": { "post": { "operationId": "runs-sync-meysamazing-puppeteer-mcp", "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/meysamazing~puppeteer-mcp/run-sync": { "post": { "operationId": "run-sync-meysamazing-puppeteer-mcp", "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", "properties": { "port": { "title": "Server Port", "type": "string", "description": "Port for the MCP server to listen on. This is typically set automatically by Apify.", "default": "8080" }, "headlessMode": { "title": "Headless Mode", "type": "boolean", "description": "Run browser in headless mode (no visible UI). Recommended for production. Disable for debugging.", "default": true }, "defaultTimeout": { "title": "Default Timeout (ms)", "minimum": 1000, "maximum": 300000, "type": "integer", "description": "Default timeout for browser operations in milliseconds. Increase for slow-loading pages.", "default": 30000 }, "enableLogging": { "title": "Enable Logging", "type": "boolean", "description": "Enable detailed logging for debugging. Logs are visible in the Actor run console.", "default": true }, "maxConcurrency": { "title": "Max Browser Concurrency", "minimum": 1, "maximum": 10, "type": "integer", "description": "Maximum number of concurrent browser instances in the pool. Higher values use more memory but handle more simultaneous requests.", "default": 1 }, "logLevel": { "title": "Log Level", "enum": [ "debug", "info", "warn", "error" ], "type": "string", "description": "Logging verbosity level. Use 'debug' for troubleshooting, 'info' for normal operation, 'warn' or 'error' for minimal output.", "default": "info" }, "sessionTimeoutMs": { "title": "Session Timeout (ms)", "minimum": 60000, "maximum": 3600000, "type": "integer", "description": "Time in milliseconds before an idle browser session is automatically closed. Sessions are reused across tool calls.", "default": 1800000 }, "viewportWidth": { "title": "Viewport Width", "minimum": 320, "maximum": 3840, "type": "integer", "description": "Default browser viewport width in pixels. Affects how pages render and what's visible in screenshots.", "default": 1280 }, "viewportHeight": { "title": "Viewport Height", "minimum": 240, "maximum": 2160, "type": "integer", "description": "Default browser viewport height in pixels. Affects how pages render and what's visible in screenshots.", "default": 720 }, "userAgent": { "title": "User Agent", "type": "string", "description": "Browser user agent string. Leave empty for default Chrome user agent. Custom user agents can help avoid bot detection.", "default": "" }, "screenshotDatasetThreshold": { "title": "Screenshot Dataset Threshold (bytes)", "minimum": 0, "type": "integer", "description": "Screenshots larger than this size (in bytes) are automatically stored in the Actor's Dataset instead of returned inline. Set to 0 to always return inline.", "default": 102400 }, "contentDatasetThreshold": { "title": "Content Dataset Threshold (bytes)", "minimum": 0, "type": "integer", "description": "Page content (HTML/text) larger than this size (in bytes) is automatically stored in the Actor's Dataset instead of returned inline. Set to 0 to always return inline.", "default": 512000 }, "alwaysStoreScreenshotsInDataset": { "title": "Always Store Screenshots in Dataset", "type": "boolean", "description": "Force all screenshots to be stored in the Actor's Dataset, regardless of size. Useful if you want to keep all screenshots for later access.", "default": false }, "alwaysStoreContentInDataset": { "title": "Always Store Content in Dataset", "type": "boolean", "description": "Force all page content to be stored in the Actor's Dataset, regardless of size. Useful for archiving purposes.", "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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Puppeteer Mcp from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: