Scan runs
Use the Website Scanner REST API to trigger scan runs, check their status, list all runs, and retrieve detailed accessibility reports.
Scan runs are individual executions of a scan configuration. Use these endpoints to trigger new scans programmatically, poll for run status, and retrieve detailed accessibility reports for each run.
Trigger a scan run
Use this endpoint to manually trigger a new scan run for an existing scan configuration. You need the project_id of the scan configuration you want to run. Use the scanRunId returned in the response to track the run status.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
-X POST https://api-scanner.browserstack.com/api/v1/scanner/scans/{project_id}/new_scan
-
project_id* Integer
The unique ID of the scan project for which you want to trigger a new run.
Response attributes 200 application/json
Response
{
"success": true,
"data": {
"scanRunId": 144
}
}
-
success Boolean
Indicates whether the request was successful.
-
data Object
â–¶ SHOW VALUESContains the ID of the newly created scan run.
-
scanRunId Integer
The unique ID of the newly triggered scan run.
-
List scan runs
Use this endpoint to retrieve a paginated list of all scan runs for a specific scan configuration. Each run includes the report ID, build number, status summary, and accessibility metrics.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
https://api-scanner.browserstack.com/api/v1/scanner/{proj_id}/scan_builds
-
proj_id* Integer
The unique ID of the scan project.
-
page Integer
Page number to retrieve. Default value is 1.
-
page_size Integer
Number of scan runs to return per page. Default value is 30.
Response attributes 200 application/json
Response
{
"success": true,
"info": {
"page": 1,
"pageSize": 30,
"count": 1,
"prev": null,
"next": null
},
"builds": [
{
"id": 1554790,
"reportId": 1554790,
"buildNumber": 1,
"name": "sampleproject.com-5076",
"createdAt": "2026-03-02T10:41:15.836Z",
"startedAt": "2026-03-02T10:41:15.944Z",
"productsEnabled": [
"a11y",
"percy",
"functional",
"performance",
"responsive",
"content_checker",
"form_checker"
],
"pageCount": 6,
"createdBy": {
"id": 000,
"name": "sampleUser"
},
"projectId": 99999,
"thBuildUuid": "xwdoo8wjazmpmnbsw1zhq0fgivcyn6czfu7e3xuu",
"error": "The requested page is not reachable. Please ensure the domain is accessible",
"prodBuild": false,
"summary": {
"status": "completed",
"accessibility": {
"score": 88,
"status": "completed",
"pageCount": 6,
"issueCount": 116,
"scanStability": {
"total": 6,
"failure": 0,
"success": 6,
"redirect": 2
},
"buildStability": 6,
"componentCount": 19,
"webUrl": "https://accessibility.browserstack.com/site-scanner/projects/www.browserstack.com-5076/builds?thBuildId=xwdoo8wjazmpmnbsw1zhq0fgivcyn6czfu7e3xuu&recurring=false&tunnel_vision=false",
"browser": "chrome"
},
"percy": {
"state": "finished",
"status": "completed",
"webUrl": "https://percy.io/9560f98d/visual_scanner/CS_www.browserstack.com-5076_CS/builds/47346963",
"reviewState": "approved",
"scanStability": {
"total": 6,
"failure": 0,
"success": 6,
"redirect": 0
},
"totalSnapshots": 6,
"totalTestCases": 0,
"totalComparisons": 12,
"reviewStateReason": "project_first_build",
"totalOpenComments": 0,
"totalComparisonsDiff": 12,
"totalTestCasesFailed": 0,
"totalComparisonsFinished": 12,
"totalSnapshotsUnreviewed": 0,
"totalTestCasesUnreviewed": 0,
"totalSnapshotsRequestingChanges": 0
},
"functional": {
"status": "completed",
"ctaErrors": 46,
"brokenLinks": 5,
"totalIssues": 51,
"urlsWithIssues": 6,
"totalUrlsScanned": 6,
"webUrl": "https://scanner.browserstack.com/site-scanner/www.browserstack.com-5076/scan-report/qgedz8euwecxygcmkmjg5q3qzwhsezbhuekf4rlg?scanner_type=functional"
},
"performance": {
"status": "completed",
"totalUrls": 6,
"totalFailed": 0,
"testhubBuildUuid": "j8joem5km7dcmgao0kya1xec2qj6j5lbcrusxmn2",
"desktopRatingsCount": {
"good": 0,
"poor": 0,
"needs improvement": 6
},
"webUrl": "https://scanner.browserstack.com/site-scanner/www.browserstack.com-5076/performance-report/j8joem5km7dcmgao0kya1xec2qj6j5lbcrusxmn2?scanner_type=performance"
},
"contentChecker": {
"status": "completed",
"totalUrls": 6,
"totalIssues": 24,
"urlsWithAnyIssues": 6,
"totalGrammarIssues": 2,
"totalSpellingIssues": 22,
"webUrl": "https://scanner.browserstack.com/site-scanner/www.browserstack.com-5076/spell-check-report/rdfokp6pbrubizhrey153n8artrik576l9mzv88g?scanner_type=content_checker"
},
"formChecker": {
"status": "completed",
"totalForms": 10,
"formsFailed": 7,
"urlsWithForms": 6,
"formsSuccessful": 3,
"formsWithIssues": 7,
"totalUrlsScanned": 6,
"formsWithOpenIssues": 2,
"formsWithSubmissionIssues": 5,
"webUrl": "https://scanner.browserstack.com/site-scanner/www.browserstack.com-5076/form-report/f5dxxfiknkgffd8cp9udqx1lg74i92xkwpbwwflu?scanner_type=form_checker"
},
"responsive": {
"state": "finished",
"status": "completed",
"webUrl": "https://percy.io/9560f98d/responsive_scanner/CS_www.browserstack.com-5076_CS/builds/47346961",
"reviewState": "approved",
"scanStability": {
"total": 6,
"failure": 0,
"success": 6,
"redirect": 0
},
"totalSnapshots": 6,
"totalTestCases": 0,
"totalComparisons": 36,
"reviewStateReason": "project_first_build",
"totalOpenComments": 0,
"totalComparisonsDiff": 36,
"totalTestCasesFailed": 0,
"totalComparisonsFinished": 36,
"totalSnapshotsUnreviewed": 0,
"totalTestCasesUnreviewed": 0,
"totalSnapshotsRequestingChanges": 0
},
"scanStability": {
"total": 6,
"failure": 0,
"success": 6,
"redirect": 0
}
}
}
]
}
-
success Boolean
Indicates whether the request was successful.
-
info Object
â–¶ SHOW VALUESPagination metadata for the list of scan runs.
-
page Integer
The current page number.
-
pageSize Integer
The number of items per page.
-
count Integer
The total number of results returned on the current page.
-
prev Integer
The previous page number. Returns
nullif there is no previous page. -
next Integer
The next page number. Returns
nullif there is no next page.
-
-
builds Array
â–¶ SHOW VALUESAn array of scan run objects, each containing per-product summaries.
-
id Integer
The unique internal ID of the scan run.
-
reportId Integer
The unique report ID for this scan run, used to retrieve detailed reports.
-
buildNumber Integer
The sequential build number of this scan run within the project.
-
name String
The name of the scan project associated with this run.
-
createdAt String
The ISO 8601 timestamp when the scan run was created.
-
startedAt String
The ISO 8601 timestamp when the scan run started executing.
-
productsEnabled Array
List of BrowserStack products enabled for this scan run (for example,
a11y,percy,functional,performance,responsive,content_checker,form_checker). -
pageCount Integer
The number of pages scanned in this run.
-
createdBy Object
â–¶ SHOW VALUESInformation about the user who triggered this scan run.
-
id Integer
The unique ID of the user.
-
name String
The display name of the user.
-
-
projectId Integer
The ID of the scan project this run belongs to.
-
thBuildUuid String
The unique UUID for this build in the BrowserStack test hub.
-
prodBuild Boolean
Whether this is a production build.
-
error String
Error message if a page was not reachable during the scan. Returns
nullif no error occurred. -
summary Object
â–¶ SHOW VALUESA summary of the scan run status and per-product results.
-
status String
The overall status of the scan run. Possible values are
completedorfailed. -
accessibility Object
â–¶ SHOW VALUESAccessibility-specific summary for this scan run.
-
score Integer
The accessibility score for this scan run (0–100).
-
status String
The status of the accessibility scan for this run. Possible values are
completedorfailed. -
pageCount Integer
The number of pages for which the accessibility scan completed.
-
issueCount Integer
The total number of accessibility issues found in this run.
-
scanStability Object
â–¶ SHOW VALUESPage-level scan stability metrics for this run.
-
total Integer
The total number of pages in the scan.
-
failure Integer
The number of pages that failed to scan.
-
success Integer
The number of pages that scanned successfully.
-
redirect Integer
The number of pages that returned a redirect response.
-
-
buildStability Integer
The number of pages that were successfully scanned for accessibility in this run.
-
componentCount Integer
The number of UI components affected by accessibility issues in this run.
-
webUrl String
The URL to view the accessibility report for this run in the BrowserStack dashboard.
-
browser String
The browser used for accessibility scanning in this run (for example,
chrome).
-
-
percy Object
â–¶ SHOW VALUESVisual testing (Percy) summary for this scan run. Present only when Percy is enabled.
-
state String
The processing state of the Percy build (for example,
finished). -
status String
The status of the Percy scan. Possible values are
completedorfailed. -
webUrl String
The URL to view the Percy build report.
-
reviewState String
The review state of the Percy build (for example,
approvedorunreviewed). -
totalSnapshots Integer
The total number of snapshots captured.
-
totalTestCases Integer
The total number of test cases associated with the Percy build.
-
totalComparisons Integer
The total number of visual comparisons performed.
-
reviewStateReason String
The reason for the current review state (for example,
project_first_build). -
totalOpenComments Integer
The number of open comments on this Percy build.
-
totalComparisonsDiff Integer
The number of comparisons that have visual differences.
-
totalTestCasesFailed Integer
The number of test cases that failed.
-
totalSnapshotsRejected Integer
The number of snapshots rejected. Returns
nullif none. -
totalComparisonsFinished Integer
The number of comparisons that have finished processing.
-
totalSnapshotsUnreviewed Integer
The number of snapshots that have not yet been reviewed.
-
totalTestCasesUnreviewed Integer
The number of test cases that have not yet been reviewed.
-
totalSnapshotsRequestingChanges Integer
The number of snapshots requesting changes.
-
-
functional Object
â–¶ SHOW VALUESFunctional scan summary for this scan run. Present only when functional scanning is enabled.
-
status String
The status of the functional scan. Possible values are
completedorfailed. -
ctaErrors Integer
The number of CTA (call-to-action) errors found.
-
brokenLinks Integer
The number of broken links found.
-
totalIssues Integer
The total number of functional issues found.
-
urlsWithIssues Integer
The number of URLs that have at least one functional issue.
-
totalUrlsScanned Integer
The total number of URLs scanned for functional issues.
-
webUrl String
The URL to view the functional scan report in the BrowserStack dashboard. Present in scan run list responses only.
-
-
performance Object
â–¶ SHOW VALUESPerformance scan summary for this scan run. Present only when performance scanning is enabled.
-
status String
The status of the performance scan. Possible values are
completedorfailed. -
totalUrls Integer
The total number of URLs scanned for performance.
-
totalFailed Integer
The number of URLs that failed performance scanning.
-
testhubBuildUuid String
The unique UUID of the performance test hub build.
-
desktopRatingsCount Object
â–¶ SHOW VALUESBreakdown of desktop performance ratings across scanned URLs.
-
good Integer
The number of URLs rated as good performance.
-
poor Integer
The number of URLs rated as poor performance.
-
needs improvement Integer
The number of URLs that need performance improvement.
-
-
webUrl String
The URL to view the performance report in the BrowserStack dashboard. Present in scan run list responses only.
-
-
contentChecker Object
â–¶ SHOW VALUESContent checker summary for this scan run. Present only when content checking is enabled.
-
status String
The status of the content checker scan. Possible values are
completedorfailed. -
totalUrls Integer
The total number of URLs scanned for content issues.
-
totalIssues Integer
The total number of content issues found (spelling and grammar combined).
-
urlsWithAnyIssues Integer
The number of URLs that have at least one content issue.
-
totalGrammarIssues Integer
The total number of grammar issues found.
-
totalSpellingIssues Integer
The total number of spelling issues found.
-
webUrl String
The URL to view the content checker report in the BrowserStack dashboard.
-
-
formChecker Object
â–¶ SHOW VALUESForm checker summary for this scan run. Present only when form checking is enabled.
-
status String
The status of the form checker scan. Possible values are
completedorfailed. -
totalForms Integer
The total number of forms found across all scanned pages.
-
formsFailed Integer
The number of forms that have issues.
-
urlsWithForms Integer
The number of URLs that contain forms.
-
formsSuccessful Integer
The number of forms that passed all checks.
-
formsWithIssues Integer
The number of forms with at least one issue.
-
totalUrlsScanned Integer
The total number of URLs scanned for form issues.
-
formsWithOpenIssues Integer
The number of forms with open (unresolved) issues.
-
formsWithSubmissionIssues Integer
The number of forms with submission-related issues.
-
webUrl String
The URL to view the form checker report in the BrowserStack dashboard.
-
-
responsive Object
â–¶ SHOW VALUESResponsive design testing summary for this scan run. Present only when responsive testing is enabled.
-
state String
The processing state of the responsive testing build (for example,
finished). -
status String
The status of the responsive testing scan. Possible values are
completedorfailed. -
webUrl String
The URL to view the responsive testing report.
-
reviewState String
The review state of the responsive testing build (for example,
approved). -
totalSnapshots Integer
The total number of responsive snapshots captured.
-
totalTestCases Integer
The total number of test cases for responsive testing.
-
totalComparisons Integer
The total number of responsive visual comparisons performed.
-
reviewStateReason String
The reason for the current review state.
-
totalOpenComments Integer
The number of open comments on this responsive testing build.
-
totalComparisonsDiff Integer
The number of comparisons that have visual differences.
-
totalTestCasesFailed Integer
The number of test cases that failed.
-
totalComparisonsFinished Integer
The number of comparisons that have finished processing.
-
totalSnapshotsUnreviewed Integer
The number of snapshots that have not yet been reviewed.
-
totalTestCasesUnreviewed Integer
The number of test cases that have not yet been reviewed.
-
totalSnapshotsRequestingChanges Integer
The number of snapshots requesting changes.
-
-
scanStability Object
â–¶ SHOW VALUESPage-level scan stability metrics for this run.
-
total Integer
The total number of pages in the scan.
-
failure Integer
The number of pages that failed to scan.
-
success Integer
The number of pages that scanned successfully.
-
redirect Integer
The number of pages that returned a redirect response.
-
-
-
Get scan run status
Use this endpoint to poll the real-time status of a specific scan run, identified by the report_id. Poll this endpoint periodically after triggering a scan to determine when the run is complete.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
https://api-scanner.browserstack.com/api/v1/scanner/{proj_id}/scan_builds/{report_id}/status
-
proj_id* Integer
The unique ID of the scan project.
-
report_id* Integer
The unique ID of the scan run report.
-
current_user_id String
The user ID of the current user making the request.
Response attributes 200 application/json
Response
{
"success": true,
"status": "completed"
}
-
success Boolean
Indicates whether the request was successful.
-
status String
The current status of the scan run. Possible values are
queued,processing,finalizing,completed, orfailed.
Get scan run summary
Use this endpoint to retrieve a summary of scan results for all enabled products in a completed scan run. The response includes results for accessibility, visual (Percy), functional, performance, responsive, content checking, and form checking, depending on which products are enabled for the project. Use the report_id from the scan run list or the trigger scan response to identify the run.
Note: Retrieve this report only after the scan run status shows
completed. See Get scan run status. Only products enabled for the project appear in the response.
Request parameters
Request
curl -u "YOUR_USERNAME:YOUR_ACCESS_KEY" \
"https://api-scanner.browserstack.com/api/v1/scanner/{proj_id}/scan_builds/{report_id}"
-
proj_id* Integer
The unique ID of the scan project.
-
report_id* Integer
The unique ID of the scan run report.
-
current_user_id String
The user ID of the current user making the request.
-
product String
The product type for which to retrieve the report. Use
accessibilityto get the accessibility report.
Response attributes 200 application/json
Response
{
"accessibility": {
"score": 88,
"status": "completed",
"pdfScan": null,
"pageCount": 6,
"issueCount": 116,
"buildStability": 6,
"componentCount": 19
},
"percy": {
"state": "finished",
"status": "completed",
"webUrl": "https://percy.io/9560f98d/visual_scanner/CS_www.browserstack.com-5076_CS/builds/47346963",
"reviewState": "approved",
"totalSnapshots": 6,
"totalTestCases": 0,
"totalComparisons": 12,
"reviewStateReason": "project_first_build",
"totalOpenComments": 0,
"totalComparisonsDiff": 12,
"totalTestCasesFailed": 0,
"totalSnapshotsRejected": null,
"totalComparisonsFinished": 12,
"totalSnapshotsUnreviewed": 0,
"totalTestCasesUnreviewed": 0,
"totalSnapshotsRequestingChanges": 0
},
"functional": {
"status": "completed",
"ctaErrors": 46,
"brokenLinks": 5,
"totalIssues": 51,
"urlsWithIssues": 6,
"totalUrlsScanned": 6
},
"performance": {
"status": "completed",
"totalUrls": 6,
"totalFailed": 0,
"testhubBuildUuid": "j8joem5km7dcmgao0kya1xec2qj6j5lbcrusxmn2",
"desktopRatingsCount": {
"good": 0,
"poor": 0,
"needs improvement": 6
}
},
"responsive": {
"state": "finished",
"status": "completed",
"webUrl": "https://percy.io/9560f98d/responsive_scanner/CS_www.browserstack.com-5076_CS/builds/47346961",
"reviewState": "approved",
"totalSnapshots": 6,
"totalTestCases": 0,
"totalComparisons": 36,
"reviewStateReason": "project_first_build",
"totalOpenComments": 0,
"totalComparisonsDiff": 36,
"totalTestCasesFailed": 0,
"totalSnapshotsRejected": null,
"totalComparisonsFinished": 36,
"totalSnapshotsUnreviewed": 0,
"totalTestCasesUnreviewed": 0,
"totalSnapshotsRequestingChanges": 0
}
}
-
accessibility Object
â–¶ SHOW VALUESAccessibility scan summary for this run.
-
score Integer
The accessibility score for this scan run (0–100).
-
status String
The status of the accessibility scan. Possible values are
completedorfailed. -
pdfScan Object
PDF scan details, if applicable. Returns
nullif no PDF scan was performed. -
pageCount Integer
The number of pages for which the accessibility scan completed.
-
issueCount Integer
The total number of accessibility issues found.
-
buildStability Integer
The number of pages that were successfully scanned for accessibility.
-
componentCount Integer
The number of unique UI components affected by accessibility issues.
-
-
percy Object
â–¶ SHOW VALUESVisual testing (Percy) summary for this run. Present only when Percy is enabled for the project.
-
state String
The processing state of the Percy build (for example,
finished). -
status String
The status of the Percy scan. Possible values are
completedorfailed. -
webUrl String
The URL to view the Percy build report.
-
reviewState String
The review state of the Percy build (for example,
approvedorunreviewed). -
totalSnapshots Integer
The total number of snapshots captured.
-
totalTestCases Integer
The total number of test cases associated with the Percy build.
-
totalComparisons Integer
The total number of visual comparisons performed.
-
reviewStateReason String
The reason for the current review state (for example,
project_first_build). -
totalOpenComments Integer
The number of open comments on this Percy build.
-
totalComparisonsDiff Integer
The number of comparisons that have visual differences.
-
totalTestCasesFailed Integer
The number of test cases that failed.
-
totalSnapshotsRejected Integer
The number of snapshots rejected. Returns
nullif none. -
totalComparisonsFinished Integer
The number of comparisons that have finished processing.
-
totalSnapshotsUnreviewed Integer
The number of snapshots that have not yet been reviewed.
-
totalTestCasesUnreviewed Integer
The number of test cases that have not yet been reviewed.
-
totalSnapshotsRequestingChanges Integer
The number of snapshots requesting changes.
-
-
functional Object
â–¶ SHOW VALUESFunctional scan summary for this run. Present only when functional scanning is enabled.
-
status String
The status of the functional scan. Possible values are
completedorfailed. -
ctaErrors Integer
The number of CTA (call-to-action) errors found.
-
brokenLinks Integer
The number of broken links found.
-
totalIssues Integer
The total number of functional issues found.
-
urlsWithIssues Integer
The number of URLs that have at least one functional issue.
-
totalUrlsScanned Integer
The total number of URLs scanned for functional issues.
-
webUrl String
The URL to view the functional scan report in the BrowserStack dashboard. Present in scan run list responses only.
-
-
performance Object
â–¶ SHOW VALUESPerformance scan summary for this run. Present only when performance scanning is enabled.
-
status String
The status of the performance scan. Possible values are
completedorfailed. -
totalUrls Integer
The total number of URLs scanned for performance.
-
totalFailed Integer
The number of URLs that failed performance scanning.
-
testhubBuildUuid String
The unique UUID of the performance test hub build.
-
desktopRatingsCount Object
â–¶ SHOW VALUESBreakdown of desktop performance ratings across scanned URLs.
-
good Integer
The number of URLs rated as good performance.
-
poor Integer
The number of URLs rated as poor performance.
-
needs improvement Integer
The number of URLs that need performance improvement.
-
-
webUrl String
The URL to view the performance report in the BrowserStack dashboard. Present in scan run list responses only.
-
-
responsive Object
â–¶ SHOW VALUESResponsive design testing summary for this run. Present only when responsive testing is enabled.
-
state String
The processing state of the responsive testing build (for example,
finished). -
status String
The status of the responsive testing scan. Possible values are
completedorfailed. -
webUrl String
The URL to view the responsive testing report.
-
reviewState String
The review state of the responsive testing build (for example,
approved). -
totalSnapshots Integer
The total number of responsive snapshots captured.
-
totalTestCases Integer
The total number of test cases for responsive testing.
-
totalComparisons Integer
The total number of responsive visual comparisons performed.
-
reviewStateReason String
The reason for the current review state.
-
totalOpenComments Integer
The number of open comments on this responsive testing build.
-
totalComparisonsDiff Integer
The number of comparisons that have visual differences.
-
totalTestCasesFailed Integer
The number of test cases that failed.
-
totalComparisonsFinished Integer
The number of comparisons that have finished processing.
-
totalSnapshotsUnreviewed Integer
The number of snapshots that have not yet been reviewed.
-
totalTestCasesUnreviewed Integer
The number of test cases that have not yet been reviewed.
-
totalSnapshotsRequestingChanges Integer
The number of snapshots requesting changes.
-
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.