Website Speed Test: Bulk PageSpeed Insights & Core Web Vitals avatar

Website Speed Test: Bulk PageSpeed Insights & Core Web Vitals

Pricing

from $8.00 / 1,000 vitals reports

Go to Apify Store
Website Speed Test: Bulk PageSpeed Insights & Core Web Vitals

Website Speed Test: Bulk PageSpeed Insights & Core Web Vitals

Bulk PageSpeed Insights checker and website speed test for up to 100 URLs per run, via Google's official API. Returns per URL the performance score, lab LCP/CLS/TBT, real-user CrUX LCP, INP and CLS with the FAST/AVERAGE/SLOW verdict, and top fixes. $0.01 per URL. For SEO agencies and developers.

Pricing

from $8.00 / 1,000 vitals reports

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

3

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

Website Speed Test: Bulk Core Web Vitals & PageSpeed Insights Checker

A website speed test for many pages at once: send a list of URLs, get the Google PageSpeed Insights performance score, Core Web Vitals (LCP, CLS and TBT), and the real-user Chrome UX Report verdict for each.

You give itYou get backYou pay (Free plan)
Page URLs; mobile or desktop strategyPer URL: score 0-100, lab LCP/CLS/TBT/FCP, field LCP/INP/CLS and FAST/AVERAGE/SLOW verdict, top fixes$0.01 per URL report

Pay per result only: no subscription, no start fee. URLs that fail are recorded and not charged. Paid Apify plans get Store discounts on the price above.

Try it in one click

The input form is already filled in with this example. Press Start and you get the output below.

{
"urls": [
"https://apify.com",
"https://www.wikipedia.org"
]
}

Real output from that exact input (run on 2026-10-31; long decimals cut for display):

[
{
"ok": true,
"url": "https://www.wikipedia.org/",
"strategy": "mobile",
"performanceScore": 100,
"lab": {
"lcpMs": 1235,
"cls": 0.0005,
"tbtMs": 0,
"fcpMs": 1053,
"speedIndexMs": 2481
},
"field": {
"available": true,
"coreWebVitalsAssessment": "FAST",
"lcpMs": 1294,
"inpMs": 99,
"cls": 0
},
"topOpportunities": [],
"source": "Google PageSpeed Insights API v5"
},
{
"ok": true,
"url": "https://apify.com/",
"strategy": "mobile",
"performanceScore": 61,
"lab": {
"lcpMs": 1955,
"cls": 0.00004,
"tbtMs": 2045,
"fcpMs": 1955,
"speedIndexMs": 9594
},
"field": {
"available": true,
"coreWebVitalsAssessment": "AVERAGE",
"lcpMs": 2411,
"inpMs": 394,
"cls": 0.02
},
"topOpportunities": [],
"source": "Google PageSpeed Insights API v5"
}
]

Audit Core Web Vitals for up to 100 URLs in one run. Each URL gets a client-ready report with the Lighthouse performance score (0–100), lab metrics (LCP, CLS, TBT, FCP, Speed Index), real-user CrUX field data (LCP, INP, CLS percentiles) with Google's own Core Web Vitals field verdict (FAST, AVERAGE or SLOW), and the top 5 speed opportunities ranked by estimated savings.

Data comes straight from the official Google PageSpeed Insights API v5 — the same engine behind pagespeed.web.dev — on our own provisioned API quota, so runs don't fail on the shared anonymous limit.

Who uses it

  • SEO agencies producing a mobile Core Web Vitals report for 100 client URLs in one run
  • Performance engineers comparing lab LCP and CLS against real-user CrUX data per page
  • E-commerce teams checking product templates pass Google's field assessment after a theme update
  • Developers reading the top speed opportunities to decide what to fix first
  • Consultants benchmarking a prospect's key pages against their competitors' before a pitch

Why this one

  • $0.01 per report, flat. No actor-start fee, no per-metric micro-charges. Comparable actors charge a $0.10 start fee plus $0.02–$0.08 per URL before extras.
  • Failed URLs are free. You pay only for delivered reports — an unreachable page is recorded with its error and never billed.
  • Field + lab in one row. Lab scores tell you what Lighthouse simulated; CrUX field data tells you what real Chrome users experienced, including the assessment Google actually ranks with.

Input

{
"urls": ["https://example.com", "https://example.com/pricing"],
"strategy": "mobile",
"maxUrls": 25
}

strategy is mobile (Google's ranking basis, default) or desktop.

Output (one dataset item per URL)

{
"ok": true,
"url": "https://example.com",
"performanceScore": 84,
"lab": { "lcpMs": 2100, "cls": 0.01, "tbtMs": 150, "fcpMs": 900, "speedIndexMs": 1800 },
"field": {
"available": true,
"coreWebVitalsAssessment": "FAST",
"lcpMs": 1900, "inpMs": 140, "cls": 0.02
},
"topOpportunities": [
{ "id": "render-blocking-resources", "title": "Eliminate render-blocking resources", "estimatedSavingsMs": 780 }
],
"source": "Google PageSpeed Insights API v5"
}

field.available is false for low-traffic pages Google has no real-user data for — the lab metrics still come through.

Example

A real desktop run on 2026-10-31. Input:

{
"urls": ["https://www.wikipedia.org", "https://web.dev", "https://developer.mozilla.org"],
"strategy": "desktop"
}

What came back, one dataset item per URL (summarised from the full JSON):

URLScoreLab LCPField verdict (CrUX)Field LCP / INPTop fix
wikipedia.org100341 msFAST1,170 ms / 54 msnone
developer.mozilla.org99881 msFAST1,690 ms / 55 msAvoid multiple page redirects (~201 ms)
web.dev771,200 msAVERAGE2,686 ms / 71 msReduce unused CSS (~310 ms)

The run took 24 seconds and produced 3 reports, which is $0.03 on the Free plan.

Common uses

  • Agency reporting: monthly vitals rows for every client page, exportable as JSON/CSV/Excel from the dataset.
  • Site migration QA: audit the top-100 URLs before and after a redesign and diff the scores.
  • Monitoring: schedule a weekly run and alert when a page's assessment leaves "FAST".

Works well with

Pricing

$0.01 per vitals report. One charge per URL per strategy, so auditing a page on both mobile and desktop is two reports. A URL that PageSpeed cannot analyse is returned with an error and is not charged.

100 URLs on mobile is $1.00. maxUrls caps the run, so it doubles as your budget cap.

Limits

  • Up to 100 URLs per run (maxUrls, default 25). Split longer lists across runs.
  • One device per run. Pick mobile or desktop; checking both means two runs and two reports per URL.
  • Time: Google takes 30–60 seconds per URL on its side and the actor runs three at once, so 25 URLs take roughly 7 minutes.
  • Field data needs traffic. Real-user CrUX numbers exist only for pages with enough Chrome visits; for the rest field.available is false and you get the lab metrics only.
  • Pages Google cannot load (login walls, pages that block Google's tools, timeouts) come back ok: false with the error and are not charged.
  • Lab scores move a little between runs, because Lighthouse simulates each load. Compare trends, not single points.

FAQ

Is this the same data as pagespeed.web.dev? Yes — the official PageSpeed Insights API v5, called with your chosen device strategy.

What's the difference between lab and field data? Lab (Lighthouse) is a controlled simulation run at audit time; field (CrUX) is aggregated from real Chrome users over the past 28 days. Google's ranking systems use field data — that's the coreWebVitalsAssessment value.

How long does a run take? PageSpeed audits take 30–60 seconds per URL on Google's side; this actor runs three in parallel, so 25 URLs finish in roughly 7 minutes.

Why did a URL come back ok: false? The page was unreachable or PageSpeed couldn't analyze it — the error is in the record and the URL was not charged.

Changelog

  • 2026-10-31: Wording only. The page now says "website speed test" in its title, added Example and Limits sections, and the prefilled example checks wikipedia.org instead of the example.com placeholder. Code, output and price ($0.01 per report) are unchanged.

  • 2026-09-24: New summary at the top of this page: what you send, what you get, the price, and a real output from the prefilled example.

  • 2026-09-14 — Default run memory lowered from 1024 MB to 256 MB. The actor calls Google's API and never used more than 66 MB, so the extra memory only added platform compute to your bill. Output, price ($0.01 per report) and behaviour are unchanged. You can still pick more memory per run.

For AI agents

This Actor is built to be called by software, not just by people.

  • Mount it directly as an MCP tool — no Store search, no ranking, just this one tool: https://mcp.apify.com/?actors=eliai/core-web-vitals-checker
  • Or call it over HTTP and get the results in the same request: POST https://api.apify.com/v2/acts/eliai~core-web-vitals-checker/run-sync-get-dataset-items
  • Costs are predictable before you call. Pricing is pay-per-event (see Pricing above), so an agent can budget a run in advance instead of discovering the bill afterwards.
  • Send only the field you mean. If you pass the bulk field, it is used on its own; the single-value field is a fallback, never merged into your request. You are charged for the items you sent and nothing else.