{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "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"
  },
  "tool": {
    "slug": "browserless",
    "name": "Browserless",
    "vendor": "browserless.io, Inc.",
    "vendorUrl": "https://www.browserless.io",
    "kind": "http-api",
    "category": "browser",
    "summary": "Browserless runs hosted headless browsers that agents drive over CDP, Playwright, REST endpoints, BrowserQL or its official MCP server. The same software can be self-hosted from a Docker image.",
    "url": "https://www.anchorterminal.com/tools/browserless",
    "markdownUrl": "https://www.anchorterminal.com/tools/browserless.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/browserless.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/browserless.json",
    "repo": "https://github.com/browserless/browserless",
    "license": "SSPL 1.0 or a commercial licence for the core server and the MCP server. The BAP TypeScript SDK is MIT. BrowserQL, stealth and other cloud additions are proprietary",
    "transports": [
      "http",
      "streamable-http",
      "stdio"
    ],
    "remoteUrl": "https://production-sfo.browserless.io",
    "packages": [
      {
        "registry": "npm",
        "name": "@browserless.io/mcp"
      },
      {
        "registry": "npm",
        "name": "@browserless.io/bap-ts"
      },
      {
        "registry": "npm",
        "name": "@browserless.io/browserless"
      }
    ],
    "auth": "mixed",
    "authNotes": "Self-serve API token from the account dashboard after signing up in a browser. REST, BrowserQL and WebSocket routes take it as `?token=` in the URL. The hosted MCP server accepts OAuth sign-in with a Browserless account, an `Authorization: Bearer` header, or `?token=` for URL-only clients. An account holds up to 20 named tokens, each shown once and revocable on its own. Cloud tokens have no scopes. The admin, developer and viewer token roles apply to self-hosted Enterprise containers only.",
    "pricing": "freemium",
    "pricingNotes": "Free with 1,000 units a month, 2 concurrent browsers and 2-minute sessions, no card. A unit is up to 30 seconds of browser time. Prototyping is $35 a month ($25 billed annually) with 20,000 units, then $0.0020 a unit. Starter is $200 ($140) with 180,000 units, then $0.0017. Scale is $500 ($350) with 500,000 units, then $0.0015. Enterprise and self-hosting licences are priced by sales. An agent can start on the free plan once a person has signed up (https://www.browserless.io/pricing, checked 2026-10-08).",
    "priceSummary": "$0.002 / credit",
    "where": "both",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the docs (llms-full.txt), the OpenAPI document or the pricing page (checked 2026-10-08). The Stripe Link checkout tools are for an agent paying a merchant, not for paying Browserless.",
      "endpoints": []
    },
    "toolCount": 14,
    "popularity": {
      "githubStars": 13786,
      "npmWeekly": 3484,
      "pypiWeekly": null,
      "asOf": "2026-10-08"
    },
    "docsUrl": "https://docs.browserless.io",
    "llmsTxt": "https://docs.browserless.io/llms.txt",
    "openapi": "https://www.browserless.io/swagger.json",
    "capabilities": [
      "browser.control",
      "browser.hosted",
      "browser.debug",
      "scraping.js-render",
      "scraping.anti-bot",
      "scraping.proxies",
      "web.scrape",
      "web.crawl",
      "web.search",
      "pdf.generate"
    ],
    "tags": [
      "official",
      "hosted",
      "self-hosted",
      "freemium",
      "free-tier",
      "no-card",
      "mcp",
      "oauth",
      "openapi",
      "llms-txt",
      "typescript",
      "source-available",
      "commercial-licence",
      "proxies",
      "status-page",
      "soc2"
    ],
    "lastRelease": "2026-10-05",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 70.4,
      "grade": "BB",
      "agentReady": true,
      "rank": 128,
      "ranked": true,
      "rankOf": 629,
      "categoryRank": 4,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 78,
        "maintenance": 82,
        "payments": 40,
        "reliability": 82,
        "schema": 89,
        "security": 53,
        "transparency": 62
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 82,
          "points": 16.4,
          "reason": "Graded as a hosted service, on the cloud API and its hosted MCP server. status.browserless.io runs on Better Stack with eight monitored components and 90 days of daily history (20). The page lists no incident reports for August to October 2026. Its monitors record 129 minutes of downtime on Unit and Usage Services on 11 September 2026, 45 minutes on the Account API on 5 September, and 3 minutes on US East, with US West, London and Amsterdam at 100 per cent, so minor only (20). Concurrency and session-length limits are published per plan, 2 to 100 browsers and 2 to 60 minutes, and the docs say there is no hourly or daily unit limit (15). 429 is documented as a full concurrency slot or queue, with a retry and exponential backoff guide and advice to retry only operations that are safe to run twice. No Retry-After header or idempotency key was found in the reviewed documentation (12). One docs page claims a 99.9% uptime SLA and the site lists SLAs under Enterprise, but no SLA terms are published (5). The REST, WebSocket and MCP surfaces are generally available, with the MCP server at 1.36.0 (10)."
        },
        {
          "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": 89,
          "points": 14.46,
          "reason": "OpenAPI 3.0.0 at www.browserless.io/swagger.json with 87 paths and 100 operations, and Zod-typed inputs on every MCP tool in the source (25). llms.txt, llms-full.txt, a Markdown twin of every docs page, an API catalogue and an MCP server card under /.well-known (10). MCP descriptions state purpose and point to the right neighbour, for example `browserless_smartscraper` sends multi-page work to `browserless_crawl`. The agent tool's description is a long operating prompt (16). Inputs use enums and limits, but `browserless_function` takes free-form Puppeteer code and `browserless_agent` advertises a slimmed schema that the server re-validates at run time (12). Every OpenAPI operation lists 400, 401, 403, 404, 408, 429, 500 and 503, the docs carry an error table with fixes, and examples come in cURL, JavaScript and Python (13). A monthly product changelog and semver changelogs for the core (2.57.0) and MCP (1.36.0) repositories. REST paths carry no version (13)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 78,
          "points": 12.68,
          "reason": "The full MCP server documents 14 tools (15), and a separate connector endpoint exposes five. The `browserless_agent` description is long, so we added back 5 of a possible 10 (20). `browserless_logs` pages by cursor, search, crawl and profiles take `limit`, crawl output is truncated per page, and Smart Scrape returns only the formats asked for (17). Errors come with a documented table of causes and fixes, a `requestId` that can be looked up in request logs, and `x-response-code` headers for the target site's status (16). Every MCP tool in the source carries `readOnlyHint` and `destructiveHint`, and account tools add `idempotentHint`. No idempotency keys, and the docs warn that a retried mutation can repeat a click or form submission (15). Few required parameters and existing Puppeteer or Playwright scripts connect by changing the endpoint, but the only published SDK is TypeScript. The docs say the Python SDK is not on PyPI yet (10)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 53,
          "points": 9.28,
          "reason": "An account holds up to 20 named API tokens, each shown once and revocable on its own, with a rotation guide. The hosted MCP server also accepts OAuth sign-in with PKCE. Cloud tokens have no scopes, and token roles apply only to self-hosted Enterprise containers (22). The docs give `?token=` in the URL as the standard way to authenticate REST and WebSocket calls and as an option for MCP, a secret in a query string (minus 10). The connector endpoint limits an assistant to five tools, account tools are read-only, the agent prompt tells the model to confirm controls marked destructive, and the draft Stripe Link checkout needs the buyer's approval for each purchase up to $50. No read-only token (10). Pages are untrusted content. Saved logins and card details are kept out of the model's context, but no prompt-injection guidance was found in the docs or the MCP agent prompt (3). Request logs record every request with endpoint, region, duration, error and cost, filterable by API key, and sessions can be replayed (13). SOC 2 Type II, third-party penetration tests and a disclosure policy with a 72-hour acknowledgement target on the trust centre. No security.txt and no bug bounty found (15)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 40,
          "points": 5,
          "reason": "No x402, MPP or L402 on any endpoint. The Stripe Link checkout tools let an agent pay a merchant and are not a way to pay Browserless (0). Plan prices, included units and per-unit overage rates of $0.0015 to $0.0020 are published without login, with the unit defined as up to 30 seconds of browser time (20). Free plan with 1,000 units a month, and the pricing page says no card is required (20). A person has to sign up in a browser to get a token or complete OAuth (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": 82,
          "points": 7.18,
          "reason": "@browserless.io/mcp 1.36.0 was published on 5 October 2026 and the core server 2.57.0 on 30 September (30). npm lists 32 stable MCP releases and 14 core releases since 10 July 2026, and the product changelog has an entry for each month from March to October 2026 (20). Both repositories show commits on 6 and 7 October 2026 and use release automation. GitHub's API refused our requests, so issue reply times went unread, and we scored the public changelogs and the support email only (12). The MCP server and the BAP TypeScript SDK (2.0.0) are current on npm, the Python SDK is unpublished, and the official MCP registry holds only a third-party entry for Browserless, so we scored the SDK line for an API (12). Test, lint, CodeQL and dependency-update workflows are in the repositories. We did not read their run results (8)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 62,
          "points": 5.43,
          "note": "editorial 47, provenance 77",
          "reason": "The core server and MCP server are source-available under SSPL 1.0, which is not an OSI licence, or a commercial licence, and the cloud additions are closed under published terms (18). The privacy policy says Browserless does not store page content and keeps only an email address, and names Stripe, SendGrid, DigitalOcean and Fathom. The trust centre, updated 11 September 2026, says request logs, session replays, saved profiles and crawl results are stored in the United States on AWS, DigitalOcean and Supabase, and the pricing page gives replay storage of 1 to 90 days. The two do not agree, the policy is undated, and a DPA is on Enterprise plans only (12). No deprecation policy. The terms allow the service to be changed or discontinued without notice, though the docs flag the v1 API and the chrome.browserless.io endpoint as deprecated (5). Execution regions and storage locations are stated in detail. The subprocessor list is on request by email (12)."
        }
      ],
      "assessment": {
        "date": "2026-10-08",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "The full MCP server documents 14 tools (15), and a separate connector endpoint exposes five. The `browserless_agent` description is long, so we added back 5 of a possible 10 (20). `browserless_logs` pages by cursor, search, crawl and profiles take `limit`, crawl output is truncated per page, and Smart Scrape returns only the formats asked for (17). Errors come with a documented table of causes and fixes, a `requestId` that can be looked up in request logs, and `x-response-code` headers for the target site's status (16). Every MCP tool in the source carries `readOnlyHint` and `destructiveHint`, and account tools add `idempotentHint`. No idempotency keys, and the docs warn that a retried mutation can repeat a click or form submission (15). Few required parameters and existing Puppeteer or Playwright scripts connect by changing the endpoint, but the only published SDK is TypeScript. The docs say the Python SDK is not on PyPI yet (10).",
          "maintenance": "@browserless.io/mcp 1.36.0 was published on 5 October 2026 and the core server 2.57.0 on 30 September (30). npm lists 32 stable MCP releases and 14 core releases since 10 July 2026, and the product changelog has an entry for each month from March to October 2026 (20). Both repositories show commits on 6 and 7 October 2026 and use release automation. GitHub's API refused our requests, so issue reply times went unread, and we scored the public changelogs and the support email only (12). The MCP server and the BAP TypeScript SDK (2.0.0) are current on npm, the Python SDK is unpublished, and the official MCP registry holds only a third-party entry for Browserless, so we scored the SDK line for an API (12). Test, lint, CodeQL and dependency-update workflows are in the repositories. We did not read their run results (8).",
          "payments": "No x402, MPP or L402 on any endpoint. The Stripe Link checkout tools let an agent pay a merchant and are not a way to pay Browserless (0). Plan prices, included units and per-unit overage rates of $0.0015 to $0.0020 are published without login, with the unit defined as up to 30 seconds of browser time (20). Free plan with 1,000 units a month, and the pricing page says no card is required (20). A person has to sign up in a browser to get a token or complete OAuth (0).",
          "reliability": "Graded as a hosted service, on the cloud API and its hosted MCP server. status.browserless.io runs on Better Stack with eight monitored components and 90 days of daily history (20). The page lists no incident reports for August to October 2026. Its monitors record 129 minutes of downtime on Unit and Usage Services on 11 September 2026, 45 minutes on the Account API on 5 September, and 3 minutes on US East, with US West, London and Amsterdam at 100 per cent, so minor only (20). Concurrency and session-length limits are published per plan, 2 to 100 browsers and 2 to 60 minutes, and the docs say there is no hourly or daily unit limit (15). 429 is documented as a full concurrency slot or queue, with a retry and exponential backoff guide and advice to retry only operations that are safe to run twice. No Retry-After header or idempotency key was found in the reviewed documentation (12). One docs page claims a 99.9% uptime SLA and the site lists SLAs under Enterprise, but no SLA terms are published (5). The REST, WebSocket and MCP surfaces are generally available, with the MCP server at 1.36.0 (10).",
          "schema": "OpenAPI 3.0.0 at www.browserless.io/swagger.json with 87 paths and 100 operations, and Zod-typed inputs on every MCP tool in the source (25). llms.txt, llms-full.txt, a Markdown twin of every docs page, an API catalogue and an MCP server card under /.well-known (10). MCP descriptions state purpose and point to the right neighbour, for example `browserless_smartscraper` sends multi-page work to `browserless_crawl`. The agent tool's description is a long operating prompt (16). Inputs use enums and limits, but `browserless_function` takes free-form Puppeteer code and `browserless_agent` advertises a slimmed schema that the server re-validates at run time (12). Every OpenAPI operation lists 400, 401, 403, 404, 408, 429, 500 and 503, the docs carry an error table with fixes, and examples come in cURL, JavaScript and Python (13). A monthly product changelog and semver changelogs for the core (2.57.0) and MCP (1.36.0) repositories. REST paths carry no version (13).",
          "security": "An account holds up to 20 named API tokens, each shown once and revocable on its own, with a rotation guide. The hosted MCP server also accepts OAuth sign-in with PKCE. Cloud tokens have no scopes, and token roles apply only to self-hosted Enterprise containers (22). The docs give `?token=` in the URL as the standard way to authenticate REST and WebSocket calls and as an option for MCP, a secret in a query string (minus 10). The connector endpoint limits an assistant to five tools, account tools are read-only, the agent prompt tells the model to confirm controls marked destructive, and the draft Stripe Link checkout needs the buyer's approval for each purchase up to $50. No read-only token (10). Pages are untrusted content. Saved logins and card details are kept out of the model's context, but no prompt-injection guidance was found in the docs or the MCP agent prompt (3). Request logs record every request with endpoint, region, duration, error and cost, filterable by API key, and sessions can be replayed (13). SOC 2 Type II, third-party penetration tests and a disclosure policy with a 72-hour acknowledgement target on the trust centre. No security.txt and no bug bounty found (15).",
          "transparency": "The core server and MCP server are source-available under SSPL 1.0, which is not an OSI licence, or a commercial licence, and the cloud additions are closed under published terms (18). The privacy policy says Browserless does not store page content and keeps only an email address, and names Stripe, SendGrid, DigitalOcean and Fathom. The trust centre, updated 11 September 2026, says request logs, session replays, saved profiles and crawl results are stored in the United States on AWS, DigitalOcean and Supabase, and the pricing page gives replay storage of 1 to 90 days. The two do not agree, the policy is undated, and a DPA is on Enterprise plans only (12). No deprecation policy. The terms allow the service to be changed or discontinued without notice, though the docs flag the v1 API and the chrome.browserless.io endpoint as deprecated (5). Execution regions and storage locations are stated in detail. The subprocessor list is on request by email (12)."
        },
        "sources": [
          {
            "what": "docs index for agents",
            "url": "https://docs.browserless.io/llms.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "full docs in one file",
            "url": "https://docs.browserless.io/llms-full.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "pricing",
            "url": "https://www.browserless.io/pricing",
            "seen": "2026-10-08"
          },
          {
            "what": "unit consumption",
            "url": "https://docs.browserless.io/overview/unit-consumption",
            "seen": "2026-10-08"
          },
          {
            "what": "API token management",
            "url": "https://docs.browserless.io/overview/api-keys",
            "seen": "2026-10-08"
          },
          {
            "what": "MCP server setup and tools",
            "url": "https://docs.browserless.io/mcp/browserless-mcp-server/setup",
            "seen": "2026-10-08"
          },
          {
            "what": "MCP connector endpoint",
            "url": "https://docs.browserless.io/mcp/browserless-mcp-server/connector",
            "seen": "2026-10-08"
          },
          {
            "what": "agentic checkout",
            "url": "https://docs.browserless.io/mcp/agentic-checkout",
            "seen": "2026-10-08"
          },
          {
            "what": "retry and backoff guide",
            "url": "https://docs.browserless.io/examples/retry-backoff",
            "seen": "2026-10-08"
          },
          {
            "what": "token roles, self-hosted",
            "url": "https://docs.browserless.io/enterprise/token-roles",
            "seen": "2026-10-08"
          },
          {
            "what": "OpenAPI document",
            "url": "https://www.browserless.io/swagger.json",
            "seen": "2026-10-08"
          },
          {
            "what": "MCP server card",
            "url": "https://www.browserless.io/.well-known/mcp/server-card.json",
            "seen": "2026-10-08"
          },
          {
            "what": "OAuth protected resource metadata",
            "url": "https://www.browserless.io/.well-known/oauth-protected-resource",
            "seen": "2026-10-08"
          },
          {
            "what": "status page",
            "url": "https://status.browserless.io",
            "seen": "2026-10-08"
          },
          {
            "what": "status history feed",
            "url": "https://status.browserless.io/index.json",
            "seen": "2026-10-08"
          },
          {
            "what": "incident history",
            "url": "https://status.browserless.io/incidents",
            "seen": "2026-10-08"
          },
          {
            "what": "trust centre",
            "url": "https://www.browserless.io/trust",
            "seen": "2026-10-08"
          },
          {
            "what": "terms of service",
            "url": "https://www.browserless.io/terms-of-service.md",
            "seen": "2026-10-08"
          },
          {
            "what": "privacy policy",
            "url": "https://www.browserless.io/privacy-policy.md",
            "seen": "2026-10-08"
          },
          {
            "what": "product changelog",
            "url": "https://www.browserless.io/changelog",
            "seen": "2026-10-08"
          },
          {
            "what": "MCP server source, tool definitions and changelog",
            "url": "https://github.com/browserless/browserless-mcp",
            "seen": "2026-10-08"
          },
          {
            "what": "core server source and changelog",
            "url": "https://github.com/browserless/browserless",
            "seen": "2026-10-08"
          },
          {
            "what": "npm, MCP server",
            "url": "https://registry.npmjs.org/@browserless.io%2fmcp",
            "seen": "2026-10-08"
          },
          {
            "what": "npm, core server",
            "url": "https://registry.npmjs.org/@browserless.io%2fbrowserless",
            "seen": "2026-10-08"
          },
          {
            "what": "npm weekly downloads",
            "url": "https://api.npmjs.org/downloads/point/last-week/@browserless.io/mcp",
            "seen": "2026-10-08"
          },
          {
            "what": "MCP registry search",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=browserless",
            "seen": "2026-10-08"
          },
          {
            "what": "security.txt, 404",
            "url": "https://www.browserless.io/.well-known/security.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "RDAP record",
            "url": "https://rdap.identitydigital.services/rdap/domain/browserless.io",
            "seen": "2026-10-08"
          }
        ],
        "openQuestions": [
          "unchecked: GitHub issue counts and reply times. GitHub's API refused our requests for the rate limit, and the issues page did not give a count to our reader",
          "unchecked: published security advisories for browserless/browserless. The advisories page did not render its list for our reader",
          "unchecked: whether CI passes on the default branches. We read the workflow files, not their results",
          "unchecked: the subprocessor list, which the trust centre says is available on request by email",
          "No SLA terms were found. One docs page claims a 99.9% uptime SLA and the site lists SLAs under Enterprise",
          "No Retry-After header, request-rate limit or idempotency key was found in the reviewed documentation",
          "The status page lists no incident reports, though its monitors recorded downtime on 5 and 11 September 2026. We did not establish what those outages affected for customers",
          "The source registers two Stripe Link tools beyond the 14 documented. The docs say they are a draft preview not yet enabled on the hosted fleet, so toolCount is 14"
        ]
      },
      "negative": 0,
      "verdict": "An OpenAPI document, llms.txt and a 14-tool MCP server with annotations on every tool make the service easy for an agent to read, and the free plan needs no card. The API token travels in the URL query string by default, cloud tokens carry no scopes, and no machine payment route exists.",
      "bestFor": "Agents that need a real browser in the cloud with stealth, proxies and CAPTCHA solving, and teams that want the option of running the same server themselves.",
      "strengths": [
        "OpenAPI 3.0.0 document with 87 paths, llms.txt, llms-full.txt and Markdown twins of the docs",
        "Hosted MCP server at mcp.browserless.io with 14 documented tools, each carrying read-only and destructive annotations",
        "Free plan with 1,000 units a month and no card, with per-unit overage prices published for paid plans",
        "Up to 20 named API tokens per account, each revocable on its own, plus request logs filterable by key",
        "MCP server released 32 times between 10 July and 5 October 2026, with a dated changelog in the repository"
      ],
      "weaknesses": [
        "REST and WebSocket routes take the API token as `?token=` in the URL, which the docs give as the standard method",
        "Cloud tokens have no scopes or roles. Token roles exist only on self-hosted Enterprise containers",
        "No x402, MPP or L402, and an account needs a person to sign up in a browser",
        "No prompt-injection guidance found in the docs or in the MCP agent prompt",
        "The terms allow the service to be changed or discontinued without notice, and the subprocessor list is on request only"
      ],
      "agentNotes": [
        "Send the token as `Authorization: Bearer` to the MCP server. On REST and WebSocket routes it goes in `?token=`, so keep those URLs out of logs",
        "Close sessions as soon as the work is done. Browser time bills one unit per 30 seconds, rounded up, idle or not",
        "For multi-step work with `browserless_agent`, set `keepSessionAlive: true` on the first call and pass the returned `sessionId` after that. Sessions are one-shot by default since server 1.33.0",
        "On 429, back off and retry. It means the plan's concurrency limit or queue is full, usually from sessions left open",
        "Match the path to the protocol. Use `/chromium` for CDP clients and `/chromium/playwright` only for `playwright.connect()`"
      ],
      "metrics": {
        "kind": "remote",
        "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.4
        }
      ],
      "editorialScores": {
        "ergonomics": 78,
        "maintenance": 82,
        "payments": 40,
        "reliability": 82,
        "schema": 89,
        "security": 53,
        "transparency": 47
      },
      "provenanceScore": 77
    },
    "connect": {
      "install": "npx -y @browserless.io/mcp",
      "http": "curl -X POST \"https://production-sfo.browserless.io/screenshot?token=YOUR_API_TOKEN_HERE\" -H \"Content-Type: application/json\" -d '{\"url\": \"https://scraping-sandbox.netlify.app/dashboard\"}' -o response.png",
      "claudeCode": "claude mcp add --transport http browserless https://mcp.browserless.io/mcp --header \"Authorization: Bearer YOUR_API_TOKEN_HERE\"",
      "config": {
        "mcpServers": {
          "browserless": {
            "headers": {
              "Authorization": "Bearer YOUR_API_TOKEN_HERE"
            },
            "type": "http",
            "url": "https://mcp.browserless.io/mcp"
          }
        }
      }
    },
    "letme": {
      "capability": "https://letme.dev/browser.control",
      "tool": "https://letme.dev/browserless"
    },
    "notable": [
      "Official MCP server, hosted at https://mcp.browserless.io/mcp over Streamable HTTP and published as @browserless.io/mcp for stdio, with OAuth sign-in or a Bearer token (https://docs.browserless.io/mcp/browserless-mcp-server/setup)",
      "A second MCP endpoint, https://mcp.browserless.io/mcp/connector, exposes five tools for assistant directories (https://docs.browserless.io/mcp/browserless-mcp-server/connector)",
      "A unit is up to 30 seconds of browser time. Residential proxy traffic costs 6 units a MB, datacentre proxy 2 units a MB and a solved CAPTCHA 10 units (https://docs.browserless.io/overview/unit-consumption)",
      "The core server and the MCP server are published on GitHub under SSPL 1.0 or a commercial licence. BrowserQL, stealth and CAPTCHA solving are in the cloud and Enterprise builds only (https://docs.browserless.io/enterprise/open-source)",
      "Agentic Checkout with Stripe Link is a draft preview that the docs say is not yet enabled on the hosted fleet. Purchases are capped at $50 and each needs the buyer's approval (https://docs.browserless.io/mcp/agentic-checkout)",
      "The trust centre, last updated 11 September 2026, says stored data such as request logs, session replays and saved profiles stays in the United States whichever regional endpoint is used (https://www.browserless.io/trust)",
      "Discovery files are published at /.well-known/api-catalog, /.well-known/mcp/server-card.json and /.well-known/agent-skills/index.json (https://www.browserless.io/robots.txt)"
    ],
    "area": "developer",
    "details": [
      {
        "label": "Surfaces",
        "value": "REST endpoints (/screenshot, /pdf, /content, /scrape, /smart-scrape, /search, /map, /crawl, /agent/run), BrowserQL over GraphQL, CDP and Playwright WebSockets, and the MCP server. Graded here as the hosted cloud API with its hosted MCP server"
      },
      {
        "label": "MCP server",
        "value": "Official, hosted at https://mcp.browserless.io/mcp (Streamable HTTP only) and on npm as @browserless.io/mcp 1.36.0 for stdio, Node.js 24 or newer. 14 documented tools, one stateful browser agent, eight stateless tools and five read-only account tools"
      },
      {
        "label": "Free tier",
        "value": "1,000 units a month, 2 concurrent browsers, 2-minute sessions, 1 day of replay storage, no card"
      },
      {
        "label": "Limits",
        "value": "Concurrent browsers 2 on Free, 5 on Prototyping, 30 on Starter and 80 on Scale when billed monthly (10, 40 and 100 billed annually). Session length 2, 15, 30 and 60 minutes. No hourly or daily unit limit. 429 when concurrency and the queue are full"
      },
      {
        "label": "Regions",
        "value": "San Francisco (production-sfo), London (production-lon) and Amsterdam (production-ams). Stored data stays in the United States on the shared fleet"
      },
      {
        "label": "Billing rules",
        "value": "Requests rejected before a browser starts, such as a 429, cost nothing. A run that fails midway is charged for the browser time and proxy traffic used. An overage spend cap can be set in account settings"
      },
      {
        "label": "Self-hosting",
        "value": "Docker images at ghcr.io/browserless for Chromium, Chrome, Firefox, WebKit and Edge under SSPL 1.0 or a commercial licence. Enterprise images add BrowserQL, stealth and session recording"
      },
      {
        "label": "Machine payment",
        "value": "None. No x402, MPP or L402 found"
      }
    ],
    "unitPrices": [
      {
        "item": "Unit overage, Prototyping plan",
        "unit": "credit",
        "usd": 0.002,
        "note": "One unit is up to 30 seconds of browser time"
      },
      {
        "item": "Unit overage, Starter plan",
        "unit": "credit",
        "usd": 0.0017
      },
      {
        "item": "Unit overage, Scale plan",
        "unit": "credit",
        "usd": 0.0015
      },
      {
        "item": "Browser time at the overage rate, Prototyping plan",
        "unit": "browser-hour",
        "usd": 0.24,
        "note": "Our arithmetic, 120 units at $0.0020"
      },
      {
        "item": "Browser time at the overage rate, Starter plan",
        "unit": "browser-hour",
        "usd": 0.204,
        "note": "Our arithmetic, 120 units at $0.0017"
      },
      {
        "item": "Browser time at the overage rate, Scale plan",
        "unit": "browser-hour",
        "usd": 0.18,
        "note": "Our arithmetic, 120 units at $0.0015"
      },
      {
        "item": "Prototyping plan",
        "unit": "month",
        "usd": 35,
        "note": "20,000 units, $25 a month billed annually"
      },
      {
        "item": "Starter plan",
        "unit": "month",
        "usd": 200,
        "note": "180,000 units, $140 a month billed annually"
      },
      {
        "item": "Scale plan",
        "unit": "month",
        "usd": 500,
        "note": "500,000 units, $350 a month billed annually"
      }
    ],
    "provenance": {
      "legalEntity": "browserless.io, Inc.",
      "domain": "browserless.io",
      "domainRegistered": "2017-09-06",
      "endpointOnVendorDomain": true,
      "terms": "https://www.browserless.io/terms-of-service",
      "privacy": "https://www.browserless.io/privacy-policy",
      "statusPage": "https://status.browserless.io",
      "changelog": "https://www.browserless.io/changelog",
      "securityTxt": "none",
      "checked": "2026-10-08",
      "notes": [
        "The terms of service name browserless.io, Inc., 23207 NE 192nd Ct, Battle Ground, WA 98604, United States. Neither the terms nor the privacy policy carries a date.",
        "www.browserless.io/.well-known/security.txt and docs.browserless.io/.well-known/security.txt both return 404. The trust centre sends vulnerability reports to security@browserless.io.",
        "RDAP for browserless.io gives a registration date of 2017-09-06.",
        "The API answers at production-sfo, production-lon and production-ams.browserless.io and the MCP server at mcp.browserless.io. The OAuth metadata at data.browserless.io names a supabase.co issuer."
      ],
      "score": 77,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "browserless.io, Inc.",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "browserless.io, registered 2017-09-06 (9 years)",
          "points": 11,
          "max": 15,
          "state": "part"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "production-sfo.browserless.io",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 5 of the 7 things a reader expects, and has 2 clauses that cost points",
          "points": 4.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 3 of the 8 things a reader expects",
          "points": 6.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "status.browserless.io",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://www.browserless.io/terms-of-service",
          "state": "read",
          "readAt": "2026-10-08",
          "words": 3079,
          "points": 4.3,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": false
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "These Terms of Service and any separate agreements whereby we provide you Services shall be governed by and construed in accordance with the laws of 23207 NE 192ND CT Battle Ground, WA, 98604, United States."
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "Because some states or jurisdictions do not allow the exclusion or the limitation of liability for consequential or incidental damages, in such states or jurisdictions, our liability shall be limited to the maximum extent permitted by law.",
              "says": "Rules out indirect and consequential losses, with no cap named in this sentence"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "You may terminate these Terms of Service at any time by notifying us that you no longer wish to use our Services, or when you cease using our site."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "We reserve the right to update, change or replace any part of these Terms of Service by posting updates and/or changes to our website.",
              "says": "Changes are posted, with no other notice named"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "If you do not agree to all the terms and conditions of this agreement, then you may not access the website or use any services."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.automated",
              "label": "Restricts automated access",
              "found": true,
              "quote": "(i) to spam, phish, pharm, pretext, spider, crawl, or scrape;",
              "costsPoints": true
            },
            {
              "key": "terms.nonotice",
              "label": "Says the terms or the service can change without notice",
              "found": true,
              "quote": "We reserve the right at any time to modify or discontinue the Service (or any part or content thereof) without notice at any time.",
              "costsPoints": true
            },
            {
              "key": "terms.cutoff",
              "label": "Says access can be ended without notice or for any reason",
              "found": true,
              "quote": "You agree that from time to time we may remove the service for indefinite periods of time or cancel the service at any time, without notice to you."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Customer content other than credit card information may be transferred unencrypted across networks.",
              "quote": "You understand that your content (not including credit card information), may be transferred unencrypted and involve (a) transmissions over various networks; and (b) changes to conform and adapt to technical requirements of connecting networks or devices."
            },
            {
              "date": "2026-10-08",
              "text": "Prices can change without notice, and Browserless accepts no liability for a price change.",
              "quote": "Prices for our products are subject to change without notice."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://www.browserless.io/privacy-policy",
          "state": "read",
          "readAt": "2026-10-08",
          "words": 1335,
          "points": 6.3,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": false
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "When you purchase a subscription to browserless, as part of the buying and selling process, we collect the personal information you give us such as your email address."
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": false
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "In general, the third-party providers used by us will only collect, use and disclose your information to the extent necessary to allow them to perform the services they provide to us."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "When you purchase a subscription to browserless, as part of the buying and selling process, we collect the personal information you give us such as your email address."
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": false
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": false
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": false
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "The policy says Browserless does not monitor, store, retain or resell the content of pages visited in sessions, and keeps session metrics only for a short time.",
              "quote": "Browserless does not monitor, store, retain, or resell the content of the pages you visit or the detailed nature of your sessions."
            },
            {
              "date": "2026-10-08",
              "text": "The stored email address is destroyed automatically once the account is cancelled and the billing period has expired.",
              "quote": "When you cancel your account, and the billing period expires, we automatically destroy this information so it isn't kept around."
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/browserless.json",
    "live": {
      "slug": "browserless",
      "probe": {
        "target": "https://production-sfo.browserless.io",
        "method": "get",
        "lastAt": "2026-10-08T17:36:32.486742038Z",
        "lastOk": true,
        "lastStatus": 401,
        "lastMs": 448,
        "lastNote": "asks for credentials",
        "authRequired": true,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 444,
        "p95ms24h": 507,
        "samples24h": 25,
        "samples30d": 25,
        "days": [
          {
            "date": "2026-10-08",
            "probes": 25,
            "ok": 25
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.browserless.io",
        "indicator": "unknown",
        "summary": "no machine-readable status found",
        "checkedAt": "2026-10-08T15:36:32.347155709Z"
      },
      "versions": [
        {
          "registry": "github",
          "name": "browserless/browserless",
          "version": "v2.57.0",
          "released": "2026-09-30",
          "seenAt": "2026-10-08T16:04:11.420407881Z"
        },
        {
          "registry": "npm",
          "name": "@browserless.io/bap-ts",
          "version": "2.0.0",
          "seenAt": "2026-10-08T16:04:09.167089658Z"
        },
        {
          "registry": "npm",
          "name": "@browserless.io/browserless",
          "version": "2.57.0",
          "seenAt": "2026-10-08T16:04:09.383268902Z"
        },
        {
          "registry": "npm",
          "name": "@browserless.io/mcp",
          "version": "1.36.0",
          "seenAt": "2026-10-08T16:04:05.40282872Z"
        }
      ],
      "githubStars": 13789,
      "npmWeekly": 3484,
      "securityTxt": {
        "url": "https://browserless.io/.well-known/security.txt",
        "state": "none",
        "checkedAt": "2026-10-08T15:38:39.246027784Z"
      },
      "updatedAt": "2026-10-08T17:36:32.486742038Z"
    }
  }
}
