Skip to main content

Performance API

Run Lighthouse audits and return metrics for accessibility, best practices, performance, PWA, and SEO. Includes latency, time-to-interaction, design contrast, and other recommendations.

Endpoint

  • Method: POST
  • Path: /performance
  • Auth: token query parameter (?token=)
  • Content-Type: application/json
  • Response: application/json

See the OpenAPI reference for complete details.

Quickstart

curl -X POST \
"https://production-sfo.browserless.io/performance?token=YOUR_API_TOKEN_HERE" \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com/"
}'

Response

  // ...
"audits": {
"is-on-https": {
"title": "Uses HTTPS",
"score": 1
// ...
},
"viewport": {
"title": "Has a `<meta name=\"viewport\">` tag with `width` or `initial-scale`",
"score": 1
// ...
},
"first-contentful-paint": {
"score": 1,
"displayValue": "0.8 s"
// ...
}
// ...
}

Each test has a score that indicates how well it performed, where 1 is the maximum and 0 is the lowest.

Examples

warning

Due to the number of checks gathered, requests can take anywhere from several seconds to minutes depending on the site and worker size.

By default, the /performance API will gather all the metrics. This will result in a really big JSON response (350kb to 800kb on average) and it will take some seconds (to minutes) to complete.

Gathering Metrics for a Category

You can get metrics from specific categories, using the config property. Just like Lighthouse, available categories are accessibility, best practices, performance, pwa, and seo

curl --request POST \
--url 'https://production-sfo.browserless.io/performance?token=YOUR_API_TOKEN_HERE' \
--header 'Cache-Control: no-cache' \
--header 'Content-Type: application/json' \
--data '{
"url": "https://browserless.io",
"config": {
"extends": "lighthouse:default",
"settings": {
"onlyCategories": ["accessibility"]
}
}
}'

This will gather the predefined metrics defined by Lighthouse for that category:

  // ...
"audits": {
"aria-command-name": {
"title": "`button`, `link`, and `menuitem` elements have accessible names",
"score": 1
// ...
},
"aria-hidden-body": {
"title": "`[aria-hidden=\"true\"]` is not present on the document `<body>`",
"score": 1
// ...
},
"aria-hidden-focus": {
"title": "`[aria-hidden=\"true\"]` elements do not contain focusable descendents",
"score": 1
// ...
},
// ...
}

Gathering metrics from a single audit

You can get any specific metrics valid in Lighthouse

curl --request POST \
--url 'https://production-sfo.browserless.io/performance?token=YOUR_API_TOKEN_HERE' \
--header 'Cache-Control: no-cache' \
--header 'Content-Type: application/json' \
--data '{
"url": "https://browserless.io",
"config": {
"extends": "lighthouse:default",
"settings": {
"onlyCategories": ["accessibility"]
}
}
}'

Response example

  // ...
"audits": {
"unminified-css": {
"title": "Minify CSS",
"score": 1
// ...
},
// ...
}