puppeteer/puppeteer
Summary
Puppeteer is a JavaScript library that provides a high-level API to control Chrome/Chromium over the DevTools Protocol, commonly used for browser automation, web scraping, and testing.
View Cached Full Text
Cached at: 06/15/26, 12:55 AM
puppeteer/puppeteer
Source: https://github.com/puppeteer/puppeteer
Puppeteer
Puppeteer is a JavaScript library which provides a high-level API to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi. Puppeteer runs in the headless (no visible UI) by default
Get started | API | FAQ | Contributing | Troubleshooting
Installation
npm i puppeteer # Downloads compatible Chrome during installation.
npm i puppeteer-core # Alternatively, install as a library, without downloading Chrome.
:::note
Modern package managers (including npm (see the RFC), pnpm, Yarn, Bun, and Deno) block dependency install scripts by default. If the install script is blocked, Puppeteer will not download the browser during installation, leading to runtime errors.
You can manually download the required browsers after installation by running:
npx puppeteer browsers install
Alternatively, you can configure your package manager to allow the install script to run (for example, with npm, by adding "puppeteer" to "allowScripts" in your package.json).
:::
MCP
Install chrome-devtools-mcp,
a Puppeteer-based MCP server for browser automation and debugging.
Puppeteer also supports the experimental WebMCP API.
Example
import puppeteer from 'puppeteer';
// Or import puppeteer from 'puppeteer-core';
// Launch the browser and open a new blank page.
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navigate the page to a URL.
await page.goto('https://developer.chrome.com/');
// Set the screen size.
await page.setViewport({width: 1080, height: 1024});
// Open the search menu using the keyboard.
await page.keyboard.press('/');
// Type into search box using accessible input name.
await page.locator('::-p-aria(Search)').fill('automate beyond recorder');
// Wait and click on first result.
await page.locator('.devsite-result-item-link').click();
// Locate the full title with a unique string.
const textSelector = await page
.locator('::-p-text(Customize and automate)')
.waitHandle();
const fullTitle = await textSelector?.evaluate(el => el.textContent);
// Print the full title.
console.log('The title of this blog post is "%s".', fullTitle);
await browser.close();
Similar Articles
@FakeMaidenMaker: Puppeteer can make the program open a browser by itself, click the mouse, type text, and grab page content like a human. No need to watch it work. GitHub has 95k stars, it's an absolute benchmark project in browser automation. GitHub: https://github.com/puppe…
Puppeteer is a popular browser automation JavaScript library that supports controlling Chrome and Firefox. It can be used for web scraping, automated testing, and other scenarios. Recently it has integrated the MCP protocol to support AI agents directly controlling the browser.
ChromeDevTools/chrome-devtools-mcp
Chrome DevTools MCP is an open-source Model Context Protocol server that lets AI coding agents (Gemini, Claude, Cursor, Copilot) control and inspect a live Chrome browser for automation, debugging, and performance analysis. It integrates Chrome DevTools with Puppeteer to provide AI assistants full browser inspection and automation capabilities.
Real Chrome. Live DOM. MCP tools. Multi tab control. Visible progress.
A new tool enabling AI agents to browse the web using a real Chrome instance with live DOM access, MCP tools, and multi-tab control.
CloakHQ/CloakBrowser
CloakBrowser is an open-source stealth Chromium browser that passes bot detection tests through 49 C++ source-level patches, offering drop-in replacements for Playwright and Puppeteer in Python and JavaScript.
@lightpanda_io: Introducing: Lightpanda Agent + PandaScript Four years ago we said browser automation was broken and we'd rewrite the w…
Lightpanda Agent and PandaScript enable browser automation by using LLMs at build time to generate executable scripts from plain English, eliminating runtime LLM calls and dependency on Playwright or Puppeteer.