Skip to content

How Browser Use’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score23/100

Agent-ready 30.2 × 0.30 = 9.06

API quality 0.0 × 0.20 = 0.00

Openness 34.2 × 0.20 = 6.84

Built-in AI 44.7 × 0.15 = 6.71

Automation 4.5 × 0.15 = 0.67

(9.06 + 0.00 + 6.84 + 6.71 + 0.67) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 23.28 ÷ 1.00 = 23.3

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready30.2/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [probe] https://docs.browser-use.com/llms.txtPROBE llms.txt: HTTP 200 at https://docs.browser-use.com/llms.txt # Browser Use > Documentation for Browser Use Cloud Agent and Browser APIs, and the separate open-source Python library

Run the product headlessly / in CI for automationweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [github] https://github.com/browser-use/browser-useWant to automate the web at scale, from your own code, and with any LLM? Use the Python library
  • [claimed-docs] https://docs.browser-use.comFor a local agent, use the [open-source library](/open-source/quickstart).
  • [claimed-docs] https://docs.browser-use.comLaunch a browser, connect to its CDP URL, then stop it

Plug MCP servers into this product so it can use their toolsweight 3

n/a — not applicable to this product: excluded from numerator and denominator

  • [claimed-docs] https://docs.browser-use.com/cloud/guides/mcp-serverRun browser automation tasks from your AI coding assistant. Connect to Claude, Cursor, Windsurf, or any MCP client.
  • [probe] https://docs.browser-use.com/cloud/guides/mcp-serverofficial MCP server documented at https://docs.browser-use.com/cloud/guides/mcp-server

Connect an agent via an official MCP serverweight 3

3 (weight) × 5 (quality) × 0.3 (disputed) = 4.5 of 30 max

  • [claimed-docs] https://docs.browser-use.com/cloud/guides/mcp-serverRun browser automation tasks from your AI coding assistant. Connect to Claude, Cursor, Windsurf, or any MCP client.
  • [probe] https://docs.browser-use.com/cloud/guides/mcp-serverofficial MCP server documented at https://docs.browser-use.com/cloud/guides/mcp-server
  • [community] https://hn.algolia.com/api/v1/items/43173378I want to use browser-use in Cursor but I am using another option because it doesn't support MCP integration which is the common language they support for external tools.

Use an official CLIweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Drive the product through a documented public APIweight 3

3 (weight) × 7 (quality) × 0.6 (partial) = 12.6 of 30 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll ordered V4 events to monitor a run or build a custom UI.
  • [probe] https://docs.browser-use.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.browser-use.com/openapi.json, https://docs.browser-use.com/swagger.json, https://docs.browser-use.com/api/openapi.json, https://docs.browser-use.com/.well-known/openapi.json)
  • [probe] https://docs.browser-use.com/llms.txtPROBE llms.txt: HTTP 200 at https://docs.browser-use.com/llms.txt # Browser Use > Documentation for Browser Use Cloud Agent and Browser APIs, and the separate open-source Python library

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Build against official SDKsweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.comFor a local agent, use the [open-source library](/open-source/quickstart).
  • [github] https://github.com/browser-use/browser-useWant to automate the web at scale, from your own code, and with any LLM? Use the Python library
  • [probe] https://docs.browser-use.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.browser-use.com/openapi.json, https://docs.browser-use.com/swagger.json, https://docs.browser-use.com/api/openapi.json, https://docs.browser-use.com/.well-known/openapi.json)

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll ordered V4 events to monitor a run or build a custom UI.

Agent-ready = 54.3 ÷ 180 × 100 = 30.2

API quality0.0/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://docs.browser-use.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.browser-use.com/openapi.json, https://docs.browser-use.com/swagger.json, https://docs.browser-use.com/api/openapi.json, https://docs.browser-use.com/.well-known/openapi.json)
  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [probe] https://docs.browser-use.com/llms.txtPROBE llms.txt: HTTP 200 at https://docs.browser-use.com/llms.txt # Browser Use > Documentation for Browser Use Cloud Agent and Browser APIs, and the separate open-source Python library

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://docs.browser-use.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.browser-use.com/openapi.json, https://docs.browser-use.com/swagger.json, https://docs.browser-use.com/api/openapi.json, https://docs.browser-use.com/.well-known/openapi.json)

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/guides/authenticationLog in once, save the profile, then reuse it to start future browsers already logged in.
  • [community] https://hn.algolia.com/api/v1/items/43173378If you run it locally, you can connect it to your real browser and user profile where you are already logged in. This works for me for LinkedIn automation, e.g., to send friend requests or answer messages.

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://docs.browser-use.com/cloud/agent/structured-outputV4 returns `run.result` as a string. Ask for JSON only, then validate it client-side
  • [claimed-docs] https://docs.browser-use.com/cloud/browser/captcha-handlingAutomatic CAPTCHA solving is enabled by default for API V4 Agent runs and standalone Cloud Browser sessions.
  • [probe] https://docs.browser-use.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.browser-use.com/openapi.json, https://docs.browser-use.com/swagger.json, https://docs.browser-use.com/api/openapi.json, https://docs.browser-use.com/.well-known/openapi.json)

API quality = 0.0 ÷ 70 × 100 = 0.0

Openness34.2/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.com/cloud/browser/captcha-handlingIf the challenge remains, open the [live preview](/cloud/browser/live-preview) for human control.
  • [claimed-docs] https://docs.browser-use.com/cloud/guides/2faAsk the first run to stop at the 2FA screen, get its `live_view_url` from the [`browser.ready` event], and have the user enter the code. Then continue with the same session
  • [claimed-docs] https://docs.browser-use.com/cloud/guides/mcp-serverRun browser automation tasks from your AI coding assistant. Connect to Claude, Cursor, Windsurf, or any MCP client.
  • [probe] https://docs.browser-use.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://docs.browser-use.com/openapi.json, https://docs.browser-use.com/swagger.json, https://docs.browser-use.com/api/openapi.json, https://docs.browser-use.com/.well-known/openapi.json)
  • [probe] https://docs.browser-use.com/cloud/guides/mcp-serverofficial MCP server documented at https://docs.browser-use.com/cloud/guides/mcp-server

Export all of my data in open formats and leaveweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Read the product's source under an open licenseweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [github] https://github.com/browser-use/browser-useWant to automate the web at scale, from your own code, and with any LLM? Use the Python library
  • [claimed-docs] https://docs.browser-use.comFor a local agent, use the [open-source library](/open-source/quickstart).
  • [probe] https://docs.browser-use.com/llms.txtPROBE llms.txt: HTTP 200 at https://docs.browser-use.com/llms.txt # Browser Use > Documentation for Browser Use Cloud Agent and Browser APIs, and the separate open-source Python library

Self-host the core productweight 3

3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max

  • [claimed-docs] https://docs.browser-use.comFor a local agent, use the [open-source library](/open-source/quickstart).
  • [github] https://github.com/browser-use/browser-useWant to automate the web at scale, from your own code, and with any LLM? Use the Python library
  • [community] https://hn.algolia.com/api/v1/items/43173378If you run it locally, you can connect it to your real browser and user profile where you are already logged in. This works for me for LinkedIn automation, e.g., to send friend requests or answer messages.
  • [probe] https://docs.browser-use.com/llms.txtPROBE llms.txt: HTTP 200 at https://docs.browser-use.com/llms.txt # Browser Use > Documentation for Browser Use Cloud Agent and Browser APIs, and the separate open-source Python library

Openness = 34.2 ÷ 100 × 100 = 34.2

Built-in AI44.7/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [github] https://github.com/browser-use/browser-useTask: "Extract structured data about my followers and export it as a CSV."
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/structured-outputV4 returns `run.result` as a string. Ask for JSON only, then validate it client-side
  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll ordered V4 events to monitor a run or build a custom UI.

Delegate tasks to a built-in AI assistant inside the productweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Operate the product with natural-language commandsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [github] https://github.com/browser-use/browser-useTask: "Fill in this job application with my resume and information."
  • [github] https://github.com/browser-use/browser-useTask: "Extract structured data about my followers and export it as a CSV."
  • [community] https://hn.algolia.com/api/v1/items/43173378If you run it locally, you can connect it to your real browser and user profile where you are already logged in. This works for me for LinkedIn automation, e.g., to send friend requests or answer messages.

Built-in AI = 26.8 ÷ 60 × 100 = 44.7

Automation4.5/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max

  • [github] https://github.com/browser-use/browser-useWant to automate the web at scale, from your own code, and with any LLM? Use the Python library
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://docs.browser-use.comrun = client.runs.create("Find the top Hacker News story")
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.com/cloud/guides/mcp-serverRun browser automation tasks from your AI coding assistant. Connect to Claude, Cursor, Windsurf, or any MCP client.
  • [github] https://github.com/browser-use/browser-useWant to automate the web at scale, from your own code, and with any LLM? Use the Python library

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

  • [claimed-docs] https://docs.browser-use.com/cloud/agent/sessionsA **session** holds the agent’s conversation and can reuse its live browser. One session ID can contain multiple runs.
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll `runs.events()` with the previous cursor to receive only new events
  • [claimed-docs] https://docs.browser-use.com/cloud/agent/observabilityPoll ordered V4 events to monitor a run or build a custom UI.

Automation = 3.6 ÷ 80 × 100 = 4.5