Skip to content

insights › lighthouse

Type:
boolean | object

Default: true
It returns a web performance report over the target url, powered by Lighthouse.

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://css-tricks.com/nerds-guide-color-web' URL with 'insights' API parameter:

CLI Microlink API example

microlink https://css-tricks.com/nerds-guide-color-web&insights.lighthouse

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://css-tricks.com/nerds-guide-color-web" \
  -d "insights.lighthouse=true"

JavaScript Microlink API example

import createClient from 'microlink.io'

const microlink = createClient()

const report =
  await microlink.lighthouse('https://css-tricks.com/nerds-guide-color-web')

Python Microlink API example

import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse": "true"
}

response = requests.get(url, params=querystring)

print(response.json())

Ruby Microlink API example

require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://css-tricks.com/nerds-guide-color-web",
  insights.lighthouse: "true"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body

PHP Microlink API example

<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse" => "true"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}

Golang Microlink API example

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://css-tricks.com/nerds-guide-color-web")
    q.Set("insights.lighthouse", "true")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}
The report is serialized to JSON by default to make it easy to visualize using lighthouse.microlink.io.
Alternatively, you can serialize to 'html' or 'csv':

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://css-tricks.com/nerds-guide-color-web' URL with 'insights' API parameter:

CLI Microlink API example

microlink https://css-tricks.com/nerds-guide-color-web&insights.lighthouse.output=html

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://css-tricks.com/nerds-guide-color-web" \
  -d "insights.lighthouse.output=html"

JavaScript Microlink API example

import createClient from 'microlink.io'

const microlink = createClient()

const report =
  await microlink.lighthouse('https://css-tricks.com/nerds-guide-color-web')

Python Microlink API example

import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse.output": "html"
}

response = requests.get(url, params=querystring)

print(response.json())

Ruby Microlink API example

require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://css-tricks.com/nerds-guide-color-web",
  insights.lighthouse.output: "html"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body

PHP Microlink API example

<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse.output" => "html"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}

Golang Microlink API example

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://css-tricks.com/nerds-guide-color-web")
    q.Set("insights.lighthouse.output", "html")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}
These Lighthouse configuration settings are supported:
  • onlyCategories: Run only these categories, such as accessibility or seo.
  • onlyAudits: Run only the audits named here.
  • skipAudits: Skip the audits named here.
  • formFactor: Score the run as mobile or desktop.
  • screenEmulation: Viewport width, height, device scale, and mobile emulation. {disabled: true} leaves the screen unchanged.
  • throttling: Network latency, throughput, and CPU slowdown for the run.
  • throttlingMethod: How throttling is applied. simulate estimates it, devtools applies it in the browser, and provided uses throttling already in place.
  • emulatedUserAgent: User-Agent string sent with the page. Pro, like headers. A free request is rejected with EINVALQUERY.
  • extraHeaders: Extra HTTP headers sent with the page. Pro, like headers. A free request is rejected with EINVALQUERY.
  • blockedUrlPatterns: URL patterns to block during the run.
  • locale: Language of the report, such as en-US or es.
  • output: Report format: json, html, or csv.
  • ignoreStatusCode: Warn on an error status code instead of failing the run.
  • disableFullPageScreenshot: Skip the full-page screenshot. It is large, and capturing it can change the page.
  • use passiveGathering: Collect data without extra navigations or viewport changes.
  • maxWaitForFcp: Milliseconds to wait for the first contentful paint. The run fails if nothing renders in time.
  • maxWaitForLoad: Milliseconds to wait for the page to load.
  • pauseAfterFcpMs: Milliseconds to wait after the first contentful paint before treating the page as loaded.
  • pauseAfterLoadMs: Milliseconds to wait after the load event before treating the page as loaded.
  • networkQuietThresholdMs: Milliseconds of network quiet required before the page is treated as loaded.
  • cpuQuietThresholdMs: Milliseconds without a long task required before the page is treated as loaded.
Any other setting is ignored.

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://css-tricks.com/nerds-guide-color-web' URL with 'insights' API parameter:

CLI Microlink API example

microlink https://css-tricks.com/nerds-guide-color-web&insights.lighthouse.onlyCategories=accessibility

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://css-tricks.com/nerds-guide-color-web" \
  -d "insights.lighthouse.onlyCategories=accessibility"

JavaScript Microlink API example

import createClient from 'microlink.io'

const microlink = createClient()

const report =
  await microlink.lighthouse('https://css-tricks.com/nerds-guide-color-web')

Python Microlink API example

import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse.onlyCategories": "accessibility"
}

response = requests.get(url, params=querystring)

print(response.json())

Ruby Microlink API example

require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://css-tricks.com/nerds-guide-color-web",
  insights.lighthouse.onlyCategories: "accessibility"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body

PHP Microlink API example

<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse.onlyCategories" => "accessibility"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}

Golang Microlink API example

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://css-tricks.com/nerds-guide-color-web")
    q.Set("insights.lighthouse.onlyCategories", "accessibility")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}
The Lighthouse settings that send request headers, extraHeaders and emulatedUserAgent, need a
PRO
plan, the same as headers. Without one they are rejected with EHEADERS.
Pass headers, proxy and authenticate at the top level, not inside insights.lighthouse: nested, they are rejected with EINVALQUERY.
You can use 'preset' to load a set of specific Lighthouse settings at once:

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://css-tricks.com/nerds-guide-color-web' URL with 'insights' API parameter:

CLI Microlink API example

microlink https://css-tricks.com/nerds-guide-color-web&insights.lighthouse.preset=desktop

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://css-tricks.com/nerds-guide-color-web" \
  -d "insights.lighthouse.preset=desktop"

JavaScript Microlink API example

import createClient from 'microlink.io'

const microlink = createClient()

const report =
  await microlink.lighthouse('https://css-tricks.com/nerds-guide-color-web')

Python Microlink API example

import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse.preset": "desktop"
}

response = requests.get(url, params=querystring)

print(response.json())

Ruby Microlink API example

require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://css-tricks.com/nerds-guide-color-web",
  insights.lighthouse.preset: "desktop"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body

PHP Microlink API example

<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://css-tricks.com/nerds-guide-color-web",
    "insights.lighthouse.preset" => "desktop"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}

Golang Microlink API example

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://css-tricks.com/nerds-guide-color-web")
    q.Set("insights.lighthouse.preset", "desktop")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}
The following presets are supported:
Any other preset is rejected with EINVALQUERY.