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.txt“PROBE 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.com“run = client.runs.create("Find the top Hacker News story")”
- [github] https://github.com/browser-use/browser-use“Want 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“For a local agent, use the [open-source library](/open-source/quickstart).”
- [claimed-docs] https://docs.browser-use.com“Launch 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-server“Run 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-server“official 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-server“Run 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-server“official MCP server documented at https://docs.browser-use.com/cloud/guides/mcp-server”
- [community] https://hn.algolia.com/api/v1/items/43173378“I 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.com“run = client.runs.create("Find the top Hacker News story")”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/sessions“A **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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/observability“Poll ordered V4 events to monitor a run or build a custom UI.”
- [probe] https://docs.browser-use.com/openapi.json“PROBE 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.txt“PROBE 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.com“run = client.runs.create("Find the top Hacker News story")”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/sessions“A **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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com“For a local agent, use the [open-source library](/open-source/quickstart).”
- [github] https://github.com/browser-use/browser-use“Want 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.json“PROBE 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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/observability“Poll 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.json“PROBE 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.com“run = client.runs.create("Find the top Hacker News story")”
- [probe] https://docs.browser-use.com/llms.txt“PROBE 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.json“PROBE 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/sessions“A **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/authentication“Log in once, save the profile, then reuse it to start future browsers already logged in.”
- [community] https://hn.algolia.com/api/v1/items/43173378“If 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-output“V4 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-handling“Automatic CAPTCHA solving is enabled by default for API V4 Agent runs and standalone Cloud Browser sessions.”
- [probe] https://docs.browser-use.com/openapi.json“PROBE 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.com“run = client.runs.create("Find the top Hacker News story")”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/sessions“A **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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com/cloud/browser/captcha-handling“If the challenge remains, open the [live preview](/cloud/browser/live-preview) for human control.”
- [claimed-docs] https://docs.browser-use.com/cloud/guides/2fa“Ask 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-server“Run browser automation tasks from your AI coding assistant. Connect to Claude, Cursor, Windsurf, or any MCP client.”
- [probe] https://docs.browser-use.com/openapi.json“PROBE 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-server“official 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-use“Want 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“For a local agent, use the [open-source library](/open-source/quickstart).”
- [probe] https://docs.browser-use.com/llms.txt“PROBE 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.com“For a local agent, use the [open-source library](/open-source/quickstart).”
- [github] https://github.com/browser-use/browser-use“Want 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/43173378“If 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.txt“PROBE 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-use“Task: "Extract structured data about my followers and export it as a CSV."”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/structured-output“V4 returns `run.result` as a string. Ask for JSON only, then validate it client-side”
- [claimed-docs] https://docs.browser-use.com“run = 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.com“run = client.runs.create("Find the top Hacker News story")”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/sessions“A **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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/observability“Poll 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.com“run = client.runs.create("Find the top Hacker News story")”
- [github] https://github.com/browser-use/browser-use“Task: "Fill in this job application with my resume and information."”
- [github] https://github.com/browser-use/browser-use“Task: "Extract structured data about my followers and export it as a CSV."”
- [community] https://hn.algolia.com/api/v1/items/43173378“If 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-use“Want 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/sessions“A **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“run = 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.com“run = client.runs.create("Find the top Hacker News story")”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/sessions“A **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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com/cloud/guides/mcp-server“Run browser automation tasks from your AI coding assistant. Connect to Claude, Cursor, Windsurf, or any MCP client.”
- [github] https://github.com/browser-use/browser-use“Want 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/sessions“A **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/observability“Poll `runs.events()` with the previous cursor to receive only new events”
- [claimed-docs] https://docs.browser-use.com/cloud/agent/observability“Poll ordered V4 events to monitor a run or build a custom UI.”
Automation = 3.6 ÷ 80 × 100 = 4.5