Everything the dashboard does, an agent can do too: scan a site, read each issue with the page, the element and a ready-to-use fix prompt, download the report as Markdown, and pay. Use the REST API at https://api.bearscan.app/v1 or the MCP server at https://mcp.bearscan.app, both with the same API key.
Get a key
Create one on the API keys page and send it as Authorization: Bearer bs_live_…. A key acts for your whole workspace: it can scan, read and buy reports for every site in it. It’s shown once; revoke it there if it leaks.
Quickstart
curl -X POST https://api.bearscan.app/v1/scans \
-H "Authorization: Bearer $BEARSCAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# Poll until "status" is "complete", then:
curl https://api.bearscan.app/v1/scans/$SCAN_ID/report.md \
-H "Authorization: Bearer $BEARSCAN_API_KEY"Endpoints
POST /v1/scanswith{ url }: starts a scan. A workspace’s first site is scanned in full, up to 100 pages; any other unpaid site gets a 10-page preview; a paid site is scanned up to 1,000 pages.GET /v1/scans/:scanId: status (queued,scanning,complete,failed) and issue counts by severity.GET /v1/scans/:scanId/findings: every issue, most severe first, with its pages and WCAG criterion. Once the site has a paid report or Monitoring, each issue also carries the fix and a prompt for a coding agent; until then those arenull. Issues markedneedsRevieware ones a scanner can’t decide; a person has to check them, and they never count as passes.GET /v1/scans/:scanId/report.md: the whole scan as one Markdown file for an agent to work through in a repository. Part of a paid report or Monitoring; otherwise a402that says how to pay.POST /v1/checkoutwith{ siteId, plan }: a Stripe Checkout link to give a person.planisone_time($49),monthly($29) oryearly($228).
The full contract is the OpenAPI 3.1 spec. Errors are JSON: {"error": {"type", "code", "message"}}. A scan or site from another workspace answers 404, the same as one that doesn’t exist.
MCP server
Tools: scan_site, get_scan, get_findings, get_report_markdown. Streamable HTTP at https://mcp.bearscan.app, with your key as a bearer token. In Claude Code:
claude mcp add --transport http bearscan https://mcp.bearscan.app \
--header "Authorization: Bearer $BEARSCAN_API_KEY"Setup for Cursor, VS Code, Claude Desktop and the rest is on the MCP server page.
Limits
- 120 requests a minute per key.
- 10 scans started a minute per key, because each scan uses a real browser.