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.
- Price: $5 per 1,000 × pagespeed test
- Prefilled example: finished in 51 s on Oct 19, 2026 (Tested 2 page/device combinations: Core Web Vitals passed 1, failed 1, no field data 0; 0 errors.)
- Works with: Apify Console, REST API, Python, JavaScript, MCP (Claude, Cursor, VS Code), n8n, Make, Zapier
- Last updated: 2026-10-28
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.
| Field | Type | Description |
|---|---|---|
url | string | URL tested |
device | string | mobile or desktop |
status | string | ok or error |
error | string | Why the test failed |
engine | string | pagespeed_insights (Google, lab + real-user data) or lighthouse_backup (lab data only) |
final_url | string | URL after redirects |
redirected | boolean | The URL redirected |
performance_score | integer | Lighthouse performance score 0-100 |
accessibility_score | integer | Accessibility score 0-100 (if requested) |
best_practices_score | integer | Best practices score 0-100 (if requested) |
seo_score | integer | SEO score 0-100 (if requested) |
cwv_assessment | string | Core Web Vitals assessment from real users (CrUX): passed, failed or no_data |
field_data_scope | string | url = real-user data for this page; origin = whole-site data (page has too little traffic) |
origin_cwv_assessment | string | Core Web Vitals assessment for the whole site |
field_lcp_p75 | number | Real-user LCP at the 75th percentile (ms) |
field_inp_p75 | number | Real-user INP at the 75th percentile (ms) |
field_cls_p75 | number | Real-user CLS at the 75th percentile (unitless) |
field_fcp_p75 | number | Real-user FCP at the 75th percentile (ms) |
field_ttfb_p75 | number | Real-user TTFB at the 75th percentile (ms) |
field_lcp_rating | string | Real-user LCP rating: fast, average or slow |
field_inp_rating | string | Real-user INP rating: fast, average or slow |
field_cls_rating | string | Real-user CLS rating: fast, average or slow |
field_fcp_rating | string | Real-user FCP rating: fast, average or slow |
field_ttfb_rating | string | Real-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.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| 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