Skip to main content

Confirm

Are you sure?

Lighthouse API

Lighthouse audits by API, with the rest of the page

The Lighthouse report as JSON, on your schedule and your webhook — next to the page's screenshot and JavaScript errors when you want them.

By · Last updated: September 2026

TL;DR

POST a URL to /lighthouse and get a real Lighthouse 13 audit back as JSON: the four category scores, the lab metrics (LCP, CLS, TBT, FCP, Speed Index) and, with include_audits, all 150+ audits. Mobile or desktop, 2 credits per audit, delivered to your webhook — and /scrape adds the console and a screenshot from the same request.

Free plan, no credit card. 1,000 credits a month.

Try it now — no signup

Try it on a page

Try your own URL

Free · no signup · 2 runs every 10 minutes

Paste up to 10 URLs

Each URL counts as one of your free runs; the ones past the limit are listed with a free API key to run them.

Your result will appear here.

Pick one of the pages above to get started.

The request

One POST, one bearer token

POST /lighthouse
curl -X POST https://urlpipe.dev/lighthouse \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "device": "mobile", "report_to": "https://your-app.com/webhooks/urlpipe"}'
Webhook delivery
{
  "token": "0Zx3…9aQ",
  "operation": "lighthouse",
  "success": true,
  "result": {
    "url": "https://example.com",
    "fetchTime": "2026-09-24T09:12:03.000Z",
    "device": "mobile",
    "categories": {
      "performance":    { "score": 0.77, "title": "Performance" },
      "accessibility":  { "score": 0.94, "title": "Accessibility" },
      "best-practices": { "score": 1.0,  "title": "Best Practices" },
      "seo":            { "score": 0.92, "title": "SEO" },
      "pwa": null
    },
    "metrics": {
      "first-contentful-paint":   { "score": 0.62, "displayValue": "2.4 s", "numericValue": 2412, "numericUnit": "millisecond" },
      "largest-contentful-paint": { "score": 0.55, "displayValue": "3.9 s", "numericValue": 3871, "numericUnit": "millisecond" },
      "total-blocking-time":      { "score": 0.91, "displayValue": "180 ms", "numericValue": 180, "numericUnit": "millisecond" },
      "cumulative-layout-shift":  { "score": 1.0,  "displayValue": "0.02", "numericValue": 0.02, "numericUnit": "unitless" },
      "speed-index":              { "score": 0.83, "displayValue": "3.6 s", "numericValue": 3604, "numericUnit": "millisecond" }
    }
  },
  "meta": { "cache": "miss", "processing_time_ms": 21870, "quota": { "cost": 2, "…": "…" } }
}

Honestly

Do you need a Lighthouse API, or is PageSpeed Insights enough?

If all you need is scores for a few public pages from time to time, Google's PageSpeed Insights API may be enough. It is free, runs Lighthouse, allows 25,000 queries a day per API key, and adds real-user Chrome field data where Google has it — which a lab audit, ours included, cannot give you.

Where it stops is everything around the audit. PSI answers one audit per call, synchronously, and returns only the audit. It doesn't deliver to a webhook, keep the result for you, tag it with your customer's id, fetch from a residential address, or hand you the page's screenshot, console errors or content with it. That's the gap this API fills.

PageSpeed Insights APIURLpipe /lighthouse
PriceFree, 25,000 queries/day per key2 credits per audit, from your plan
Real-user (CrUX) field dataYesNo
Lab audit, mobile and desktopYesYes
Full audits listYesWith include_audits
Async with signed webhooksNoYes
Stored results, reused for freeNo7 days by default, up to 30
Screenshot, console, Markdown from the same callNoVia /scrape
Your own labels, usage by labelNoYes
Pages on private networksNoNo

The response

What comes back

Lighthouse 13 reports four categories — performance, accessibility, best-practices and seo, each scored 0 to 1. The PWA category is gone from Lighthouse; the pwa key stays in the response as null so the shape never changes under you.

metrics carries the lab metrics with a score, display value, numeric value and unit. The performance score weights them: Total Blocking Time 30%, Largest Contentful Paint 25%, Cumulative Layout Shift 25%, First Contentful Paint 10% and Speed Index 10%. INP is a field metric that needs real interactions, so no lab tool measures it; TBT is its lab proxy.

Send include_audits: "true" for the full audits object — 150+ audits such as render-blocking-resources, unused-css-rules, color-contrast and image-alt, most with a details list of the elements to fix. The guide to reading a Lighthouse audit explains what to do with it.

At scale

Running audits at volume

An audit holds a browser far longer than a page fetch, so /lighthouse is built to be sent and forgotten. Requests are async by default: you get a token at once, and the result is POSTed to your webhook, signed with HMAC-SHA256 and retried if your endpoint is down — or collected from GET /result/:token for 30 days.

  • Agencies and multi-tenant tools. Tag each audit with labels such as your client's id; they come back on the result, and usage is broken down by label.
  • No paying twice. A stored audit is reused for free while it is fresher than max_age (7 days by default). Send max_age: 0 when you need a fresh run. A duplicate request that arrives while the first is running waits for it, also free.
  • Variance. One audit is one sample. For a number you'll act on, run a few and take the median rather than trusting a single score.
  • Retries without double work. An Idempotency-Key header makes a retried request return the first one's token instead of starting a second audit.

device

Mobile or desktop

deviceViewportThrottlingUse it for
mobile (default)360 × 6404× CPU slowdown, slow 4GThe score Google's mobile-first world cares about
desktop1350 × 940None, fast networkDesktop-heavy audiences and B2B tools

Mobile and desktop audits are stored separately, as are audits with and without include_audits, since each is a different result.

/scrape

Lighthouse, console and screenshot in one request

A score tells you the page is slow; the console and the picture tell you why. /scrape runs the audit alongside a normal visit and merges the results:

POST /scrape
{
  "url": "https://example.com",
  "operations": ["lighthouse", "console", "screenshot"],
  "device": "mobile",
  "include_audits": true,
  "report_to": "https://your-app.com/webhooks/urlpipe"
}

Each operation is billed as usual. The audit takes its own instrumented page load — it has to, to measure one — so page_options apply to the console and screenshot but never to the audit: blocking or trimming the page would falsify the scores. Audits often outlast the 60-second synchronous window, so this is one to run async.

Monitoring

Want the report, not the JSON?

This API sells the audit as data for your own product or pipeline. If what you want is a monitored report — scheduled audits of your sites, history, and what regressed since last time, across performance, SEO, security and accessibility — that's our sister product, Full Stack Audit.

Limits

What it does not do

  • No field data. It is a lab audit. For real-user Core Web Vitals, use CrUX or PSI.
  • No user flows. One page load per audit: no logins, clicks or multi-step journeys.
  • No page_options on the audit. Deliberately, as above.
  • No scheduling. You call it when you want an audit; for scheduled monitoring, see Full Stack Audit.
  • Public pages only. Staging behind a VPN or on a private address can't be reached.

Pricing

What it costs

CallCreditsFree (calls/mo)Starter (calls/mo)Pro (calls/mo)Scale (calls/mo)
/lighthouse2 credits50010,00027,50087,500

Cache hits and failed requests cost nothing. Paid plans are never cut off: past the allowance, extra credits are $1.50 per 1,000 credits. See every plan.

FAQ

Frequently asked questions

Is this a PageSpeed Insights API alternative?
For lab audits, yes: it runs Lighthouse and returns the scores, metrics and audits. It adds async webhooks, stored results, labels and /scrape, and costs credits; PSI is free and adds real-user field data. If you only need occasional scores, PSI may be enough.
Which Lighthouse version does it run?
Lighthouse 13, with its four categories: performance, accessibility, best practices and SEO. The pwa key is returned as null so the response keeps one shape.
How much does an audit cost?
2 credits per audit, from the same allowance as every other call. A stored result reused within max_age is free, and a failed audit costs nothing.
Does it measure INP?
No lab tool can: INP needs real user interactions. The response includes Total Blocking Time, the lab metric that tracks it most closely.
Why do my scores differ between runs?
Lighthouse scores move with network and CPU conditions at the moment of the audit, and the page itself (ads, A/B tests, third-party scripts) changes between loads. Compare several runs, not one.
Can I get the full list of audits?
Yes — send include_audits: "true" and the response carries the full audits object with each audit's score, description and the elements to fix.

Make your first request in five minutes.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.