Home / Tools / Bulk PageSpeed & Core Web Vitals Checker

Rank tracking & site SEO

Bulk PageSpeed & Core Web Vitals Checker

Run Google PageSpeed Insights on hundreds of URLs: performance, SEO, accessibility scores, lab metrics, real-user Core Web Vitals (LCP, INP, CLS from CrUX) with pass/fail, and the top fixes per page. Mobile and desktop. $5 per 1,000 tests, no Google key needed.

Run it on Apify API & MCP

Sample output

Real rows from the prefilled example run on Oct 19, 2026.

Full JSON of one real output row (4 rows in the example dataset)
{
  "url": "https://example.com",
  "device": "mobile",
  "final_url": "https://example.com/",
  "performance_score": 100,
  "accessibility_score": null,
  "best_practices_score": null,
  "seo_score": 80,
  "lighthouse_version": "13.5.0",
  "lab_fcp_ms": 754,
  "lab_lcp_ms": 758,
  "lab_tbt_ms": 0,
  "lab_cls": 0,
  "lab_speed_index_ms": 754,
  "lab_tti_ms": 758,
  "lab_server_response_ms": 1,
  "page_weight_bytes": 2321,
  "requests_count": 2,
  "opportunities": [],
  "failed_audits": [
    "meta-description"
  ],
  "field_lcp_p75": 1118,
  "field_lcp_rating": "fast",
  "field_inp_p75": 88,
  "field_inp_rating": "fast",
  "field_cls_p75": 0,
  "field_cls_rating": "fast",
  "field_fcp_p75": 1030,
  "field_fcp_rating": "fast",
  "field_ttfb_p75": 734,
  "field_ttfb_rating": "fast",
  "cwv_assessment": "passed",
  "field_data_scope": "url",
  "origin_cwv_assessment": "passed",
  "status": "ok",
  "error": null,
  "engine": "pagespeed_insights",
  "checked_at": "2026-10-19T03:52:27Z",
  "redirected": false
}

Output fields

From the Actor's dataset schema. Every row has the same flat shape, so it drops straight into a spreadsheet, a database or an agent's context.

FieldTypeDescription
urlstringURL tested
devicestringmobile or desktop
statusstringok or error
errorstringWhy the test failed
enginestringpagespeed_insights (Google, lab + real-user data) or lighthouse_backup (lab data only)
final_urlstringURL after redirects
redirectedbooleanThe URL redirected
performance_scoreintegerLighthouse performance score 0-100
accessibility_scoreintegerAccessibility score 0-100 (if requested)
best_practices_scoreintegerBest practices score 0-100 (if requested)
seo_scoreintegerSEO score 0-100 (if requested)
cwv_assessmentstringCore Web Vitals assessment from real users (CrUX): passed, failed or no_data
field_data_scopestringurl = real-user data for this page; origin = whole-site data (page has too little traffic)
origin_cwv_assessmentstringCore Web Vitals assessment for the whole site
field_lcp_p75numberReal-user LCP at the 75th percentile (ms)
field_inp_p75numberReal-user INP at the 75th percentile (ms)
field_cls_p75numberReal-user CLS at the 75th percentile (unitless)
field_fcp_p75numberReal-user FCP at the 75th percentile (ms)
field_ttfb_p75numberReal-user TTFB at the 75th percentile (ms)
field_lcp_ratingstringReal-user LCP rating: fast, average or slow
field_inp_ratingstringReal-user INP rating: fast, average or slow
field_cls_ratingstringReal-user CLS rating: fast, average or slow
field_fcp_ratingstringReal-user FCP rating: fast, average or slow
field_ttfb_ratingstringReal-user TTFB rating: fast, average or slow

Pricing

Pay per result, billed by Apify. No subscription and no minimum. Discount tiers apply automatically on paid Apify plans.

EventFree planBronzeSilverGold
PageSpeed test main
Charged once per URL per device tested with Google PageSpeed Insights.
$0.005$0.0045$0.0042$0.004
Backup Lighthouse test
Charged once per URL per device tested on the backup Lighthouse service (only when Google PageSpeed Insights is over quota).
$0.015$0.015$0.015$0.015

Examples on the Free plan: 100 pagespeed tests = $0.50, 1,000 pagespeed tests = $5, 10,000 pagespeed tests = $50. Apify's Free plan includes $5 of monthly usage credit. Prices read from the Apify API at build time (2026-10-28).

Example input

This is the prefilled input on the Store page. Keep it and click Start to see real data in seconds.

{
  "urls": [
    "https://apify.com",
    "https://example.com"
  ],
  "devices": [
    "mobile"
  ]
}

Use it from code, no-code or an AI agent

cURL (one request, returns rows)
curl -X POST \
  "https://api.apify.com/v2/acts/wrenfield-data~bulk-pagespeed-checker/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://apify.com", "https://example.com"], "devices": ["mobile"]}'
Python
# pip install apify-client
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wrenfield-data/bulk-pagespeed-checker").call(
    run_input={
    "urls": [
        "https://apify.com",
        "https://example.com"
    ],
    "devices": [
        "mobile"
    ]
},
    max_total_charge_usd=1.00,  # hard cap for this run
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
JavaScript / Node
// npm i apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wrenfield-data/bulk-pagespeed-checker').call({
  "urls": [
    "https://apify.com",
    "https://example.com"
  ],
  "devices": [
    "mobile"
  ]
}, { maxTotalChargeUsd: 1 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
MCP (Claude, Cursor, VS Code, any MCP client)
{
  "mcpServers": {
    "wrenfield-bulk-pagespeed-checker": {
      "url": "https://mcp.apify.com?tools=wrenfield-data/bulk-pagespeed-checker"
    }
  }
}

Remote MCP server hosted by Apify. Sign in with OAuth on first use, or send Authorization: Bearer <APIFY_TOKEN>. The tool appears as wrenfield-data--bulk-pagespeed-checker. More client setups on the MCP page.

n8n, Make, Zapier

Use the official Apify node or app, pick Run Actor, enter wrenfield-data/bulk-pagespeed-checker and paste the input JSON above. Then read the run's dataset items. Ready-made n8n workflows are on the n8n templates page.

For AI agents and code generators: this page as Markdown · OpenAPI 3 spec (run, run-sync and dataset endpoints).

FAQ

How much does Bulk PageSpeed cost?

$0.005 per pagespeed test on the Apify Free plan ($5 per 1,000), billed per result by Apify with no subscription. Plus $0.015 per backup lighthouse test. Higher Apify plans get the discounted tiers shown in the pricing table. You can cap any run with a maximum cost.

Where does the data come from?

From the official Google PageSpeed Insights API (Lighthouse lab test + Chrome UX Report field data). The backup engine runs the same open-source Lighthouse on a licensed provider (DataForSEO).

Why is there no field data for my page?

Chrome UX Report only covers pages and sites with enough real Chrome traffic. Small sites show cwv_assessment: no_data.

Why do scores change between runs?

Lab scores vary a few points with network and server load. Field data (CrUX) is a 28-day rolling average and is stable.

Related tools

Google Rank Tracker Launching soon

Positions, changes, featured snippets and AI Overview citations.

Google Maps Grid Rank Tracker

Local rank heatmaps, ARP and share of local voice.

SEO Toolkit All-in-One

Domain overview, ranked keywords, backlinks and SERPs in one API.

On-Page SEO Checker Launching soon

Bulk page audit: SEO score, ranked issues with fixes, title, meta, H1 and schema checks.

SEO Agency Report

White-label SEO and AI-visibility audit as HTML, PDF and JSON, per client.

Compare and plan

Try Bulk PageSpeed & Core Web Vitals Checker now

Open it on Apify, keep the prefilled example and click Start. The Apify Free plan includes $5 of monthly credit, no card needed.

Open on Apify