Puppeteer: Headless Browser Automation

24.41.0 · active · verified Sat Apr 18

Puppeteer provides a high-level API to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi, enabling browser automation for tasks like testing, scraping, and PDF generation. It runs headless by default but can be configured for full UI. The current stable version is 24.41.0. Releases are frequent, often several times a month, typically synchronizing with new Chrome and Firefox browser versions.

Common errors

Warnings

Install

Imports

Quickstart

This example launches a headless Chrome browser, navigates to a URL, interacts with elements using Puppeteer's custom selectors, extracts text content, and then closes the browser.

import puppeteer from 'puppeteer';

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('https://developer.chrome.com/');

  await page.setViewport({width: 1080, height: 1024});

  await page.keyboard.press('/');

  await page.locator('::-p-aria(Search)').fill('automate beyond recorder');

  await page.locator('.devsite-result-item-link').click();

  const textSelector = await page
    .locator('::-p-text(Customize and automate)')
    .waitHandle();
  const fullTitle = await textSelector?.evaluate(el => el.textContent);

  console.log('The title of this blog post is "%s".', fullTitle);

  await browser.close();
})();

view raw JSON →