{
  "data": {
    "similar": [
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/chrome-devtools-mcp.json",
        "name": "Chrome DevTools MCP",
        "score": 77,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "chrome-devtools-mcp"
      },
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/selenium.json",
        "name": "Selenium",
        "score": 73.6,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "selenium"
      },
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/browserless.json",
        "name": "Browserless",
        "score": 70.4,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "browserless"
      },
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/steel.json",
        "name": "Steel",
        "score": 70.4,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "steel"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/rea.json",
        "name": "REA",
        "score": 69.7,
        "shared": [
          "browser.debug",
          "browser.control"
        ],
        "slug": "rea"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/anchor-browser.json",
        "name": "Anchor Browser",
        "score": 67.3,
        "shared": [
          "browser.control",
          "browser.debug"
        ],
        "slug": "anchor-browser"
      }
    ],
    "tool": {
      "slug": "puppeteer",
      "name": "Puppeteer",
      "vendor": "Google",
      "vendorUrl": "https://pptr.dev",
      "kind": "sdk",
      "category": "browser",
      "summary": "Puppeteer is Google's open-source Node.js library for controlling Chrome and Firefox over the DevTools Protocol and WebDriver BiDi. An agent writes and runs scripts that navigate, click, type, read pages and take screenshots.",
      "url": "https://www.anchorterminal.com/tools/puppeteer",
      "markdownUrl": "https://www.anchorterminal.com/tools/puppeteer.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/puppeteer.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/puppeteer.json",
      "repo": "https://github.com/puppeteer/puppeteer",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "puppeteer"
        },
        {
          "registry": "npm",
          "name": "puppeteer-core"
        }
      ],
      "auth": "none",
      "authNotes": "No account or key. The library runs on the owner's machine and launches or connects to a local browser. Site logins live in the browser profile or cookies the script sets. `puppeteer.connect()` to a remote browser uses whatever that endpoint requires.",
      "pricing": "free",
      "pricingNotes": "Free and open source under Apache-2.0, with nothing to buy and no hosted service from Google. `npm i puppeteer` downloads Chrome for Testing and chrome-headless-shell at install time (checked 2026-10-14).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the docs or the source (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 95689,
        "npmWeekly": 11547242,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://pptr.dev",
      "capabilities": [
        "browser.control",
        "browser.debug"
      ],
      "tags": [
        "official",
        "local",
        "open-source",
        "browser",
        "sdk",
        "typescript",
        "no-auth"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 154,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 89,
          "payments": 60,
          "reliability": 80,
          "schema": 81,
          "security": 52,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "breakdown": [
          {
            "key": "reliability",
            "name": "Reliability",
            "weight": 16,
            "effectiveWeight": 20,
            "score": 80,
            "points": 16,
            "reason": "Scored as local software. Official npm packages `puppeteer` and `puppeteer-core` at 25.13.0, with Node.js 22.12 or later stated in `engines` and a browser support table (20). Public CI runs Chrome and Firefox tests on Linux, macOS and Windows. Of the 20 most recent CI runs on main, 7 to 13 October 2026, 10 concluded in failure, the newest in Windows headful Firefox and Chrome pipe jobs (12 of 25). 272 open issues and pull requests. Confirmed bugs carry P2 or P3 labels, several without a reply, such as `page.goto()` ignoring its timeout after a second navigation (18 of 25). release-please with conventional commits, breaking changes under their own heading and a major version for each set (15). Version 25, stable (15)."
          },
          {
            "key": "performance",
            "name": "Performance",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
          },
          {
            "key": "schema",
            "name": "Schema \u0026 documentation",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 81,
            "points": 13.16,
            "reason": "Graded as a library. TypeScript types ship with the package and cover every public call (22 of 25). No llms.txt and no Markdown routes on pptr.dev, though the docs and the 643-page API reference are Markdown in the repository (5 of 10). TSDoc on each member with remarks and parameter descriptions. Guides explain when to use locators or `page.$()`, with few statements of when not to use a call (14 of 20). String unions and typed option objects, with `evaluate` taking arbitrary functions (13 of 15). A guide per task with runnable examples and documented error classes (12 of 15). Versioned releases and a changelog for each (15)."
          },
          {
            "key": "ergonomics",
            "name": "Agent ergonomics",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 67,
            "points": 10.89,
            "reason": "A library adds no tool definitions to context. `page.accessibility.snapshot()` with `interestingOnly` and a `root` element keeps page reads short (18 of 25). Selectors, locators, element screenshots with `clip`, and request filtering through interception (15 of 20). Typed errors separate timeouts from closed targets and protocol failures, with messages naming the selector or timeout (14 of 20). Locators wait for visibility and stability and retry actions. No annotations or idempotency concept apply (10 of 20). `launch()` works with defaults and a bundled browser. JavaScript and TypeScript only (10 of 15)."
          },
          {
            "key": "security",
            "name": "Security \u0026 auth",
            "weight": 14,
            "effectiveWeight": 17.5,
            "score": 52,
            "points": 9.1,
            "reason": "No credential to leak and nothing to scope, so the middle band (20 of 30). Chrome's sandbox stays on unless the script turns it off, and request interception can block hosts. There is no allowlist on by default and no confirmation step (8 of 20). Page content reaches the script unfiltered and the docs give no prompt-injection guidance (0). Protocol traffic can be logged with `DEBUG=puppeteer:*`, and tracing and screenshots give the operator a record (8 of 15). SECURITY.md routes reports through Chromium's process, which has a reward programme, an OpenSSF Scorecards workflow runs daily, and no repository advisories were found (16 of 20)."
          },
          {
            "key": "payments",
            "name": "Payments \u0026 pricing",
            "weight": 10,
            "effectiveWeight": 12.5,
            "score": 60,
            "points": 7.5,
            "reason": "Free, self-hosted, nothing to buy, so 20 + 20 + 20 under the self-hosted rule. No payment protocol (0)."
          },
          {
            "key": "tasks",
            "name": "Task success",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
          },
          {
            "key": "maintenance",
            "name": "Maintenance \u0026 community",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 89,
            "points": 7.79,
            "reason": "25.13.0 on 8 October 2026 (30). Ten releases since 27 July 2026 (20). Confirmed bugs are labelled and pull requests merge most weeks, but many recent pull requests had no comment and a stale workflow closes unconfirmed bug reports after 21 days (18 of 25). Current official npm packages, no MCP server to register (15). Six runtime dependencies, pinned actions and Scorecards, with CI failing on half of recent runs (6 of 10)."
          },
          {
            "key": "transparency",
            "name": "Transparency \u0026 trust",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 70,
            "points": 6.13,
            "note": "editorial 72, provenance 68",
            "reason": "Apache-2.0, published by Google (30). No data statement for the library. It runs locally, downloads browsers from Google's storage at install, and the docs say where browsers are cached (18 of 30). Each release lists breaking changes, deprecated APIs are marked in the reference, and the support table maps versions to browsers. No written deprecation policy (10 of 20). No telemetry found in the library source, and the docs do not say so either way (14 of 20)."
          }
        ],
        "assessment": {
          "date": "2026-10-14",
          "basis": "public evidence",
          "confidence": "medium",
          "notes": {
            "ergonomics": "A library adds no tool definitions to context. `page.accessibility.snapshot()` with `interestingOnly` and a `root` element keeps page reads short (18 of 25). Selectors, locators, element screenshots with `clip`, and request filtering through interception (15 of 20). Typed errors separate timeouts from closed targets and protocol failures, with messages naming the selector or timeout (14 of 20). Locators wait for visibility and stability and retry actions. No annotations or idempotency concept apply (10 of 20). `launch()` works with defaults and a bundled browser. JavaScript and TypeScript only (10 of 15).",
            "maintenance": "25.13.0 on 8 October 2026 (30). Ten releases since 27 July 2026 (20). Confirmed bugs are labelled and pull requests merge most weeks, but many recent pull requests had no comment and a stale workflow closes unconfirmed bug reports after 21 days (18 of 25). Current official npm packages, no MCP server to register (15). Six runtime dependencies, pinned actions and Scorecards, with CI failing on half of recent runs (6 of 10).",
            "payments": "Free, self-hosted, nothing to buy, so 20 + 20 + 20 under the self-hosted rule. No payment protocol (0).",
            "reliability": "Scored as local software. Official npm packages `puppeteer` and `puppeteer-core` at 25.13.0, with Node.js 22.12 or later stated in `engines` and a browser support table (20). Public CI runs Chrome and Firefox tests on Linux, macOS and Windows. Of the 20 most recent CI runs on main, 7 to 13 October 2026, 10 concluded in failure, the newest in Windows headful Firefox and Chrome pipe jobs (12 of 25). 272 open issues and pull requests. Confirmed bugs carry P2 or P3 labels, several without a reply, such as `page.goto()` ignoring its timeout after a second navigation (18 of 25). release-please with conventional commits, breaking changes under their own heading and a major version for each set (15). Version 25, stable (15).",
            "schema": "Graded as a library. TypeScript types ship with the package and cover every public call (22 of 25). No llms.txt and no Markdown routes on pptr.dev, though the docs and the 643-page API reference are Markdown in the repository (5 of 10). TSDoc on each member with remarks and parameter descriptions. Guides explain when to use locators or `page.$()`, with few statements of when not to use a call (14 of 20). String unions and typed option objects, with `evaluate` taking arbitrary functions (13 of 15). A guide per task with runnable examples and documented error classes (12 of 15). Versioned releases and a changelog for each (15).",
            "security": "No credential to leak and nothing to scope, so the middle band (20 of 30). Chrome's sandbox stays on unless the script turns it off, and request interception can block hosts. There is no allowlist on by default and no confirmation step (8 of 20). Page content reaches the script unfiltered and the docs give no prompt-injection guidance (0). Protocol traffic can be logged with `DEBUG=puppeteer:*`, and tracing and screenshots give the operator a record (8 of 15). SECURITY.md routes reports through Chromium's process, which has a reward programme, an OpenSSF Scorecards workflow runs daily, and no repository advisories were found (16 of 20).",
            "transparency": "Apache-2.0, published by Google (30). No data statement for the library. It runs locally, downloads browsers from Google's storage at install, and the docs say where browsers are cached (18 of 30). Each release lists breaking changes, deprecated APIs are marked in the reference, and the support table maps versions to browsers. No written deprecation policy (10 of 20). No telemetry found in the library source, and the docs do not say so either way (14 of 20)."
          },
          "sources": [
            {
              "what": "repository, README, SECURITY.md and source at commit d8e4e36 (13 October 2026)",
              "url": "https://github.com/puppeteer/puppeteer",
              "seen": "2026-10-14"
            },
            {
              "what": "puppeteer-core changelog",
              "url": "https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/CHANGELOG.md",
              "seen": "2026-10-14"
            },
            {
              "what": "releases",
              "url": "https://api.github.com/repos/puppeteer/puppeteer/releases?per_page=30",
              "seen": "2026-10-14"
            },
            {
              "what": "CI runs on main",
              "url": "https://api.github.com/repos/puppeteer/puppeteer/actions/workflows/ci.yml/runs?branch=main\u0026per_page=20",
              "seen": "2026-10-14"
            },
            {
              "what": "newest 30 open issues and pull requests",
              "url": "https://api.github.com/repos/puppeteer/puppeteer/issues?state=open\u0026per_page=30\u0026sort=created\u0026direction=desc",
              "seen": "2026-10-14"
            },
            {
              "what": "stars, open issue count, licence",
              "url": "https://api.github.com/repos/puppeteer/puppeteer",
              "seen": "2026-10-14"
            },
            {
              "what": "npm latest version and engines",
              "url": "https://registry.npmjs.org/puppeteer/latest",
              "seen": "2026-10-14"
            },
            {
              "what": "npm weekly downloads",
              "url": "https://api.npmjs.org/downloads/point/last-week/puppeteer",
              "seen": "2026-10-14"
            },
            {
              "what": "supported browsers table",
              "url": "https://github.com/puppeteer/puppeteer/blob/main/docs/supported-browsers.md",
              "seen": "2026-10-14"
            },
            {
              "what": "WebMCP guide",
              "url": "https://pptr.dev/guides/webmcp",
              "seen": "2026-10-14"
            },
            {
              "what": "OSV advisories for puppeteer, puppeteer-core and @puppeteer/browsers (none)",
              "url": "https://api.osv.dev/v1/query",
              "seen": "2026-10-14"
            },
            {
              "what": "pptr.dev registration date",
              "url": "https://pubapi.registry.google/rdap/domain/pptr.dev",
              "seen": "2026-10-14"
            }
          ],
          "openQuestions": [
            "The reasons for each of the 10 failed CI runs were not read beyond the newest, where Windows jobs failed.",
            "Response times on older open issues were not sampled beyond the newest 30 items."
          ]
        },
        "negative": 0,
        "verdict": "Puppeteer is a stable, Apache-2.0 library on 25.13.0, with ten releases since 27 July 2026, typed APIs, locators that wait and retry, and accessibility snapshots an agent can read. It has no MCP server or llms.txt of its own, and 10 of the 20 most recent CI runs on main failed between 7 and 13 October 2026.",
        "bestFor": "Agents that write and run Node.js scripts against Chrome or Firefox.",
        "strengths": [
          "Ten releases from 25.4.0 on 27 July to 25.13.0 on 8 October 2026, each with a changelog generated by release-please",
          "TypeScript types for the whole API and a generated reference of 643 Markdown pages in the repository",
          "`page.accessibility.snapshot()` and the Locator API, which waits for elements and retries actions, suit scripted agent use",
          "Each release pins a tested Chrome for Testing and Firefox version, listed in a public support table",
          "Typed errors such as `TimeoutError`, `TargetCloseError` and `ConnectionClosedError` let a script tell timeouts from a closed browser"
        ],
        "weaknesses": [
          "No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project",
          "10 of the 20 most recent CI runs on main, 7 to 13 October 2026, concluded in failure, the newest in Windows Chrome and Firefox jobs",
          "Page content reaches the agent unfiltered, and the docs have no prompt-injection or untrusted-content guidance",
          "JavaScript and TypeScript only, with Node.js 22.12 or later required since 25.0.0",
          "A stale workflow marks unconfirmed bug reports after 14 days and closes them 7 days later"
        ],
        "agentNotes": [
          "Install with `npm i puppeteer`, which downloads a matching Chrome for Testing. Use `puppeteer-core` to bring your own browser",
          "Prefer `page.locator()` over `page.$()`. Locators wait for the element to be visible and stable before acting",
          "Read pages with `page.accessibility.snapshot({interestingOnly: true})` rather than full HTML to keep output short",
          "Catch `TimeoutError` separately from `TargetCloseError`. The first can be retried, the second needs a new page or browser",
          "Packages are ESM only since 25.0.0. Use `import puppeteer from 'puppeteer'` rather than `require`"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.6
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 89,
          "payments": 60,
          "reliability": 80,
          "schema": 81,
          "security": 52,
          "transparency": 72
        },
        "provenanceScore": 68
      },
      "connect": {
        "install": "npm i puppeteer"
      },
      "letme": {
        "capability": "https://letme.dev/browser.control",
        "tool": "https://letme.dev/puppeteer"
      },
      "notable": [
        "Latest release 25.13.0 on 8 October 2026, pinned to Chrome for Testing 155.0.8059.39 and Firefox 157.0.1 (https://github.com/puppeteer/puppeteer/blob/main/docs/supported-browsers.md)",
        "25.0.0 on 12 May 2026 made the packages ESM only, raised the minimum to Node.js 22 and removed deprecated APIs, all listed under Breaking Changes (https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/CHANGELOG.md)",
        "An experimental `page.webmcp` API reads and calls tools that pages register through WebMCP, in Chrome 151 or later behind a flag (https://pptr.dev/guides/webmcp)",
        "The docs home page points agents to chrome-devtools-mcp, a separate Puppeteer-based MCP server, for MCP use (https://github.com/puppeteer/puppeteer/blob/main/docs/index.md)",
        "SECURITY.md sends reports through Chromium's security process and says file writes and extension loading are intended behaviour, not vulnerabilities (https://github.com/puppeteer/puppeteer/blob/main/SECURITY.md)",
        "pptr.dev answers 404 for llms.txt, robots.txt and security.txt (checked 2026-10-14)"
      ],
      "area": "developer",
      "details": [
        {
          "label": "Interfaces",
          "value": "Node.js library (`puppeteer` with a bundled browser, `puppeteer-core` without). No CLI or MCP server. `@puppeteer/browsers` is a separate CLI and library for installing browsers"
        },
        {
          "label": "Protocols",
          "value": "Chrome DevTools Protocol for Chrome, WebDriver BiDi for Firefox and optionally Chrome (https://pptr.dev/webdriver-bidi)"
        },
        {
          "label": "Runtimes",
          "value": "Node.js 22.12 or later, ESM only since 25.0.0. Chrome for Testing, chrome-headless-shell and stable Firefox"
        },
        {
          "label": "Agent-relevant APIs",
          "value": "`page.locator()` with automatic waits, `page.accessibility.snapshot()`, request interception, screenshots and PDF, and the experimental `page.webmcp`"
        },
        {
          "label": "Errors",
          "value": "`PuppeteerError` with subclasses `TimeoutError`, `ProtocolError`, `TargetCloseError`, `ConnectionClosedError` and `TouchError`"
        },
        {
          "label": "Telemetry",
          "value": "None found in a search of the library source on 14 October 2026. The docs site pptr.dev loads Google Analytics"
        }
      ],
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "pptr.dev",
        "domainRegistered": "2018-05-23",
        "domainNote": "pptr.dev is the documentation site for Puppeteer, with a footer reading Copyright 2026 Google, Inc. RDAP gives a registration date of 23 May 2018. The repository is in the puppeteer organisation on GitHub. pptr.dev answers 404 for /.well-known/security.txt.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "No terms or privacy document governs this software beyond the Apache-2.0 licence, so `terms` and `privacy` are left out. The pptr.dev footer links Google's cookie policy for the site itself."
        ],
        "score": 68,
        "checks": [
          {
            "check": "Legal entity named",
            "value": "Google LLC",
            "points": 20,
            "max": 20,
            "state": "ok"
          },
          {
            "check": "Domain age",
            "value": "pptr.dev, registered 2018-05-23 (8 years)",
            "points": 11,
            "max": 15,
            "state": "part"
          },
          {
            "check": "Endpoint on the vendor's domain",
            "value": "no hosted endpoint",
            "points": 0,
            "max": 0,
            "state": "na"
          },
          {
            "check": "Terms of service",
            "value": "nothing hosted, so the Apache-2.0 licence stands in",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Privacy policy",
            "value": "nothing hosted, not scored",
            "points": 0,
            "max": 0,
            "state": "na"
          },
          {
            "check": "Status page",
            "value": "not found",
            "points": 0,
            "max": 10,
            "state": "no"
          },
          {
            "check": "Changelog",
            "value": "published",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "security.txt",
            "value": "not found",
            "points": 0,
            "max": 10,
            "state": "no"
          }
        ]
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/puppeteer.json"
    },
    "verify": {
      "accepts": "a page on pptr.dev or one of its subdomains, or the README of github.com/puppeteer/puppeteer",
      "badgeUrl": "https://www.anchorterminal.com/badges/puppeteer.svg",
      "body": {
        "slug": "puppeteer",
        "url": "the page with the badge or the link"
      },
      "docs": "https://www.anchorterminal.com/builders/#verify",
      "effect": "none, it never changes a grade, rank or review",
      "endpoint": "https://www.anchorterminal.com/api/v1/verify",
      "listingUrl": "https://www.anchorterminal.com/tools/puppeteer",
      "mcpTool": "verify_listing",
      "recheck": "weekly; two failed checks in a row and it lapses, a later pass restores it",
      "snippets": {
        "html": "\u003ca href=\"https://www.anchorterminal.com/tools/puppeteer\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/puppeteer.svg\" alt=\"Puppeteer on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e",
        "markdown": "[![Puppeteer on Anchor Terminal](https://www.anchorterminal.com/badges/puppeteer.svg)](https://www.anchorterminal.com/tools/puppeteer)",
        "link": "\u003ca href=\"https://www.anchorterminal.com/tools/puppeteer\"\u003ePuppeteer on Anchor Terminal\u003c/a\u003e"
      }
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/puppeteer",
    "json": "https://www.anchorterminal.com/tools/puppeteer.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/puppeteer.md",
    "slim": "https://www.anchorterminal.com/tools/puppeteer.min.md"
  },
  "markdown": "## Overview\n\n**Grade BB · 70.6/100 · rank #154 of 1076 · #5 in Browser automation · agent-ready · confidence medium**\n\n\n## Assessment\n\nPuppeteer is a stable, Apache-2.0 library on 25.13.0, with ten releases since 27 July 2026, typed APIs, locators that wait and retry, and accessibility snapshots an agent can read. It has no MCP server or llms.txt of its own, and 10 of the 20 most recent CI runs on main failed between 7 and 13 October 2026.\n\n## Facts\n\n| Field | Value |\n| --- | --- |\n| Vendor | Google (https://pptr.dev) |\n| Kind | SDK + MCP |\n| Category | Browser automation (https://www.anchorterminal.com/categories/browser) |\n| Auth | None · No account or key. The library runs on the owner's machine and launches or connects to a local browser. Site logins live in the browser profile or cookies the script sets. `puppeteer.connect()` to a remote browser uses whatever that endpoint requires. |\n| Pricing | Free (Free · OSS) · Free and open source under Apache-2.0, with nothing to buy and no hosted service from Google. `npm i puppeteer` downloads Chrome for Testing and chrome-headless-shell at install time (checked 2026-10-14). |\n| x402 | No · No x402, MPP or L402 in the README, the docs or the source (checked 2026-10-14). |\n| Licence | Apache-2.0 |\n| Packages | npm: `puppeteer`; npm: `puppeteer-core` |\n| Source | https://github.com/puppeteer/puppeteer |\n| Docs | https://pptr.dev |\n| llms.txt | not found |\n| Last release | 2026-10-08 |\n| GitHub stars | 95,689 (as of 2026-10-14) |\n| npm downloads / week | 11,547,242 |\n| Interfaces | Node.js library (`puppeteer` with a bundled browser, `puppeteer-core` without). No CLI or MCP server. `@puppeteer/browsers` is a separate CLI and library for installing browsers |\n| Protocols | Chrome DevTools Protocol for Chrome, WebDriver BiDi for Firefox and optionally Chrome (https://pptr.dev/webdriver-bidi) |\n| Runtimes | Node.js 22.12 or later, ESM only since 25.0.0. Chrome for Testing, chrome-headless-shell and stable Firefox |\n| Agent-relevant APIs | `page.locator()` with automatic waits, `page.accessibility.snapshot()`, request interception, screenshots and PDF, and the experimental `page.webmcp` |\n| Errors | `PuppeteerError` with subclasses `TimeoutError`, `ProtocolError`, `TargetCloseError`, `ConnectionClosedError` and `TouchError` |\n| Telemetry | None found in a search of the library source on 14 October 2026. The docs site pptr.dev loads Google Analytics |\n| Capabilities | browser.control, browser.debug |\n| Tags | official, local, open-source, browser, sdk, typescript, no-auth |\n| JSON | https://www.anchorterminal.com/api/v1/tools/puppeteer.json |\n\n## Score breakdown (methodology v0.4, October 2026 research run)\n\nAssessed 2026-10-14 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: medium. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. \"This run\" is each category's share of the 100 points.\n\n| Category | Weight | This run | Score (0–100) | Points |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% | 20 | 80 | 16.0 |\n| Performance | 10% | pending | pending | n/a |\n| Schema \u0026 documentation | 13% | 16.2 | 81 | 13.2 |\n| Agent ergonomics | 13% | 16.2 | 67 | 10.9 |\n| Security \u0026 auth | 14% | 17.5 | 52 | 9.1 |\n| Payments \u0026 pricing | 10% | 12.5 | 60 | 7.5 |\n| Task success | 10% | pending | pending | n/a |\n| Maintenance \u0026 community | 7% | 8.8 | 89 | 7.8 |\n| Transparency \u0026 trust (editorial 72, provenance 68) | 7% | 8.8 | 70 | 6.1 |\n| Negative events | up to −15 | up to −15 | none recorded | 0 |\n| **Total** | | | | **70.6 → BB** |\n\n### Why each score\n\n- Reliability 80: Scored as local software. Official npm packages `puppeteer` and `puppeteer-core` at 25.13.0, with Node.js 22.12 or later stated in `engines` and a browser support table (20). Public CI runs Chrome and Firefox tests on Linux, macOS and Windows. Of the 20 most recent CI runs on main, 7 to 13 October 2026, 10 concluded in failure, the newest in Windows headful Firefox and Chrome pipe jobs (12 of 25). 272 open issues and pull requests. Confirmed bugs carry P2 or P3 labels, several without a reply, such as `page.goto()` ignoring its timeout after a second navigation (18 of 25). release-please with conventional commits, breaking changes under their own heading and a major version for each set (15). Version 25, stable (15).\n- Performance: Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes.\n- Schema \u0026 documentation 81: Graded as a library. TypeScript types ship with the package and cover every public call (22 of 25). No llms.txt and no Markdown routes on pptr.dev, though the docs and the 643-page API reference are Markdown in the repository (5 of 10). TSDoc on each member with remarks and parameter descriptions. Guides explain when to use locators or `page.$()`, with few statements of when not to use a call (14 of 20). String unions and typed option objects, with `evaluate` taking arbitrary functions (13 of 15). A guide per task with runnable examples and documented error classes (12 of 15). Versioned releases and a changelog for each (15).\n- Agent ergonomics 67: A library adds no tool definitions to context. `page.accessibility.snapshot()` with `interestingOnly` and a `root` element keeps page reads short (18 of 25). Selectors, locators, element screenshots with `clip`, and request filtering through interception (15 of 20). Typed errors separate timeouts from closed targets and protocol failures, with messages naming the selector or timeout (14 of 20). Locators wait for visibility and stability and retry actions. No annotations or idempotency concept apply (10 of 20). `launch()` works with defaults and a bundled browser. JavaScript and TypeScript only (10 of 15).\n- Security \u0026 auth 52: No credential to leak and nothing to scope, so the middle band (20 of 30). Chrome's sandbox stays on unless the script turns it off, and request interception can block hosts. There is no allowlist on by default and no confirmation step (8 of 20). Page content reaches the script unfiltered and the docs give no prompt-injection guidance (0). Protocol traffic can be logged with `DEBUG=puppeteer:*`, and tracing and screenshots give the operator a record (8 of 15). SECURITY.md routes reports through Chromium's process, which has a reward programme, an OpenSSF Scorecards workflow runs daily, and no repository advisories were found (16 of 20).\n- Payments \u0026 pricing 60: Free, self-hosted, nothing to buy, so 20 + 20 + 20 under the self-hosted rule. No payment protocol (0).\n- Task success: Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored.\n- Maintenance \u0026 community 89: 25.13.0 on 8 October 2026 (30). Ten releases since 27 July 2026 (20). Confirmed bugs are labelled and pull requests merge most weeks, but many recent pull requests had no comment and a stale workflow closes unconfirmed bug reports after 21 days (18 of 25). Current official npm packages, no MCP server to register (15). Six runtime dependencies, pinned actions and Scorecards, with CI failing on half of recent runs (6 of 10).\n- Transparency \u0026 trust 70: Apache-2.0, published by Google (30). No data statement for the library. It runs locally, downloads browsers from Google's storage at install, and the docs say where browsers are cached (18 of 30). Each release lists breaking changes, deprecated APIs are marked in the reference, and the support table maps versions to browsers. No written deprecation policy (10 of 20). No telemetry found in the library source, and the docs do not say so either way (14 of 20).\n\nFix list for a coding agent, everything this grade says the listing lacks, the biggest gain first (12 items): https://www.anchorterminal.com/fixes/puppeteer.md (JSON https://www.anchorterminal.com/fixes/puppeteer.json)\n\n### What we couldn't check\n\n- The reasons for each of the 10 failed CI runs were not read beyond the newest, where Windows jobs failed.\n- Response times on older open issues were not sampled beyond the newest 30 items.\n\n### Sources\n\n- repository, README, SECURITY.md and source at commit d8e4e36 (13 October 2026): \u003chttps://github.com/puppeteer/puppeteer\u003e (seen 2026-10-14)\n- puppeteer-core changelog: \u003chttps://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/CHANGELOG.md\u003e (seen 2026-10-14)\n- releases: \u003chttps://api.github.com/repos/puppeteer/puppeteer/releases?per_page=30\u003e (seen 2026-10-14)\n- CI runs on main: \u003chttps://api.github.com/repos/puppeteer/puppeteer/actions/workflows/ci.yml/runs?branch=main\u0026per_page=20\u003e (seen 2026-10-14)\n- newest 30 open issues and pull requests: \u003chttps://api.github.com/repos/puppeteer/puppeteer/issues?state=open\u0026per_page=30\u0026sort=created\u0026direction=desc\u003e (seen 2026-10-14)\n- stars, open issue count, licence: \u003chttps://api.github.com/repos/puppeteer/puppeteer\u003e (seen 2026-10-14)\n- npm latest version and engines: \u003chttps://registry.npmjs.org/puppeteer/latest\u003e (seen 2026-10-14)\n- npm weekly downloads: \u003chttps://api.npmjs.org/downloads/point/last-week/puppeteer\u003e (seen 2026-10-14)\n- supported browsers table: \u003chttps://github.com/puppeteer/puppeteer/blob/main/docs/supported-browsers.md\u003e (seen 2026-10-14)\n- WebMCP guide: \u003chttps://pptr.dev/guides/webmcp\u003e (seen 2026-10-14)\n- OSV advisories for puppeteer, puppeteer-core and @puppeteer/browsers (none): \u003chttps://api.osv.dev/v1/query\u003e (seen 2026-10-14)\n- pptr.dev registration date: \u003chttps://pubapi.registry.google/rdap/domain/pptr.dev\u003e (seen 2026-10-14)\n\n## Who's behind it (provenance 68/100, checked 2026-10-14)\n\n| Check | Finding | Points |\n| --- | --- | --- |\n| Legal entity named | Google LLC | 20/20 |\n| Domain age | pptr.dev, registered 2018-05-23 (8 years) | 11/15 |\n| Endpoint on the vendor's domain | no hosted endpoint | n/a |\n| Terms of service | nothing hosted, so the Apache-2.0 licence stands in | 10/10 |\n| Privacy policy | nothing hosted, not scored | n/a |\n| Status page | not found | 0/10 |\n| Changelog | published | 10/10 |\n| security.txt | not found | 0/10 |\n\npptr.dev is the documentation site for Puppeteer, with a footer reading Copyright 2026 Google, Inc. RDAP gives a registration date of 23 May 2018. The repository is in the puppeteer organisation on GitHub. pptr.dev answers 404 for /.well-known/security.txt.\n\nNo terms or privacy document governs this software beyond the Apache-2.0 licence, so `terms` and `privacy` are left out. The pptr.dev footer links Google's cookie policy for the site itself.\n\n### Terms and privacy, as read\n\nA reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.\n\n**Terms of service**. Nothing is hosted by the vendor, so there are no terms of service to read. The Apache-2.0 licence stands in and the check scores in full.\n\n\n**Privacy policy**. Nothing is hosted by the vendor, so there is no privacy policy to read and the check isn't scored.\n\n\n## Probe metrics\n\nNot measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.\n\n## Strengths\n\n- Ten releases from 25.4.0 on 27 July to 25.13.0 on 8 October 2026, each with a changelog generated by release-please\n- TypeScript types for the whole API and a generated reference of 643 Markdown pages in the repository\n- `page.accessibility.snapshot()` and the Locator API, which waits for elements and retries actions, suit scripted agent use\n- Each release pins a tested Chrome for Testing and Firefox version, listed in a public support table\n- Typed errors such as `TimeoutError`, `TargetCloseError` and `ConnectionClosedError` let a script tell timeouts from a closed browser\n\n## Weaknesses\n\n- No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project\n- 10 of the 20 most recent CI runs on main, 7 to 13 October 2026, concluded in failure, the newest in Windows Chrome and Firefox jobs\n- Page content reaches the agent unfiltered, and the docs have no prompt-injection or untrusted-content guidance\n- JavaScript and TypeScript only, with Node.js 22.12 or later required since 25.0.0\n- A stale workflow marks unconfirmed bug reports after 14 days and closes them 7 days later\n\n## Before you call it (notes for agents)\n\n1. Install with `npm i puppeteer`, which downloads a matching Chrome for Testing. Use `puppeteer-core` to bring your own browser\n2. Prefer `page.locator()` over `page.$()`. Locators wait for the element to be visible and stable before acting\n3. Read pages with `page.accessibility.snapshot({interestingOnly: true})` rather than full HTML to keep output short\n4. Catch `TimeoutError` separately from `TargetCloseError`. The first can be retried, the second needs a new page or browser\n5. Packages are ESM only since 25.0.0. Use `import puppeteer from 'puppeteer'` rather than `require`\n\n## Connect\n\nInstall:\n\n```bash\nnpm i puppeteer\n```\n\nThrough letme (picks today, calling later): https://letme.dev/puppeteer. letme answers with the pick and how to call it direct; calling through letme (one key, the vendor's own price) comes later. How it works: https://www.anchorterminal.com/letme/index.md\n\n## Similar tools\n\nRanked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.\n\n| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |\n| --- | --- | --- | --- | --- | --- | --- |\n| Chrome DevTools MCP | BB | 77 | 25 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/chrome-devtools-mcp.md |\n| Selenium | BB | 73.6 | 90 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/selenium.md |\n| Browserless | BB | 70.4 | 158 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/browserless.md |\n| Steel | BB | 70.4 | 160 | browser.control, browser.debug | yes | https://www.anchorterminal.com/tools/steel.md |\n| REA | B | 69.7 | 180 | browser.debug, browser.control | no | https://www.anchorterminal.com/tools/rea.md |\n| Anchor Browser | B | 67.3 | 269 | browser.control, browser.debug | no | https://www.anchorterminal.com/tools/anchor-browser.md |\n\n## Panel reviews (0)\n\nReviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .\n\nDesk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md\n\n## Notable\n\n- Latest release 25.13.0 on 8 October 2026, pinned to Chrome for Testing 155.0.8059.39 and Firefox 157.0.1 (source: \u003chttps://github.com/puppeteer/puppeteer/blob/main/docs/supported-browsers.md\u003e)\n- 25.0.0 on 12 May 2026 made the packages ESM only, raised the minimum to Node.js 22 and removed deprecated APIs, all listed under Breaking Changes (source: \u003chttps://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/CHANGELOG.md\u003e)\n- An experimental `page.webmcp` API reads and calls tools that pages register through WebMCP, in Chrome 151 or later behind a flag (source: \u003chttps://pptr.dev/guides/webmcp\u003e)\n- The docs home page points agents to chrome-devtools-mcp, a separate Puppeteer-based MCP server, for MCP use (source: \u003chttps://github.com/puppeteer/puppeteer/blob/main/docs/index.md\u003e)\n- SECURITY.md sends reports through Chromium's security process and says file writes and extension loading are intended behaviour, not vulnerabilities (source: \u003chttps://github.com/puppeteer/puppeteer/blob/main/SECURITY.md\u003e)\n- pptr.dev answers 404 for llms.txt, robots.txt and security.txt (checked 2026-10-14)\n\n- #5 of 16 in Best browser automation tools for AI agents: https://www.anchorterminal.com/best/browser/index.md\n- All 120 browser comparisons: https://www.anchorterminal.com/compare/browser/index.md\n\n## Compare\n\n- [agent-browser vs Puppeteer](https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer.md): B 66.6 vs BB 70.6\n- [Airtop vs Puppeteer](https://www.anchorterminal.com/compare/airtop-vs-puppeteer.md): C 55.3 vs BB 70.6\n- [Anchor Browser vs Puppeteer](https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer.md): B 67.3 vs BB 70.6\n- [Browser Use vs Puppeteer](https://www.anchorterminal.com/compare/browser-use-vs-puppeteer.md): BB 77.9 vs BB 70.6\n- [Browserbase vs Puppeteer](https://www.anchorterminal.com/compare/browserbase-vs-puppeteer.md): BB 76.2 vs BB 70.6\n- [Browserless vs Puppeteer](https://www.anchorterminal.com/compare/browserless-vs-puppeteer.md): BB 70.4 vs BB 70.6\n- [Chrome DevTools MCP vs Puppeteer](https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer.md): BB 77 vs BB 70.6\n- [Hyperbrowser vs Puppeteer](https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer.md): B 66.9 vs BB 70.6\n- [Notte vs Puppeteer](https://www.anchorterminal.com/compare/notte-vs-puppeteer.md): B 63.2 vs BB 70.6\n- [Playwright MCP vs Puppeteer](https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.md): B 67.6 vs BB 70.6\n- [Puppeteer vs Puppeteer (archived MCP reference server)](https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived.md): BB 70.6 vs F 30.6\n- [Puppeteer vs Selenium](https://www.anchorterminal.com/compare/puppeteer-vs-selenium.md): BB 70.6 vs BB 73.6\n- [Puppeteer vs Skyvern](https://www.anchorterminal.com/compare/puppeteer-vs-skyvern.md): BB 70.6 vs B 63.1\n- [Puppeteer vs Steel](https://www.anchorterminal.com/compare/puppeteer-vs-steel.md): BB 70.6 vs BB 70.4\n- [Puppeteer vs TinyFish](https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish.md): BB 70.6 vs B 67.7\n\n## Verify this listing\n\nFor the vendor. The badge or a plain link to this page verifies the listing, from a page on pptr.dev or one of its subdomains, or the README of github.com/puppeteer/puppeteer. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{\"slug\": \"puppeteer\", \"url\": \"…\"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify\n\nHTML badge:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/puppeteer\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/puppeteer.svg\" alt=\"Puppeteer on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e\n```\n\nMarkdown badge, for a README:\n\n```markdown\n[![Puppeteer on Anchor Terminal](https://www.anchorterminal.com/badges/puppeteer.svg)](https://www.anchorterminal.com/tools/puppeteer)\n```\n\nPlain link:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/puppeteer\"\u003ePuppeteer on Anchor Terminal\u003c/a\u003e\n```\n\n## Share this listing\n\nFor the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say Puppeteer is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.\n\n- Dark: https://www.anchorterminal.com/assets/share/puppeteer-dark.png\n- Light: https://www.anchorterminal.com/assets/share/puppeteer-light.png\n- Create a video and download its frames: https://www.anchorterminal.com/assets/listing-video/index.html?listing=puppeteer\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Browser automation",
        "url": "https://www.anchorterminal.com/categories/browser"
      },
      {
        "name": "Puppeteer",
        "url": ""
      }
    ],
    "description": "Puppeteer is Google's open-source Node.js library for controlling Chrome and Firefox over the DevTools Protocol and WebDriver BiDi. An agent writes and runs scripts that navigate, click, type, read pages and take screenshots.",
    "facts": [
      "rank #154 of 1076",
      "None auth",
      "0 desk reviews"
    ],
    "h1": "Puppeteer",
    "image": "https://www.anchorterminal.com/assets/og/tools-puppeteer.png",
    "path": "/tools/puppeteer",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Puppeteer review (2026): pricing, alternatives and grade BB",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/tools/puppeteer"
  },
  "tokens": {
    "markdown": 5150,
    "slim": 1230
  },
  "version": 1
}
