{
  "data": {
    "a": {
      "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"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "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"
      },
      "area": "developer",
      "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
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/puppeteer.json"
    },
    "answer": "Selenium scores 73.6 (BB) on agent readiness against Puppeteer's 70.6 (BB), and leads in 5 of 7 scored categories. Puppeteer leads on security \u0026 auth.",
    "b": {
      "slug": "selenium",
      "name": "Selenium",
      "vendor": "Selenium project (Software Freedom Conservancy)",
      "vendorUrl": "https://www.selenium.dev",
      "kind": "sdk",
      "category": "browser",
      "summary": "Selenium is the open-source browser automation project behind the W3C WebDriver standard, with official bindings for Java, Python, C#, Ruby and JavaScript and a self-hosted Grid server that runs browsers on other machines.",
      "url": "https://www.anchorterminal.com/tools/selenium",
      "markdownUrl": "https://www.anchorterminal.com/tools/selenium.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/selenium.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/selenium.json",
      "repo": "https://github.com/SeleniumHQ/selenium",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "selenium"
        },
        {
          "registry": "npm",
          "name": "selenium-webdriver"
        },
        {
          "registry": "maven",
          "name": "org.seleniumhq.selenium:selenium-java"
        },
        {
          "registry": "nuget",
          "name": "Selenium.WebDriver"
        },
        {
          "registry": "rubygems",
          "name": "selenium-webdriver"
        }
      ],
      "auth": "none",
      "authNotes": "No account or key for the bindings, which run on the owner's machine. Grid accepts sessions without authentication unless both `--username` and `--password` are set, and Nodes register with a shared `--registration-secret` when one is configured. Site logins live in the browser profile or cookies the script sets.",
      "pricing": "free",
      "pricingNotes": "Free and open source under Apache-2.0, with nothing to buy and no hosted service from the project. Grid is self-hosted. Commercial clouds that run Selenium sessions are separate companies (checked 2026-10-14).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms.txt or the source (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 34542,
        "npmWeekly": 1807038,
        "pypiWeekly": 6884385,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://www.selenium.dev/documentation/",
      "llmsTxt": "https://www.selenium.dev/llms.txt",
      "capabilities": [
        "browser.control",
        "browser.debug"
      ],
      "tags": [
        "official",
        "local",
        "open-source",
        "browser",
        "sdk",
        "python",
        "java",
        "javascript",
        "dotnet",
        "ruby",
        "llms-txt",
        "no-auth",
        "webdriver"
      ],
      "lastRelease": "2026-10-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 90,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 94,
          "payments": 60,
          "reliability": 90,
          "schema": 89,
          "security": 43,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Selenium is stable, Apache-2.0 software on 4.51.0 with bindings in five languages, CI passing on trunk, an llms.txt and an agent guide added in September 2026. It has no MCP server of its own, Selenium Manager sends usage statistics by default, and Grid accepts unauthenticated sessions unless a username and password are set.",
        "bestFor": "Agents that write test or automation scripts in any of five languages, and teams with a Grid.",
        "strengths": [
          "Official bindings for Java, Python, C#, Ruby and JavaScript, released together, 4.51.0 on 9 October 2026",
          "llms.txt and a page on using AI coding agents with Selenium, last changed 28 September 2026",
          "Code samples in the docs are run in CI against current releases",
          "An error page per common exception, such as `StaleElementReferenceException`, gives causes and fixes",
          "The 15 most recent CI runs on trunk, 13 October 2026, all succeeded or were cancelled"
        ],
        "weaknesses": [
          "No MCP server from the project. The docs point to community servers and say they are third-party",
          "Selenium Manager sends anonymised usage statistics to Plausible once a day by default, until `SE_AVOID_STATS=true` is set",
          "Grid has no authentication unless `--username` and `--password` are both set",
          "The project says it does not follow semantic versioning, and removes deprecated APIs in minor releases",
          "No accessibility snapshot call, so agents read page source or query elements one by one"
        ],
        "agentNotes": [
          "Install with `pip install selenium` (Python 3.10 or later) and let Selenium Manager fetch drivers. Do not set driver paths",
          "Use `WebDriverWait` with expected conditions, never fixed sleeps, and do not mix implicit and explicit waits",
          "Set `SE_AVOID_STATS=true` to stop Selenium Manager sending usage statistics",
          "Point coding agents at https://www.selenium.dev/llms.txt. Most Selenium 2 and 3 era examples use removed APIs",
          "Set `--username` and `--password` before exposing a Grid beyond localhost. Check `http://localhost:4444/status` before creating sessions"
        ],
        "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": 73.6
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 94,
          "payments": 60,
          "reliability": 90,
          "schema": 89,
          "security": 43,
          "transparency": 80
        },
        "provenanceScore": 68
      },
      "connect": {
        "install": "pip install selenium",
        "http": "curl http://localhost:4444/status"
      },
      "letme": {
        "capability": "https://letme.dev/browser.control",
        "tool": "https://letme.dev/selenium"
      },
      "area": "developer",
      "provenance": {
        "legalEntity": "Software Freedom Conservancy",
        "domain": "selenium.dev",
        "domainRegistered": "2019-02-22",
        "domainNote": "NOTICE reads Copyright 2011-2026 Software Freedom Conservancy, which holds the project. RDAP gives selenium.dev a registration date of 22 February 2019. selenium.dev answers 404 for /.well-known/security.txt. Security reports go to security@seleniumhq.org.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES",
        "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. selenium.dev has no privacy page (/privacy/ answers 404). Selenium Manager's data collection is described in its documentation page.",
          "Each binding keeps its own changelog. The Python one is linked, and the downloads page links the others.",
          "selenium.dev's robots.txt names all user agents with no Disallow lines, so every page was read."
        ],
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/selenium.json"
    },
    "facts": [
      {
        "a": "SDK + MCP",
        "b": "SDK + MCP",
        "name": "Kind"
      },
      {
        "a": "Google",
        "b": "Selenium project (Software Freedom Conservancy)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-08",
        "b": "2026-10-09",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "96k stars, 11.5M npm/wk",
        "b": "35k stars, 1.8M npm/wk, 6.9M PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Selenium scores 73.6 (BB) on agent readiness against Puppeteer's 70.6 (BB), and leads in 5 of 7 scored categories. Puppeteer leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Puppeteer or Selenium?"
      },
      {
        "answer": "Yes. Puppeteer is open source (Apache-2.0). Selenium is open source (Apache-2.0).",
        "question": "Are Puppeteer and Selenium open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 52 against 43"
        ],
        "also": null,
        "goodFor": "Agents that write and run Node.js scripts against Chrome or Firefox.",
        "slug": "puppeteer",
        "watchFor": "No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project"
      },
      {
        "aheadOn": [
          "Reliability, 90 against 80",
          "Schema \u0026 documentation, 89 against 81",
          "Maintenance \u0026 community, 94 against 89"
        ],
        "also": null,
        "goodFor": "Agents that write test or automation scripts in any of five languages, and teams with a Grid.",
        "slug": "selenium",
        "watchFor": "No MCP server from the project. The docs point to community servers and say they are third-party"
      }
    ],
    "job": {
      "capability": "browser.control",
      "name": "Browser automation"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer.json",
        "title": "agent-browser vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent-browser-vs-selenium.json",
        "title": "agent-browser vs Selenium",
        "url": "https://www.anchorterminal.com/compare/agent-browser-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airtop-vs-puppeteer.json",
        "title": "Airtop vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/airtop-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airtop-vs-selenium.json",
        "title": "Airtop vs Selenium",
        "url": "https://www.anchorterminal.com/compare/airtop-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer.json",
        "title": "Anchor Browser vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anchor-browser-vs-selenium.json",
        "title": "Anchor Browser vs Selenium",
        "url": "https://www.anchorterminal.com/compare/anchor-browser-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browser-use-vs-puppeteer.json",
        "title": "Browser Use vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/browser-use-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browser-use-vs-selenium.json",
        "title": "Browser Use vs Selenium",
        "url": "https://www.anchorterminal.com/compare/browser-use-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserbase-vs-puppeteer.json",
        "title": "Browserbase vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/browserbase-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserbase-vs-selenium.json",
        "title": "Browserbase vs Selenium",
        "url": "https://www.anchorterminal.com/compare/browserbase-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserless-vs-puppeteer.json",
        "title": "Browserless vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/browserless-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserless-vs-selenium.json",
        "title": "Browserless vs Selenium",
        "url": "https://www.anchorterminal.com/compare/browserless-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer.json",
        "title": "Chrome DevTools MCP vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-selenium.json",
        "title": "Chrome DevTools MCP vs Selenium",
        "url": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer.json",
        "title": "Hyperbrowser vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperbrowser-vs-selenium.json",
        "title": "Hyperbrowser vs Selenium",
        "url": "https://www.anchorterminal.com/compare/hyperbrowser-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/notte-vs-puppeteer.json",
        "title": "Notte vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/notte-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/notte-vs-selenium.json",
        "title": "Notte vs Selenium",
        "url": "https://www.anchorterminal.com/compare/notte-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.json",
        "title": "Playwright MCP vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium.json",
        "title": "Playwright MCP vs Selenium",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-reference-server-archived-vs-selenium.json",
        "title": "Puppeteer (archived MCP reference server) vs Selenium",
        "url": "https://www.anchorterminal.com/compare/puppeteer-reference-server-archived-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived.json",
        "title": "Puppeteer vs Puppeteer (archived MCP reference server)",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-skyvern.json",
        "title": "Puppeteer vs Skyvern",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-skyvern"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-steel.json",
        "title": "Puppeteer vs Steel",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-steel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish.json",
        "title": "Puppeteer vs TinyFish",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish"
      },
      {
        "json": "https://www.anchorterminal.com/compare/selenium-vs-skyvern.json",
        "title": "Selenium vs Skyvern",
        "url": "https://www.anchorterminal.com/compare/selenium-vs-skyvern"
      },
      {
        "json": "https://www.anchorterminal.com/compare/selenium-vs-steel.json",
        "title": "Selenium vs Steel",
        "url": "https://www.anchorterminal.com/compare/selenium-vs-steel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/selenium-vs-tinyfish.json",
        "title": "Selenium vs TinyFish",
        "url": "https://www.anchorterminal.com/compare/selenium-vs-tinyfish"
      }
    ],
    "scores": [
      {
        "by": 10,
        "edge": "selenium",
        "key": "reliability",
        "name": "Reliability",
        "puppeteer": 80,
        "selenium": 90,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "edge": "selenium",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "puppeteer": 81,
        "selenium": 89,
        "weight": 13
      },
      {
        "by": 3,
        "edge": "selenium",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "puppeteer": 67,
        "selenium": 70,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "puppeteer",
        "key": "security",
        "name": "Security \u0026 auth",
        "puppeteer": 52,
        "selenium": 43,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "puppeteer": 60,
        "selenium": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "selenium",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "puppeteer": 89,
        "selenium": 94,
        "weight": 7
      },
      {
        "by": 4,
        "edge": "selenium",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "puppeteer": 70,
        "selenium": 74,
        "weight": 7
      }
    ],
    "summary": "Selenium scores 73.6 (BB) on agent readiness against Puppeteer's 70.6 (BB), and leads in 5 of 7 scored categories. Puppeteer leads on security \u0026 auth. Both do browser automation.",
    "verdicts": {
      "puppeteer": "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.",
      "selenium": "Selenium is stable, Apache-2.0 software on 4.51.0 with bindings in five languages, CI passing on trunk, an llms.txt and an agent guide added in September 2026. It has no MCP server of its own, Selenium Manager sends usage statistics by default, and Grid accepts unauthenticated sessions unless a username and password are set."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium",
    "json": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium.md",
    "slim": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium.min.md"
  },
  "markdown": "Selenium scores 73.6 (BB) on agent readiness against Puppeteer's 70.6 (BB), and leads in 5 of 7 scored categories. Puppeteer leads on security \u0026 auth. Both do browser automation.\n\n- Puppeteer: grade BB, 70.6/100, rank #154 of 1076. Markdown https://www.anchorterminal.com/tools/puppeteer.md · JSON https://www.anchorterminal.com/api/v1/tools/puppeteer.json\n- Selenium: grade BB, 73.6/100, rank #90 of 1076. Markdown https://www.anchorterminal.com/tools/selenium.md · JSON https://www.anchorterminal.com/api/v1/tools/selenium.json\n- 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## Which one, for what\n\n### Puppeteer (BB)\n\nGood for: Agents that write and run Node.js scripts against Chrome or Firefox.\n\nAhead on:\n- Security \u0026 auth, 52 against 43\n\nWatch for: No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project\n\n### Selenium (BB)\n\nGood for: Agents that write test or automation scripts in any of five languages, and teams with a Grid.\n\nAhead on:\n- Reliability, 90 against 80\n- Schema \u0026 documentation, 89 against 81\n- Maintenance \u0026 community, 94 against 89\n\nWatch for: No MCP server from the project. The docs point to community servers and say they are third-party\n\n\n## Score by category\n\n| Category | Weight | Puppeteer | Selenium | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 80 | 90 | Selenium +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 81 | 89 | Selenium +8 |\n| Agent ergonomics | 13% (16.2 this run) | 67 | 70 | Selenium +3 |\n| Security \u0026 auth | 14% (17.5 this run) | 52 | 43 | Puppeteer +9 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 89 | 94 | Selenium +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 70 | 74 | Selenium +4 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **70.6 · BB** | **73.6 · BB** | |\n\n## Facts side by side\n\n| Fact | Puppeteer | Selenium |\n| --- | --- | --- |\n| Kind | SDK + MCP | SDK + MCP |\n| Vendor | Google | Selenium project (Software Freedom Conservancy) |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | HTTP |\n| Auth | None | None |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | Apache-2.0 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-08 | 2026-10-09 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | no document linked | no document linked |\n| Customer content may train models |  |  |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 96k stars, 11.5M npm/wk | 35k stars, 1.8M npm/wk, 6.9M PyPI/wk |\n\n## Verdicts\n\n**Puppeteer.** 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.\n\n**Selenium.** Selenium is stable, Apache-2.0 software on 4.51.0 with bindings in five languages, CI passing on trunk, an llms.txt and an agent guide added in September 2026. It has no MCP server of its own, Selenium Manager sends usage statistics by default, and Grid accepts unauthenticated sessions unless a username and password are set.\n\n## Before you call either\n\n### Puppeteer\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### Selenium\n\n1. Install with `pip install selenium` (Python 3.10 or later) and let Selenium Manager fetch drivers. Do not set driver paths\n2. Use `WebDriverWait` with expected conditions, never fixed sleeps, and do not mix implicit and explicit waits\n3. Set `SE_AVOID_STATS=true` to stop Selenium Manager sending usage statistics\n4. Point coding agents at https://www.selenium.dev/llms.txt. Most Selenium 2 and 3 era examples use removed APIs\n5. Set `--username` and `--password` before exposing a Grid beyond localhost. Check `http://localhost:4444/status` before creating sessions\n\n## Questions\n\n### Which is better for AI agents, Puppeteer or Selenium?\n\nSelenium scores 73.6 (BB) on agent readiness against Puppeteer's 70.6 (BB), and leads in 5 of 7 scored categories. Puppeteer leads on security \u0026 auth.\n\n### Are Puppeteer and Selenium open source?\n\nYes. Puppeteer is open source (Apache-2.0). Selenium is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/puppeteer-vs-selenium.json, and with the fewest tokens: https://www.anchorterminal.com/compare/puppeteer-vs-selenium.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"puppeteer\", \"b\": \"selenium\"}`. From a terminal: `anchor compare puppeteer selenium`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/puppeteer.json and https://www.anchorterminal.com/api/v1/tools/selenium.json\n\n## Other comparisons with Puppeteer or Selenium\n\n- [agent-browser vs Puppeteer](https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer.md)\n- [agent-browser vs Selenium](https://www.anchorterminal.com/compare/agent-browser-vs-selenium.md)\n- [Airtop vs Puppeteer](https://www.anchorterminal.com/compare/airtop-vs-puppeteer.md)\n- [Airtop vs Selenium](https://www.anchorterminal.com/compare/airtop-vs-selenium.md)\n- [Anchor Browser vs Puppeteer](https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer.md)\n- [Anchor Browser vs Selenium](https://www.anchorterminal.com/compare/anchor-browser-vs-selenium.md)\n- [Browser Use vs Puppeteer](https://www.anchorterminal.com/compare/browser-use-vs-puppeteer.md)\n- [Browser Use vs Selenium](https://www.anchorterminal.com/compare/browser-use-vs-selenium.md)\n- [Browserbase vs Puppeteer](https://www.anchorterminal.com/compare/browserbase-vs-puppeteer.md)\n- [Browserbase vs Selenium](https://www.anchorterminal.com/compare/browserbase-vs-selenium.md)\n- [Browserless vs Puppeteer](https://www.anchorterminal.com/compare/browserless-vs-puppeteer.md)\n- [Browserless vs Selenium](https://www.anchorterminal.com/compare/browserless-vs-selenium.md)\n- [Chrome DevTools MCP vs Puppeteer](https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer.md)\n- [Chrome DevTools MCP vs Selenium](https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-selenium.md)\n- [Hyperbrowser vs Puppeteer](https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer.md)\n- [Hyperbrowser vs Selenium](https://www.anchorterminal.com/compare/hyperbrowser-vs-selenium.md)\n- [Notte vs Puppeteer](https://www.anchorterminal.com/compare/notte-vs-puppeteer.md)\n- [Notte vs Selenium](https://www.anchorterminal.com/compare/notte-vs-selenium.md)\n- [Playwright MCP vs Puppeteer](https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.md)\n- [Playwright MCP vs Selenium](https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium.md)\n- [Puppeteer (archived MCP reference server) vs Selenium](https://www.anchorterminal.com/compare/puppeteer-reference-server-archived-vs-selenium.md)\n- [Puppeteer vs Puppeteer (archived MCP reference server)](https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived.md)\n- [Puppeteer vs Skyvern](https://www.anchorterminal.com/compare/puppeteer-vs-skyvern.md)\n- [Puppeteer vs Steel](https://www.anchorterminal.com/compare/puppeteer-vs-steel.md)\n- [Puppeteer vs TinyFish](https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish.md)\n- [Selenium vs Skyvern](https://www.anchorterminal.com/compare/selenium-vs-skyvern.md)\n- [Selenium vs Steel](https://www.anchorterminal.com/compare/selenium-vs-steel.md)\n- [Selenium vs TinyFish](https://www.anchorterminal.com/compare/selenium-vs-tinyfish.md)\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": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Puppeteer vs Selenium",
        "url": ""
      }
    ],
    "description": "Selenium scores 73.6 (BB) to Puppeteer's 70.6 (BB) for browser automation. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Puppeteer BB 70.6",
      "Selenium BB 73.6",
      "scores"
    ],
    "h1": "Puppeteer vs Selenium",
    "image": "https://www.anchorterminal.com/assets/og/compare-puppeteer-vs-selenium.png",
    "path": "/compare/puppeteer-vs-selenium",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Puppeteer vs Selenium for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 480
  },
  "version": 1
}
